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_box.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/layer_box.cpp (limited to 'src/layer_box.cpp') diff --git a/src/layer_box.cpp b/src/layer_box.cpp new file mode 100644 index 0000000..b720d5c --- /dev/null +++ b/src/layer_box.cpp @@ -0,0 +1,47 @@ +#include + +#include +#include + +#include "osc_graphics.h" +#include "layer_box.h" + +Layer::CtorInfo LayerBox::ctor_info = {"box", COLOR_TYPES}; + +LayerBox::LayerBox(const char *name, SDL_Rect geo, float opacity, + SDL_Color color) : Layer(name) +{ + color_osc_id = register_method("color", COLOR_TYPES, + (OSCServer::MethodHandlerCb)color_osc); + + LayerBox::geo(geo); + LayerBox::color(color); + LayerBox::alpha(opacity); +} + +void +LayerBox::geo(SDL_Rect geo) +{ + x1 = geo.x; + y1 = geo.y; + x2 = geo.x + geo.w; + y2 = geo.y + geo.h; +} + +void +LayerBox::alpha(float opacity) +{ + a = (Uint8)ceilf(opacity*SDL_ALPHA_OPAQUE); +} + +void +LayerBox::frame(SDL_Surface *target) +{ + boxRGBA(target, x1, y1, x2 ? : target->w, y2 ? : target->h, + r, g, b, a); +} + +LayerBox::~LayerBox() +{ + unregister_method(color_osc_id); +} -- cgit v1.2.3