aboutsummaryrefslogtreecommitdiff
path: root/layer_image.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-09-26 20:08:10 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-09-26 20:08:10 +0200
commit7e5561d02f257f5c2ae54f4d55dee1093cf2ad4b (patch)
treea447fe2a109da09d9f06c67a0534873f9ac3a27b /layer_image.cpp
parenteac5ac91ba27ae8e6d24625d6fa170425c51d459 (diff)
downloadosc-graphics-7e5561d02f257f5c2ae54f4d55dee1093cf2ad4b.tar.gz
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
Diffstat (limited to 'layer_image.cpp')
-rw-r--r--layer_image.cpp21
1 files changed, 21 insertions, 0 deletions
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);
+}