aboutsummaryrefslogtreecommitdiff
path: root/layer_image.h
diff options
context:
space:
mode:
Diffstat (limited to 'layer_image.h')
-rw-r--r--layer_image.h30
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);
+ }
};
/*