index 1bed9355d234ee3b94c1a8dcd0bf5167074db971..c26402743959bec45b8f34dcda5ef09b6f30f1ef 100644 (file)
#include "sp-canvas-util.h"
#include "display-forward.h"
#include "sodipodi-ctrl.h"
+#include "libnr/nr-pixops.h"
enum {
ARG_0,
ctrl = SP_CTRL (object);
+ if (ctrl->cache) {
+ g_free(ctrl->cache);
+ ctrl->cache = NULL;
+ }
+
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
side = (ctrl->span * 2 +1);
c = ctrl->span ;
- g_free (ctrl->cache);
size = (side) * (side) * 4;
- ctrl->cache = (guchar*)g_malloc (size);
if (side < 2) return;
+ if (ctrl->cache)
+ g_free (ctrl->cache);
+ ctrl->cache = (guchar*)g_malloc (size);
+
switch (ctrl->shape) {
case SP_CTRL_SHAPE_SQUARE:
p = ctrl->cache;
}
// composite background, foreground, alpha for xor mode
-#define COMPOSE_X(b,f,a) ( ( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) ((b ^ ~f) + b/4 - (b>127? 63 : 0))) * ((guchar) a) ) / 0xff )
+#define COMPOSE_X(b,f,a) ( FAST_DIVIDE<255>( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) ((b ^ ~f) + b/4 - (b>127? 63 : 0))) * ((guchar) a) ) )
// composite background, foreground, alpha for color mode
-#define COMPOSE_N(b,f,a) ( ( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) f) * ((guchar) a) ) / 0xff )
+#define COMPOSE_N(b,f,a) ( FAST_DIVIDE<255>( ((guchar) b) * ((guchar) (0xff - a)) + ((guchar) f) * ((guchar) a) ) )
static void
sp_ctrl_render (SPCanvasItem *item, SPCanvasBuf *buf)