diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-09-26 20:08:10 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-09-26 20:08:10 +0200 |
commit | 7e5561d02f257f5c2ae54f4d55dee1093cf2ad4b (patch) | |
tree | a447fe2a109da09d9f06c67a0534873f9ac3a27b /layer_image.h | |
parent | eac5ac91ba27ae8e6d24625d6fa170425c51d459 (diff) | |
download | osc-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.h')
-rw-r--r-- | layer_image.h | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/layer_image.h b/layer_image.h index 2a313d6..69a3a7c 100644 --- a/layer_image.h +++ b/layer_image.h @@ -9,6 +9,9 @@ #include "osc_graphics.h" #include "layer.h" +#define LayerImage_Info_Name "image" +#define LayerImage_Info_Types "s" /* file */ + class LayerImage : public Layer { SDL_Surface *surf_alpha; /* with per-surface alpha */ SDL_Surface *surf_scaled; /* scaled image */ @@ -18,29 +21,32 @@ class LayerImage : public Layer { float alphav; public: + static void register_layer() {} + LayerImage(const char *name, SDL_Rect geo = (SDL_Rect){0, 0, 0, 0}, float opacity = 1., - const char *file = NULL) : Layer(name), surf_alpha(NULL), surf_scaled(NULL), surf(NULL) + const char *file = NULL); + static Layer * + ctor_osc(const char *name, SDL_Rect geo, float opacity, lo_arg **argv) { - LayerImage::alpha(opacity); - LayerImage::geo(geo); - LayerImage::file(file); + return new LayerImage(name, geo, opacity, &argv[0]->s); } + ~LayerImage(); - ~LayerImage() - { - SDL_FREESURFACE_SAFE(surf_alpha); - SDL_FREESURFACE_SAFE(surf_scaled); - SDL_FREESURFACE_SAFE(surf); - } + void frame(SDL_Surface *target); +private: void geo(SDL_Rect geo); void alpha(float opacity); void file(const char *file = NULL); - - void frame(SDL_Surface *target); + OscServer::MethodHandlerId *file_osc_id; + static void + file_osc(LayerImage *obj, lo_arg **argv) + { + obj->file(&argv[0]->s); + } }; /* |