Index: xfa/fxgraphics/cfx_graphics.cpp |
diff --git a/xfa/fxgraphics/fx_graphics.cpp b/xfa/fxgraphics/cfx_graphics.cpp |
similarity index 55% |
rename from xfa/fxgraphics/fx_graphics.cpp |
rename to xfa/fxgraphics/cfx_graphics.cpp |
index 3247246c79b52ba284e35b6cfdaf6144def4da9b..a0b1b07bcaf2e8b28cefecbfe9dd13e1e1f5a992 100644 |
--- a/xfa/fxgraphics/fx_graphics.cpp |
+++ b/xfa/fxgraphics/cfx_graphics.cpp |
@@ -4,12 +4,566 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
-#include "xfa/include/fxgraphics/fx_graphics.h" |
+#include "xfa/fxgraphics/include/cfx_graphics.h" |
#include <memory> |
-#include "xfa/fxgraphics/fx_path_generator.h" |
-#include "xfa/fxgraphics/pre.h" |
+#include "xfa/fxgraphics/cagg_graphics.h" |
+#include "xfa/fxgraphics/cfx_color.h" |
+#include "xfa/fxgraphics/cfx_path.h" |
+#include "xfa/fxgraphics/cfx_path_generator.h" |
+#include "xfa/fxgraphics/cfx_pattern.h" |
+#include "xfa/fxgraphics/cfx_shading.h" |
+ |
+namespace { |
+ |
+enum { |
+ FX_CONTEXT_None = 0, |
+ FX_CONTEXT_Device, |
+}; |
+ |
+#define FX_HATCHSTYLE_Total 53 |
+ |
+struct FX_HATCHDATA { |
+ int32_t width; |
+ int32_t height; |
+ uint8_t maskBits[64]; |
+}; |
+ |
+const FX_HATCHDATA hatchBitmapData[FX_HATCHSTYLE_Total] = { |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, |
+ 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x40, 0x40, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, |
+ 0x01, 0x01, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, |
+ 0x40, 0x40, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x81, 0x81, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, |
+ 0x42, 0x42, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, |
+ 0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, |
+ 0x81, 0x81, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xaa, 0xaa, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x11, 0x11, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x11, 0x11, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x51, 0x51, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x15, 0x15, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x51, 0x51, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x15, 0x15, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xee, 0xee, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xbb, 0xbb, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xbb, 0xbb, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xbb, 0xbb, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xee, 0xee, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xbb, 0xbb, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x77, 0x77, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, |
+ 0xdd, 0xdd, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, |
+ 0x77, 0x77, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, |
+ 0xdd, 0xdd, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, |
+ 0x77, 0x77, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, |
+ 0xdd, 0xdd, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x77, 0x77, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xdd, 0xdd, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x77, 0x77, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xdd, 0xdd, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xef, 0xef, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xef, 0xef, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xfe, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xef, 0xef, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xef, 0xef, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xf7, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xf7, 0xf7, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x7f, 0x7f, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x88, 0x88, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x11, 0x11, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x11, 0x11, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x11, 0x11, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x11, 0x11, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xcc, 0xcc, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0x33, 0x33, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0x66, 0x66, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x33, 0x33, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0x33, 0x33, 0x00, 0x00, |
+ 0x66, 0x66, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, |
+ 0x33, 0x33, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xc1, 0xc1, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, |
+ 0x38, 0x38, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, |
+ 0x07, 0x07, 0x00, 0x00, 0x83, 0x83, 0x00, 0x00, 0xc1, 0xc1, 0x00, 0x00, |
+ 0xe0, 0xe0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, |
+ 0x1c, 0x1c, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, |
+ 0x83, 0x83, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x83, 0x83, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, |
+ 0x1c, 0x1c, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, |
+ 0xe0, 0xe0, 0x00, 0x00, 0xc1, 0xc1, 0x00, 0x00, 0x83, 0x83, 0x00, 0x00, |
+ 0x07, 0x07, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, |
+ 0x38, 0x38, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, |
+ 0xc1, 0xc1, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0x00, 0x00, |
+ 0xcc, 0xcc, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, |
+ 0x02, 0x02, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x20, 0x20, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, |
+ 0x04, 0x04, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xb1, 0xb1, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, |
+ 0x1b, 0x1b, 0x00, 0x00, 0xd8, 0xd8, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, |
+ 0x0c, 0x0c, 0x00, 0x00, 0x8d, 0x8d, 0x00, 0x00, 0xb1, 0xb1, 0x00, 0x00, |
+ 0x30, 0x30, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, |
+ 0xd8, 0xd8, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, |
+ 0x8d, 0x8d, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x81, 0x81, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, |
+ 0x24, 0x24, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, |
+ 0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, |
+ 0x81, 0x81, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x25, 0x25, 0x00, 0x00, |
+ 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, |
+ 0x25, 0x25, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, 0x25, 0x25, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x25, 0x25, 0x00, 0x00, |
+ 0xc0, 0xc0, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, |
+ 0x42, 0x42, 0x00, 0x00, 0x81, 0x81, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x02, 0x02, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x18, 0x18, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x42, 0x42, 0x00, 0x00, |
+ 0x81, 0x81, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x88, 0x88, 0x00, 0x00, 0x54, 0x54, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x45, 0x45, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x51, 0x51, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x54, 0x54, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x45, 0x45, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x51, 0x51, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x55, 0x55, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, |
+ 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0xf0, 0xf0, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x01, 0x01, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x03, 0x03, 0x00, 0x00, 0x84, 0x84, 0x00, 0x00, 0x48, 0x48, 0x00, 0x00, |
+ 0x30, 0x30, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, |
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, |
+ 0x84, 0x84, 0x00, 0x00, 0x48, 0x48, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, |
+ 0x0c, 0x0c, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x01, 0x01, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x66, 0x66, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x77, 0x77, 0x00, 0x00, 0x89, 0x89, 0x00, 0x00, 0x8f, 0x8f, 0x00, 0x00, |
+ 0x8f, 0x8f, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, |
+ 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x77, 0x77, 0x00, 0x00, |
+ 0x89, 0x89, 0x00, 0x00, 0x8f, 0x8f, 0x00, 0x00, 0x8f, 0x8f, 0x00, 0x00, |
+ 0x77, 0x77, 0x00, 0x00, 0x98, 0x98, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, |
+ 0xf8, 0xf8, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xff, 0xff, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0xff, 0xff, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, |
+ 0x88, 0x88, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x99, 0x99, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0x66, 0x66, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, |
+ 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x99, 0x99, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, |
+ 0x99, 0x99, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0xf0, 0xf0, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, |
+ 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, |
+ 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, |
+ 0x0f, 0x0f, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x82, 0x82, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, |
+ 0x82, 0x82, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x82, 0x82, 0x00, 0x00, |
+ 0x44, 0x44, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, |
+ 0x28, 0x28, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x82, 0x82, 0x00, 0x00, |
+ 0x01, 0x01, 0x00, 0x00, |
+ }}, |
+ {16, |
+ 16, |
+ { |
+ 0x10, 0x10, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, |
+ 0xfe, 0xfe, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, |
+ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, |
+ 0x38, 0x38, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, |
+ 0x7c, 0x7c, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ }}, |
+}; |
+ |
+} // namespace |
CFX_Graphics::CFX_Graphics() |
: m_renderDevice(nullptr), m_aggGraphics(nullptr) {} |
@@ -767,52 +1321,32 @@ FX_ERR CFX_Graphics::FillPathWithPattern(CFX_Path* path, |
CFX_DIBitmap bmp; |
bmp.Create(width, height, FXDIB_Argb); |
m_renderDevice->GetDIBits(&bmp, 0, 0); |
- switch (pattern->m_type) { |
- case FX_PATTERN_Bitmap: { |
- int32_t xStep = FXSYS_round(pattern->m_bitmapInfo.x1Step); |
- int32_t yStep = FXSYS_round(pattern->m_bitmapInfo.y1Step); |
- int32_t xCount = width / xStep + 1; |
- int32_t yCount = height / yStep + 1; |
- for (int32_t i = 0; i <= yCount; i++) { |
- for (int32_t j = 0; j <= xCount; j++) { |
- bmp.TransferBitmap(j * xStep, i * yStep, xStep, yStep, |
- pattern->m_bitmapInfo.bitmap, 0, 0); |
- } |
- } |
- break; |
- } |
- case FX_PATTERN_Hatch: { |
- FX_HatchStyle hatchStyle = |
- m_info.fillColor->m_info.pattern->m_hatchInfo.hatchStyle; |
- if (hatchStyle < FX_HATCHSTYLE_Horizontal || |
- hatchStyle > FX_HATCHSTYLE_SolidDiamond) { |
- return FX_ERR_Intermediate_Value_Invalid; |
- } |
- const FX_HATCHDATA& data = hatchBitmapData[hatchStyle]; |
- CFX_DIBitmap mask; |
- mask.Create(data.width, data.height, FXDIB_1bppMask); |
- FXSYS_memcpy(mask.GetBuffer(), data.maskBits, |
- mask.GetPitch() * data.height); |
- CFX_FloatRect rectf = path->GetPathData()->GetBoundingBox(); |
- if (matrix) { |
- rectf.Transform((const CFX_Matrix*)matrix); |
- } |
- FX_RECT rect(FXSYS_round(rectf.left), FXSYS_round(rectf.top), |
- FXSYS_round(rectf.right), FXSYS_round(rectf.bottom)); |
- CFX_FxgeDevice device; |
- device.Attach(&bmp); |
- device.FillRect(&rect, |
- m_info.fillColor->m_info.pattern->m_hatchInfo.backArgb); |
- for (int32_t j = rect.bottom; j < rect.top; j += mask.GetHeight()) { |
- for (int32_t i = rect.left; i < rect.right; i += mask.GetWidth()) { |
- device.SetBitMask( |
- &mask, i, j, |
- m_info.fillColor->m_info.pattern->m_hatchInfo.foreArgb); |
- } |
- } |
- break; |
+ |
+ FX_HatchStyle hatchStyle = m_info.fillColor->m_info.pattern->m_hatchStyle; |
+ if (hatchStyle < FX_HATCHSTYLE_Horizontal || |
+ hatchStyle > FX_HATCHSTYLE_SolidDiamond) { |
+ return FX_ERR_Intermediate_Value_Invalid; |
+ } |
+ const FX_HATCHDATA& data = hatchBitmapData[hatchStyle]; |
+ CFX_DIBitmap mask; |
+ mask.Create(data.width, data.height, FXDIB_1bppMask); |
+ FXSYS_memcpy(mask.GetBuffer(), data.maskBits, mask.GetPitch() * data.height); |
+ CFX_FloatRect rectf = path->GetPathData()->GetBoundingBox(); |
+ if (matrix) { |
+ rectf.Transform((const CFX_Matrix*)matrix); |
+ } |
+ FX_RECT rect(FXSYS_round(rectf.left), FXSYS_round(rectf.top), |
+ FXSYS_round(rectf.right), FXSYS_round(rectf.bottom)); |
+ CFX_FxgeDevice device; |
+ device.Attach(&bmp); |
+ device.FillRect(&rect, m_info.fillColor->m_info.pattern->m_backArgb); |
+ for (int32_t j = rect.bottom; j < rect.top; j += mask.GetHeight()) { |
+ for (int32_t i = rect.left; i < rect.right; i += mask.GetWidth()) { |
+ device.SetBitMask(&mask, i, j, |
+ m_info.fillColor->m_info.pattern->m_foreArgb); |
} |
} |
+ |
m_renderDevice->SaveState(); |
m_renderDevice->SetClip_PathFill(path->GetPathData(), (CFX_Matrix*)matrix, |
fillMode); |
@@ -1030,365 +1564,3 @@ CFX_Graphics::TInfo& CFX_Graphics::TInfo::operator=(const TInfo& other) { |
fontSpacing = other.fontSpacing; |
return *this; |
} |
- |
-CAGG_Graphics::CAGG_Graphics() { |
- m_owner = nullptr; |
-} |
- |
-FX_ERR CAGG_Graphics::Create(CFX_Graphics* owner, |
- int32_t width, |
- int32_t height, |
- FXDIB_Format format) { |
- if (owner->m_renderDevice) |
- return FX_ERR_Parameter_Invalid; |
- if (m_owner) |
- return FX_ERR_Property_Invalid; |
- |
- CFX_FxgeDevice* device = new CFX_FxgeDevice; |
- device->Create(width, height, format); |
- m_owner = owner; |
- m_owner->m_renderDevice = device; |
- m_owner->m_renderDevice->GetBitmap()->Clear(0xFFFFFFFF); |
- return FX_ERR_Succeeded; |
-} |
- |
-CAGG_Graphics::~CAGG_Graphics() { |
- if (m_owner->m_renderDevice) |
- delete (CFX_FxgeDevice*)m_owner->m_renderDevice; |
- m_owner = nullptr; |
-} |
- |
-CFX_Path::CFX_Path() { |
- m_generator = nullptr; |
-} |
- |
-FX_ERR CFX_Path::Create() { |
- if (m_generator) |
- return FX_ERR_Property_Invalid; |
- |
- m_generator = new CFX_PathGenerator; |
- m_generator->Create(); |
- return FX_ERR_Succeeded; |
-} |
- |
-CFX_Path::~CFX_Path() { |
- delete m_generator; |
-} |
- |
-FX_ERR CFX_Path::MoveTo(FX_FLOAT x, FX_FLOAT y) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->MoveTo(x, y); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::LineTo(FX_FLOAT x, FX_FLOAT y) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->LineTo(x, y); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::BezierTo(FX_FLOAT ctrlX1, |
- FX_FLOAT ctrlY1, |
- FX_FLOAT ctrlX2, |
- FX_FLOAT ctrlY2, |
- FX_FLOAT toX, |
- FX_FLOAT toY) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->BezierTo(ctrlX1, ctrlY1, ctrlX2, ctrlY2, toX, toY); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::ArcTo(FX_FLOAT left, |
- FX_FLOAT top, |
- FX_FLOAT width, |
- FX_FLOAT height, |
- FX_FLOAT startAngle, |
- FX_FLOAT sweepAngle) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->ArcTo(left + width / 2, top + height / 2, width / 2, height / 2, |
- startAngle, sweepAngle); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::Close() { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->Close(); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddLine(x1, y1, x2, y2); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddBezier(FX_FLOAT startX, |
- FX_FLOAT startY, |
- FX_FLOAT ctrlX1, |
- FX_FLOAT ctrlY1, |
- FX_FLOAT ctrlX2, |
- FX_FLOAT ctrlY2, |
- FX_FLOAT endX, |
- FX_FLOAT endY) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddBezier(startX, startY, ctrlX1, ctrlY1, ctrlX2, ctrlY2, endX, |
- endY); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddRectangle(FX_FLOAT left, |
- FX_FLOAT top, |
- FX_FLOAT width, |
- FX_FLOAT height) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddRectangle(left, top, left + width, top + height); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddEllipse(FX_FLOAT left, |
- FX_FLOAT top, |
- FX_FLOAT width, |
- FX_FLOAT height) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddEllipse(left + width / 2, top + height / 2, width / 2, |
- height / 2); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddEllipse(const CFX_RectF& rect) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddEllipse(rect.left + rect.Width() / 2, |
- rect.top + rect.Height() / 2, rect.Width() / 2, |
- rect.Height() / 2); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddArc(FX_FLOAT left, |
- FX_FLOAT top, |
- FX_FLOAT width, |
- FX_FLOAT height, |
- FX_FLOAT startAngle, |
- FX_FLOAT sweepAngle) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddArc(left + width / 2, top + height / 2, width / 2, height / 2, |
- startAngle, sweepAngle); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddPie(FX_FLOAT left, |
- FX_FLOAT top, |
- FX_FLOAT width, |
- FX_FLOAT height, |
- FX_FLOAT startAngle, |
- FX_FLOAT sweepAngle) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddPie(left + width / 2, top + height / 2, width / 2, height / 2, |
- startAngle, sweepAngle); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::AddSubpath(CFX_Path* path) { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->AddPathData(path->GetPathData()); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Path::Clear() { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- m_generator->GetPathData()->SetPointCount(0); |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_BOOL CFX_Path::IsEmpty() { |
- if (!m_generator) |
- return FX_ERR_Property_Invalid; |
- if (m_generator->GetPathData()->GetPointCount() == 0) { |
- return TRUE; |
- } |
- return FALSE; |
-} |
- |
-CFX_PathData* CFX_Path::GetPathData() { |
- if (!m_generator) |
- return nullptr; |
- return m_generator->GetPathData(); |
-} |
- |
-CFX_Color::CFX_Color() : m_type(FX_COLOR_None) {} |
- |
-CFX_Color::CFX_Color(const FX_ARGB argb) { |
- Set(argb); |
-} |
- |
-CFX_Color::CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb) { |
- Set(pattern, argb); |
-} |
- |
-CFX_Color::CFX_Color(CFX_Shading* shading) { |
- Set(shading); |
-} |
- |
-CFX_Color::~CFX_Color() { |
- m_type = FX_COLOR_None; |
-} |
- |
-FX_ERR CFX_Color::Set(const FX_ARGB argb) { |
- m_type = FX_COLOR_Solid; |
- m_info.argb = argb; |
- m_info.pattern = nullptr; |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Color::Set(CFX_Pattern* pattern, const FX_ARGB argb) { |
- if (!pattern) |
- return FX_ERR_Parameter_Invalid; |
- m_type = FX_COLOR_Pattern; |
- m_info.argb = argb; |
- m_info.pattern = pattern; |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Color::Set(CFX_Shading* shading) { |
- if (!shading) |
- return FX_ERR_Parameter_Invalid; |
- m_type = FX_COLOR_Shading; |
- m_shading = shading; |
- return FX_ERR_Succeeded; |
-} |
- |
-CFX_Pattern::CFX_Pattern() { |
- m_type = FX_PATTERN_None; |
- m_matrix.SetIdentity(); |
-} |
- |
-FX_ERR CFX_Pattern::Create(CFX_DIBitmap* bitmap, |
- const FX_FLOAT xStep, |
- const FX_FLOAT yStep, |
- CFX_Matrix* matrix) { |
- if (!bitmap) |
- return FX_ERR_Parameter_Invalid; |
- if (m_type != FX_PATTERN_None) { |
- return FX_ERR_Property_Invalid; |
- } |
- m_type = FX_PATTERN_Bitmap; |
- m_bitmapInfo.bitmap = bitmap; |
- m_bitmapInfo.x1Step = xStep; |
- m_bitmapInfo.y1Step = yStep; |
- if (matrix) { |
- m_matrix.Set(matrix->a, matrix->b, matrix->c, matrix->d, matrix->e, |
- matrix->f); |
- } |
- return FX_ERR_Succeeded; |
-} |
- |
-FX_ERR CFX_Pattern::Create(FX_HatchStyle hatchStyle, |
- const FX_ARGB foreArgb, |
- const FX_ARGB backArgb, |
- CFX_Matrix* matrix) { |
- if (hatchStyle < FX_HATCHSTYLE_Horizontal || |
- hatchStyle > FX_HATCHSTYLE_SolidDiamond) { |
- return FX_ERR_Parameter_Invalid; |
- } |
- if (m_type != FX_PATTERN_None) { |
- return FX_ERR_Property_Invalid; |
- } |
- m_type = FX_PATTERN_Hatch; |
- m_hatchInfo.hatchStyle = hatchStyle; |
- m_hatchInfo.foreArgb = foreArgb; |
- m_hatchInfo.backArgb = backArgb; |
- if (matrix) { |
- m_matrix.Set(matrix->a, matrix->b, matrix->c, matrix->d, matrix->e, |
- matrix->f); |
- } |
- return FX_ERR_Succeeded; |
-} |
- |
-CFX_Pattern::~CFX_Pattern() { |
- m_type = FX_PATTERN_None; |
-} |
- |
-CFX_Shading::CFX_Shading() { |
- m_type = FX_SHADING_None; |
-} |
- |
-FX_ERR CFX_Shading::CreateAxial(const CFX_PointF& beginPoint, |
- const CFX_PointF& endPoint, |
- FX_BOOL isExtendedBegin, |
- FX_BOOL isExtendedEnd, |
- const FX_ARGB beginArgb, |
- const FX_ARGB endArgb) { |
- if (m_type != FX_SHADING_None) { |
- return FX_ERR_Property_Invalid; |
- } |
- m_type = FX_SHADING_Axial; |
- m_beginPoint = beginPoint; |
- m_endPoint = endPoint; |
- m_isExtendedBegin = isExtendedBegin; |
- m_isExtendedEnd = isExtendedEnd; |
- m_beginArgb = beginArgb; |
- m_endArgb = endArgb; |
- return InitArgbArray(); |
-} |
- |
-FX_ERR CFX_Shading::CreateRadial(const CFX_PointF& beginPoint, |
- const CFX_PointF& endPoint, |
- const FX_FLOAT beginRadius, |
- const FX_FLOAT endRadius, |
- FX_BOOL isExtendedBegin, |
- FX_BOOL isExtendedEnd, |
- const FX_ARGB beginArgb, |
- const FX_ARGB endArgb) { |
- if (m_type != FX_SHADING_None) { |
- return FX_ERR_Property_Invalid; |
- } |
- m_type = FX_SHADING_Radial; |
- m_beginPoint = beginPoint; |
- m_endPoint = endPoint; |
- m_beginRadius = beginRadius; |
- m_endRadius = endRadius; |
- m_isExtendedBegin = isExtendedBegin; |
- m_isExtendedEnd = isExtendedEnd; |
- m_beginArgb = beginArgb; |
- m_endArgb = endArgb; |
- return InitArgbArray(); |
-} |
- |
-CFX_Shading::~CFX_Shading() { |
- m_type = FX_SHADING_None; |
-} |
- |
-FX_ERR CFX_Shading::InitArgbArray() { |
- int32_t a1, r1, g1, b1; |
- ArgbDecode(m_beginArgb, a1, r1, g1, b1); |
- int32_t a2, r2, g2, b2; |
- ArgbDecode(m_endArgb, a2, r2, g2, b2); |
- FX_FLOAT f = (FX_FLOAT)(FX_SHADING_Steps - 1); |
- FX_FLOAT aScale = (FX_FLOAT)(1.0 * (a2 - a1) / f); |
- FX_FLOAT rScale = (FX_FLOAT)(1.0 * (r2 - r1) / f); |
- FX_FLOAT gScale = (FX_FLOAT)(1.0 * (g2 - g1) / f); |
- FX_FLOAT bScale = (FX_FLOAT)(1.0 * (b2 - b1) / f); |
- int32_t a3, r3, g3, b3; |
- for (int32_t i = 0; i < FX_SHADING_Steps; i++) { |
- a3 = (int32_t)(i * aScale); |
- r3 = (int32_t)(i * rScale); |
- g3 = (int32_t)(i * gScale); |
- b3 = (int32_t)(i * bScale); |
- m_argbArray[i] = |
- FXARGB_TODIB(FXARGB_MAKE((a1 + a3), (r1 + r3), (g1 + g3), (b1 + b3))); |
- } |
- return FX_ERR_Succeeded; |
-} |