X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Fimage.c;h=2ec710438cd32632cb8f09aabd97c7404373b1f9;hb=742106511fbaca5ebef385a9c60c427e8dd7a6dd;hp=351a831d655643edff0aaeead2bba86b7206f824;hpb=cd12a2eae5b5b72df08d588ac71d1f6cf6725dfb;p=chaz%2Fopenbox diff --git a/render/image.c b/render/image.c index 351a831d..2ec71043 100644 --- a/render/image.c +++ b/render/image.c @@ -1,11 +1,13 @@ -#include -#include "../kernel/geom.h" +#include "geom.h" #include "image.h" +#include "color.h" + +#include -void image_draw(pixel32 *target, TextureRGBA *rgba, Rect *area) +void RrImageDraw(RrPixel32 *target, RrTextureRGBA *rgba, RrRect *area) { - pixel32 *draw = rgba->data; - guint c, i, e, t, sfw, sfh; + RrPixel32 *draw = rgba->data; + gint c, i, e, t, sfw, sfh; sfw = area->width; sfh = area->height; @@ -22,7 +24,7 @@ void image_draw(pixel32 *target, TextureRGBA *rgba, Rect *area) /* scale it and cache it */ if (rgba->cache != NULL) g_free(rgba->cache); - rgba->cache = g_new(pixel32, sfw * sfh); + rgba->cache = g_new(RrPixel32, sfw * sfh); rgba->cwidth = sfw; rgba->cheight = sfh; for (i = 0, c = 0, e = sfw*sfh; i < e; ++i) { @@ -44,10 +46,10 @@ void image_draw(pixel32 *target, TextureRGBA *rgba, Rect *area) for (i = 0, c = 0, t = area->x, e = sfw*sfh; i < e; ++i, ++t) { guchar alpha, r, g, b, bgr, bgg, bgb; - alpha = draw[i] >> default_alpha_offset; - r = draw[i] >> default_red_offset; - g = draw[i] >> default_green_offset; - b = draw[i] >> default_blue_offset; + alpha = draw[i] >> RrDefaultAlphaOffset; + r = draw[i] >> RrDefaultRedOffset; + g = draw[i] >> RrDefaultGreenOffset; + b = draw[i] >> RrDefaultBlueOffset; if (c >= sfw) { c = 0; @@ -55,17 +57,17 @@ void image_draw(pixel32 *target, TextureRGBA *rgba, Rect *area) } /* background color */ - bgr = target[t] >> default_red_offset; - bgg = target[t] >> default_green_offset; - bgb = target[t] >> default_blue_offset; + bgr = target[t] >> RrDefaultRedOffset; + bgg = target[t] >> RrDefaultGreenOffset; + bgb = target[t] >> RrDefaultBlueOffset; r = bgr + (((r - bgr) * alpha) >> 8); g = bgg + (((g - bgg) * alpha) >> 8); b = bgb + (((b - bgb) * alpha) >> 8); - target[t] = (r << default_red_offset) - | (g << default_green_offset) - | (b << default_blue_offset); + target[t] = (r << RrDefaultRedOffset) + | (g << RrDefaultGreenOffset) + | (b << RrDefaultBlueOffset); } } }