| 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;
|
| -}
|
|
|