From 7e5561d02f257f5c2ae54f4d55dee1093cf2ad4b Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Wed, 26 Sep 2012 20:08:10 +0200 Subject: isolated OSC server specific code in OscServer class and allow to register methods in order to localize OSC method handling i.e. every Layer class is stand-alone now --- layer_image.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'layer_image.cpp') diff --git a/layer_image.cpp b/layer_image.cpp index 11079be..21bba43 100644 --- a/layer_image.cpp +++ b/layer_image.cpp @@ -57,6 +57,18 @@ rgba_blit_with_alpha(SDL_Surface *src_surf, SDL_Surface *dst_surf, Uint8 alpha) #endif +LayerImage::LayerImage(const char *name, SDL_Rect geo, float opacity, + const char *file) : Layer(name), surf_alpha(NULL), + surf_scaled(NULL), surf(NULL) +{ + file_osc_id = register_method("file", "s", + (OscServer::MethodHandlerCb)file_osc); + + LayerImage::alpha(opacity); + LayerImage::geo(geo); + LayerImage::file(file); +} + void LayerImage::geo(SDL_Rect geo) { @@ -155,3 +167,12 @@ LayerImage::frame(SDL_Surface *target) SDL_BlitSurface(surf_alpha ? : surf_scaled ? : surf, NULL, target, &geov); } + +LayerImage::~LayerImage() +{ + unregister_method(file_osc_id); + + SDL_FREESURFACE_SAFE(surf_alpha); + SDL_FREESURFACE_SAFE(surf_scaled); + SDL_FREESURFACE_SAFE(surf); +} -- cgit v1.2.3