From 75667b81215bdb3896599ec477a256c41fc90436 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 21 Sep 2012 18:24:57 +0200 Subject: split program into multiple files; switched to C++ --- layer_image.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 layer_image.h (limited to 'layer_image.h') diff --git a/layer_image.h b/layer_image.h new file mode 100644 index 0000000..7f51885 --- /dev/null +++ b/layer_image.h @@ -0,0 +1,54 @@ +#ifndef __HAVE_LAYER_IMAGE_H +#define __HAVE_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) : Layer(name), surf_alpha(NULL), surf_scaled(NULL), surf(NULL) + { + LayerImage::alpha(opacity); + LayerImage::geo(geo); + LayerImage::file(file); + } + + ~LayerImage() + { + SDL_FREESURFACE_SAFE(surf_alpha); + SDL_FREESURFACE_SAFE(surf_scaled); + SDL_FREESURFACE_SAFE(surf); + } + + void geo(SDL_Rect geo); + void alpha(float opacity); + + void file(const char *file = NULL); + + void frame(SDL_Surface *target); +}; + +/* + * 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