Created
June 17, 2012 13:35
-
-
Save springmeyer/2944578 to your computer and use it in GitHub Desktop.
tweak agg to expose the src_over comp-op in cpp file, to reduce recompiles during experimentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/deps/agg/include/agg_pixfmt_rgba.h b/deps/agg/include/agg_pixfmt_rgba.h | |
index 7d2ef4f..37fd893 100644 | |
--- a/deps/agg/include/agg_pixfmt_rgba.h | |
+++ b/deps/agg/include/agg_pixfmt_rgba.h | |
@@ -316,21 +316,7 @@ namespace agg | |
// Da' = Sa + Da - Sa.Da | |
static AGG_INLINE void blend_pix(value_type* p, | |
unsigned sr, unsigned sg, unsigned sb, | |
- unsigned sa, unsigned cover) | |
- { | |
- if(cover < 255) | |
- { | |
- sr = (sr * cover + 255) >> 8; | |
- sg = (sg * cover + 255) >> 8; | |
- sb = (sb * cover + 255) >> 8; | |
- sa = (sa * cover + 255) >> 8; | |
- } | |
- calc_type s1a = base_mask - sa; | |
- p[Order::R] = (value_type)(sr + ((p[Order::R] * s1a + base_mask) >> base_shift)); | |
- p[Order::G] = (value_type)(sg + ((p[Order::G] * s1a + base_mask) >> base_shift)); | |
- p[Order::B] = (value_type)(sb + ((p[Order::B] * s1a + base_mask) >> base_shift)); | |
- p[Order::A] = (value_type)(sa + p[Order::A] - ((sa * p[Order::A] + base_mask) >> base_shift)); | |
- } | |
+ unsigned sa, unsigned cover); | |
}; | |
//======================================================comp_op_rgba_dst_over | |
diff --git a/deps/agg/src/agg_pixfmt_rgba.cpp b/deps/agg/src/agg_pixfmt_rgba.cpp | |
new file mode 100644 | |
index 0000000..da52fca | |
--- /dev/null | |
+++ b/deps/agg/src/agg_pixfmt_rgba.cpp | |
@@ -0,0 +1,27 @@ | |
+#include "agg_pixfmt_rgba.h" | |
+#include <iostream> | |
+ | |
+namespace agg | |
+{ | |
+ | |
+template<class ColorT, class Order> | |
+void comp_op_rgba_src_over<ColorT,Order>::blend_pix(value_type* p, | |
+ unsigned sr, unsigned sg, unsigned sb, | |
+ unsigned sa, unsigned cover) | |
+{ | |
+ if(cover < 255) | |
+ { | |
+ sr = (sr * cover + 255) >> 8; | |
+ sg = (sg * cover + 255) >> 8; | |
+ sb = (sb * cover + 255) >> 8; | |
+ sa = (sa * cover + 255) >> 8; | |
+ } | |
+ calc_type s1a = base_mask - sa; | |
+ p[Order::R] = (value_type)(sr + ((p[Order::R] * s1a + base_mask) >> base_shift)); | |
+ p[Order::G] = (value_type)(sg + ((p[Order::G] * s1a + base_mask) >> base_shift)); | |
+ p[Order::B] = (value_type)(sb + ((p[Order::B] * s1a + base_mask) >> base_shift)); | |
+ p[Order::A] = (value_type)(sa + p[Order::A] - ((sa * p[Order::A] + base_mask) >> base_shift)); | |
+} | |
+ | |
+template struct comp_op_rgba_src_over<agg::rgba8, agg::order_rgba>; | |
+} | |
\ No newline at end of file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
/cc @tmcw