From e7da86053b3df2882816b0df8089e1a51b61939f Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 28 Sep 2012 15:26:29 +0200 Subject: autotools based build system --- src/layer_image.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/layer_image.h (limited to 'src/layer_image.h') diff --git a/src/layer_image.h b/src/layer_image.h new file mode 100644 index 0000000..5f2271f --- /dev/null +++ b/src/layer_image.h @@ -0,0 +1,58 @@ +#ifndef __LAYER_IMAGE_H +#define __LAYER_IMAGE_H + +#include +#include + +#include + +#include "osc_graphics.h" +#include "layer.h" + +class LayerImage : public Layer { + SDL_Surface *surf_alpha; /* with per-surface alpha */ + SDL_Surface *surf_scaled; /* scaled image */ + SDL_Surface *surf; /* original image */ + + SDL_Rect geov; + float alphav; + +public: + LayerImage(const char *name, + SDL_Rect geo = (SDL_Rect){0, 0, 0, 0}, + float opacity = 1., + const char *file = NULL); + + static CtorInfo ctor_info; + static Layer * + ctor_osc(const char *name, SDL_Rect geo, float opacity, lo_arg **argv) + { + return new LayerImage(name, geo, opacity, &argv[0]->s); + } + + ~LayerImage(); + + void frame(SDL_Surface *target); + +private: + void geo(SDL_Rect geo); + void alpha(float opacity); + + void file(const char *file = NULL); + OSCServer::MethodHandlerId *file_osc_id; + static void + file_osc(LayerImage *obj, lo_arg **argv) + { + obj->file(&argv[0]->s); + } +}; + +/* + * Macros + */ +#define SDL_IMAGE_ERROR(FMT, ...) do { \ + fprintf(stderr, "%s(%d): " FMT ": %s\n", \ + __FILE__, __LINE__, ##__VA_ARGS__, IMG_GetError()); \ +} while (0) + +#endif -- cgit v1.2.3