Cleanup CFX_Graphics.
This Cl removes unused methods, removes unused return values, removes unused
hatch data.
Change-Id: Id76240170a3bd1c3ef156fbda25a6ac96462cbda
Reviewed-on: https://pdfium-review.googlesource.com/2827
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index d8da9de..beb6ec3 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1317,7 +1317,6 @@
"xfa/fwl/cfwl_widgetproperties.h",
"xfa/fwl/cfx_barcode.cpp",
"xfa/fwl/cfx_barcode.h",
- "xfa/fwl/fwl_error.h",
"xfa/fwl/fwl_widgetdef.h",
"xfa/fwl/fwl_widgethit.h",
"xfa/fwl/ifwl_adaptertimermgr.h",
@@ -1704,8 +1703,6 @@
"xfa/fxfa/xfa_ffwidgethandler.h",
"xfa/fxfa/xfa_fontmgr.h",
"xfa/fxfa/xfa_rendercontext.h",
- "xfa/fxgraphics/cagg_graphics.cpp",
- "xfa/fxgraphics/cagg_graphics.h",
"xfa/fxgraphics/cfx_color.cpp",
"xfa/fxgraphics/cfx_color.h",
"xfa/fxgraphics/cfx_graphics.cpp",
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index c51cc2b..c67948d 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -95,8 +95,7 @@
return;
if (pPage->GetContext()->GetDocType() == DOCTYPE_DYNAMIC_XFA) {
- CFX_Graphics gs;
- gs.Create(pDevice);
+ CFX_Graphics gs(pDevice);
CFX_RectF rectClip(static_cast<FX_FLOAT>(pClip.left),
static_cast<FX_FLOAT>(pClip.top),
static_cast<FX_FLOAT>(pClip.Width()),
diff --git a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
index 41c21e0..653eb8a 100644
--- a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
+++ b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
@@ -53,8 +53,7 @@
ASSERT(pPageView);
ASSERT(pAnnot);
- CFX_Graphics gs;
- gs.Create(pDevice);
+ CFX_Graphics gs(pDevice);
CFX_Matrix mt = *pUser2Device;
bool bIsHighlight = false;
diff --git a/xfa/fwl/cfwl_datetimeedit.h b/xfa/fwl/cfwl_datetimeedit.h
index bde14dd..923ad05 100644
--- a/xfa/fwl/cfwl_datetimeedit.h
+++ b/xfa/fwl/cfwl_datetimeedit.h
@@ -12,7 +12,6 @@
#include "xfa/fwl/cfwl_edit.h"
#include "xfa/fwl/cfwl_widget.h"
#include "xfa/fwl/cfwl_widgetproperties.h"
-#include "xfa/fwl/fwl_error.h"
class CFWL_DateTimeEdit : public CFWL_Edit {
public:
diff --git a/xfa/fwl/cfwl_event.h b/xfa/fwl/cfwl_event.h
index 9a9f30a..e326ab3 100644
--- a/xfa/fwl/cfwl_event.h
+++ b/xfa/fwl/cfwl_event.h
@@ -12,7 +12,6 @@
#include "core/fxcrt/fx_system.h"
#include "xfa/fwl/cfwl_messagekey.h"
#include "xfa/fwl/cfwl_messagemouse.h"
-#include "xfa/fwl/fwl_error.h"
class CFX_Graphics;
class CFWL_Widget;
diff --git a/xfa/fwl/cfwl_message.h b/xfa/fwl/cfwl_message.h
index 67e1f05..778e1e2 100644
--- a/xfa/fwl/cfwl_message.h
+++ b/xfa/fwl/cfwl_message.h
@@ -12,7 +12,6 @@
#include "core/fxcrt/fx_basic.h"
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/fwl_error.h"
class CFWL_Widget;
diff --git a/xfa/fwl/cfwl_widgetmgr.h b/xfa/fwl/cfwl_widgetmgr.h
index 02dbf46..2d436bd 100644
--- a/xfa/fwl/cfwl_widgetmgr.h
+++ b/xfa/fwl/cfwl_widgetmgr.h
@@ -12,7 +12,6 @@
#include <vector>
#include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/fwl_error.h"
#include "xfa/fwl/ifwl_widgetmgrdelegate.h"
#include "xfa/fxgraphics/cfx_graphics.h"
diff --git a/xfa/fwl/fwl_error.h b/xfa/fwl/fwl_error.h
deleted file mode 100644
index 8ef56d9..0000000
--- a/xfa/fwl/fwl_error.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef XFA_FWL_FWL_ERROR_H_
-#define XFA_FWL_FWL_ERROR_H_
-
-enum class FWL_Error {
- Succeeded = 0,
- Indefinite,
- ParameterInvalid,
- PropertyInvalid,
- IntermediateValueInvalid,
- MethodNotSupported
-};
-
-#endif // XFA_FWL_FWL_ERROR_H_
diff --git a/xfa/fwl/theme/cfwl_widgettp.h b/xfa/fwl/theme/cfwl_widgettp.h
index 794c67b..c819507 100644
--- a/xfa/fwl/theme/cfwl_widgettp.h
+++ b/xfa/fwl/theme/cfwl_widgettp.h
@@ -14,7 +14,6 @@
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_system.h"
#include "xfa/fgas/font/cfgas_gefont.h"
-#include "xfa/fwl/fwl_error.h"
#include "xfa/fwl/theme/cfwl_utils.h"
#include "xfa/fxgraphics/cfx_graphics.h"
diff --git a/xfa/fxfa/app/xfa_ffwidget.cpp b/xfa/fxfa/app/xfa_ffwidget.cpp
index e0c70a5..1ffd712 100644
--- a/xfa/fxfa/app/xfa_ffwidget.cpp
+++ b/xfa/fxfa/app/xfa_ffwidget.cpp
@@ -1566,22 +1566,22 @@
FX_ARGB crStart, crEnd;
crStart = fill.GetColor();
int32_t iType = fill.GetPattern(crEnd);
- FX_HatchStyle iHatch = FX_HATCHSTYLE_Cross;
+ FX_HatchStyle iHatch = FX_HatchStyle::Cross;
switch (iType) {
case XFA_ATTRIBUTEENUM_CrossDiagonal:
- iHatch = FX_HATCHSTYLE_DiagonalCross;
+ iHatch = FX_HatchStyle::DiagonalCross;
break;
case XFA_ATTRIBUTEENUM_DiagonalLeft:
- iHatch = FX_HATCHSTYLE_ForwardDiagonal;
+ iHatch = FX_HatchStyle::ForwardDiagonal;
break;
case XFA_ATTRIBUTEENUM_DiagonalRight:
- iHatch = FX_HATCHSTYLE_BackwardDiagonal;
+ iHatch = FX_HatchStyle::BackwardDiagonal;
break;
case XFA_ATTRIBUTEENUM_Horizontal:
- iHatch = FX_HATCHSTYLE_Horizontal;
+ iHatch = FX_HatchStyle::Horizontal;
break;
case XFA_ATTRIBUTEENUM_Vertical:
- iHatch = FX_HATCHSTYLE_Vertical;
+ iHatch = FX_HatchStyle::Vertical;
break;
default:
break;
diff --git a/xfa/fxfa/app/xfa_fwladapter.h b/xfa/fxfa/app/xfa_fwladapter.h
index 406709b..c68fb70 100644
--- a/xfa/fxfa/app/xfa_fwladapter.h
+++ b/xfa/fxfa/app/xfa_fwladapter.h
@@ -9,7 +9,6 @@
#include "core/fxcrt/fx_coordinates.h"
#include "core/fxcrt/fx_system.h"
-#include "xfa/fwl/fwl_error.h"
class CFWL_Widget;
diff --git a/xfa/fxgraphics/cagg_graphics.cpp b/xfa/fxgraphics/cagg_graphics.cpp
deleted file mode 100644
index 5d1f563..0000000
--- a/xfa/fxgraphics/cagg_graphics.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "xfa/fxgraphics/cagg_graphics.h"
-
-CAGG_Graphics::CAGG_Graphics() : m_owner(nullptr) {}
-
-FWL_Error CAGG_Graphics::Create(CFX_Graphics* owner,
- int32_t width,
- int32_t height,
- FXDIB_Format format) {
- if (owner->m_renderDevice)
- return FWL_Error::ParameterInvalid;
- if (m_owner)
- return FWL_Error::PropertyInvalid;
-
- CFX_FxgeDevice* device = new CFX_FxgeDevice;
- device->Create(width, height, format, nullptr);
- m_owner = owner;
- m_owner->m_renderDevice = device;
- m_owner->m_renderDevice->GetBitmap()->Clear(0xFFFFFFFF);
- return FWL_Error::Succeeded;
-}
-
-CAGG_Graphics::~CAGG_Graphics() {
- delete m_owner->m_renderDevice;
-}
diff --git a/xfa/fxgraphics/cagg_graphics.h b/xfa/fxgraphics/cagg_graphics.h
deleted file mode 100644
index 9f57a72..0000000
--- a/xfa/fxgraphics/cagg_graphics.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef XFA_FXGRAPHICS_CAGG_GRAPHICS_H_
-#define XFA_FXGRAPHICS_CAGG_GRAPHICS_H_
-
-#include "core/fxge/fx_dib.h"
-#include "xfa/fxgraphics/cfx_graphics.h"
-
-class CFX_Graphics;
-
-class CAGG_Graphics {
- public:
- CAGG_Graphics();
- virtual ~CAGG_Graphics();
-
- FWL_Error Create(CFX_Graphics* owner,
- int32_t width,
- int32_t height,
- FXDIB_Format format);
-
- private:
- CFX_Graphics* m_owner;
-};
-
-#endif // XFA_FXGRAPHICS_CAGG_GRAPHICS_H_
diff --git a/xfa/fxgraphics/cfx_color.cpp b/xfa/fxgraphics/cfx_color.cpp
index 2044b76..36025a8 100644
--- a/xfa/fxgraphics/cfx_color.cpp
+++ b/xfa/fxgraphics/cfx_color.cpp
@@ -24,26 +24,23 @@
m_type = FX_COLOR_None;
}
-FWL_Error CFX_Color::Set(const FX_ARGB argb) {
+void CFX_Color::Set(const FX_ARGB argb) {
m_type = FX_COLOR_Solid;
m_info.argb = argb;
m_info.pattern = nullptr;
- return FWL_Error::Succeeded;
}
-FWL_Error CFX_Color::Set(CFX_Pattern* pattern, const FX_ARGB argb) {
+void CFX_Color::Set(CFX_Pattern* pattern, const FX_ARGB argb) {
if (!pattern)
- return FWL_Error::ParameterInvalid;
+ return;
m_type = FX_COLOR_Pattern;
m_info.argb = argb;
m_info.pattern = pattern;
- return FWL_Error::Succeeded;
}
-FWL_Error CFX_Color::Set(CFX_Shading* shading) {
+void CFX_Color::Set(CFX_Shading* shading) {
if (!shading)
- return FWL_Error::ParameterInvalid;
+ return;
m_type = FX_COLOR_Shading;
m_shading = shading;
- return FWL_Error::Succeeded;
}
diff --git a/xfa/fxgraphics/cfx_color.h b/xfa/fxgraphics/cfx_color.h
index f47f8c4..75f7fe2 100644
--- a/xfa/fxgraphics/cfx_color.h
+++ b/xfa/fxgraphics/cfx_color.h
@@ -23,9 +23,9 @@
CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb);
virtual ~CFX_Color();
- FWL_Error Set(const FX_ARGB argb);
- FWL_Error Set(CFX_Pattern* pattern, const FX_ARGB argb);
- FWL_Error Set(CFX_Shading* shading);
+ void Set(const FX_ARGB argb);
+ void Set(CFX_Pattern* pattern, const FX_ARGB argb);
+ void Set(CFX_Shading* shading);
private:
friend class CFX_Graphics;
diff --git a/xfa/fxgraphics/cfx_graphics.cpp b/xfa/fxgraphics/cfx_graphics.cpp
index d47c261..d2f2151 100644
--- a/xfa/fxgraphics/cfx_graphics.cpp
+++ b/xfa/fxgraphics/cfx_graphics.cpp
@@ -13,7 +13,6 @@
#include "core/fxge/cfx_renderdevice.h"
#include "core/fxge/cfx_unicodeencoding.h"
#include "third_party/base/ptr_util.h"
-#include "xfa/fxgraphics/cagg_graphics.h"
#include "xfa/fxgraphics/cfx_color.h"
#include "xfa/fxgraphics/cfx_path.h"
#include "xfa/fxgraphics/cfx_pattern.h"
@@ -35,663 +34,111 @@
};
const FX_HATCHDATA hatchBitmapData[FX_HATCHSTYLE_Total] = {
- {16,
+ {16, // Horizontal
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,
+ 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, // Vertical
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,
+ 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, // ForwardDiagonal
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,
+ 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, // BackwardDiagonal
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,
+ 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, // Cross
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,
+ 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, // DiagonalCross
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,
+ 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,
}},
};
} // namespace
-CFX_Graphics::CFX_Graphics()
- : m_type(FX_CONTEXT_None), m_renderDevice(nullptr) {}
-
-FWL_Error CFX_Graphics::Create(CFX_RenderDevice* renderDevice,
- bool isAntialiasing) {
+CFX_Graphics::CFX_Graphics(CFX_RenderDevice* renderDevice)
+ : m_type(FX_CONTEXT_None), m_renderDevice(renderDevice) {
if (!renderDevice)
- return FWL_Error::ParameterInvalid;
- if (m_type != FX_CONTEXT_None)
- return FWL_Error::PropertyInvalid;
-
+ return;
m_type = FX_CONTEXT_Device;
- m_info.isAntialiasing = isAntialiasing;
- m_renderDevice = renderDevice;
- if (m_renderDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)
- return FWL_Error::Succeeded;
- return FWL_Error::Indefinite;
-}
-
-FWL_Error CFX_Graphics::Create(int32_t width,
- int32_t height,
- FXDIB_Format format,
- bool isNative,
- bool isAntialiasing) {
- if (m_type != FX_CONTEXT_None)
- return FWL_Error::PropertyInvalid;
-
- m_type = FX_CONTEXT_Device;
- m_info.isAntialiasing = isAntialiasing;
- m_aggGraphics = pdfium::MakeUnique<CAGG_Graphics>();
- return m_aggGraphics->Create(this, width, height, format);
}
CFX_Graphics::~CFX_Graphics() {}
-FWL_Error CFX_Graphics::GetDeviceCap(const int32_t capID,
- FX_DeviceCap& capVal) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- capVal = m_renderDevice->GetDeviceCaps(capID);
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::IsPrinterDevice(bool& isPrinter) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- isPrinter = m_renderDevice->GetDeviceClass() == FXDC_PRINTER;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::EnableAntialiasing(bool isAntialiasing) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.isAntialiasing = isAntialiasing;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SaveGraphState() {
+void CFX_Graphics::SaveGraphState() {
if (m_type != FX_CONTEXT_Device || !m_renderDevice)
- return FWL_Error::PropertyInvalid;
+ return;
m_renderDevice->SaveState();
m_infoStack.push_back(pdfium::MakeUnique<TInfo>(m_info));
- return FWL_Error::Succeeded;
}
-FWL_Error CFX_Graphics::RestoreGraphState() {
+void CFX_Graphics::RestoreGraphState() {
if (m_type != FX_CONTEXT_Device || !m_renderDevice)
- return FWL_Error::PropertyInvalid;
+ return;
m_renderDevice->RestoreState(false);
if (m_infoStack.empty() || !m_infoStack.back())
- return FWL_Error::IntermediateValueInvalid;
+ return;
m_info = *m_infoStack.back();
m_infoStack.pop_back();
- return FWL_Error::Succeeded;
+ return;
}
-FWL_Error CFX_Graphics::GetLineCap(CFX_GraphStateData::LineCap& lineCap) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- lineCap = m_info.graphState.m_LineCap;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetLineCap(CFX_GraphStateData::LineCap lineCap) {
+void CFX_Graphics::SetLineCap(CFX_GraphStateData::LineCap lineCap) {
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
m_info.graphState.m_LineCap = lineCap;
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::GetDashCount(int32_t& dashCount) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- dashCount = m_info.graphState.m_DashCount;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::GetLineDash(FX_FLOAT& dashPhase,
- FX_FLOAT* dashArray) const {
- if (!dashArray)
- return FWL_Error::ParameterInvalid;
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- dashPhase = m_info.graphState.m_DashPhase;
- FXSYS_memcpy(dashArray, m_info.graphState.m_DashArray,
- m_info.graphState.m_DashCount * sizeof(FX_FLOAT));
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetLineDash(FX_FLOAT dashPhase,
- FX_FLOAT* dashArray,
- int32_t dashCount) {
+void CFX_Graphics::SetLineDash(FX_FLOAT dashPhase,
+ FX_FLOAT* dashArray,
+ int32_t dashCount) {
if (dashCount > 0 && !dashArray)
- return FWL_Error::ParameterInvalid;
+ return;
dashCount = dashCount < 0 ? 0 : dashCount;
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
@@ -704,165 +151,68 @@
for (int32_t i = 0; i < dashCount; i++) {
m_info.graphState.m_DashArray[i] = dashArray[i] * scale;
}
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::SetLineDash(FX_DashStyle dashStyle) {
+void CFX_Graphics::SetLineDash(FX_DashStyle dashStyle) {
if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceSetLineDash(dashStyle);
- return FWL_Error::PropertyInvalid;
+ RenderDeviceSetLineDash(dashStyle);
}
-FWL_Error CFX_Graphics::GetLineJoin(
- CFX_GraphStateData::LineJoin& lineJoin) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- lineJoin = m_info.graphState.m_LineJoin;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetLineJoin(CFX_GraphStateData::LineJoin lineJoin) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.graphState.m_LineJoin = lineJoin;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::GetMiterLimit(FX_FLOAT& miterLimit) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- miterLimit = m_info.graphState.m_MiterLimit;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetMiterLimit(FX_FLOAT miterLimit) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.graphState.m_MiterLimit = miterLimit;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::GetLineWidth(FX_FLOAT& lineWidth) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- lineWidth = m_info.graphState.m_LineWidth;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetLineWidth(FX_FLOAT lineWidth, bool isActOnDash) {
+void CFX_Graphics::SetLineWidth(FX_FLOAT lineWidth, bool isActOnDash) {
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
m_info.graphState.m_LineWidth = lineWidth;
m_info.isActOnDash = isActOnDash;
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::GetStrokeAlignment(
- FX_StrokeAlignment& strokeAlignment) const {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- strokeAlignment = m_info.strokeAlignment;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetStrokeAlignment(FX_StrokeAlignment strokeAlignment) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.strokeAlignment = strokeAlignment;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetStrokeColor(CFX_Color* color) {
+void CFX_Graphics::SetStrokeColor(CFX_Color* color) {
if (!color)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
m_info.strokeColor = color;
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::SetFillColor(CFX_Color* color) {
+void CFX_Graphics::SetFillColor(CFX_Color* color) {
if (!color)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
m_info.fillColor = color;
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::StrokePath(CFX_Path* path, CFX_Matrix* matrix) {
+void CFX_Graphics::StrokePath(CFX_Path* path, CFX_Matrix* matrix) {
if (!path)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceStrokePath(path, matrix);
- return FWL_Error::PropertyInvalid;
+ RenderDeviceStrokePath(path, matrix);
}
-FWL_Error CFX_Graphics::FillPath(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix) {
+void CFX_Graphics::FillPath(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix) {
if (!path)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceFillPath(path, fillMode, matrix);
- return FWL_Error::PropertyInvalid;
+ RenderDeviceFillPath(path, fillMode, matrix);
}
-FWL_Error CFX_Graphics::ClipPath(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix) {
- if (!path)
- return FWL_Error::ParameterInvalid;
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- bool result =
- m_renderDevice->SetClip_PathFill(path->GetPathData(), matrix, fillMode);
- if (!result)
- return FWL_Error::Indefinite;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::DrawImage(CFX_DIBSource* source,
- const CFX_PointF& point,
- CFX_Matrix* matrix) {
+void CFX_Graphics::StretchImage(CFX_DIBSource* source,
+ const CFX_RectF& rect,
+ CFX_Matrix* matrix) {
if (!source)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceDrawImage(source, point, matrix);
- return FWL_Error::PropertyInvalid;
+ RenderDeviceStretchImage(source, rect, matrix);
}
-FWL_Error CFX_Graphics::StretchImage(CFX_DIBSource* source,
- const CFX_RectF& rect,
- CFX_Matrix* matrix) {
- if (!source)
- return FWL_Error::ParameterInvalid;
- if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceStretchImage(source, rect, matrix);
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::ConcatMatrix(const CFX_Matrix* matrix) {
+void CFX_Graphics::ConcatMatrix(const CFX_Matrix* matrix) {
if (!matrix)
- return FWL_Error::ParameterInvalid;
+ return;
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
m_info.CTM.Concat(*matrix);
- return FWL_Error::Succeeded;
}
- return FWL_Error::PropertyInvalid;
}
CFX_Matrix* CFX_Graphics::GetMatrix() {
@@ -879,275 +229,52 @@
return CFX_Rect(r.left, r.top, r.Width(), r.Height()).As<FX_FLOAT>();
}
-FWL_Error CFX_Graphics::SetClipRect(const CFX_RectF& rect) {
+void CFX_Graphics::SetClipRect(const CFX_RectF& rect) {
if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- if (!m_renderDevice->SetClip_Rect(
- FX_RECT(FXSYS_round(rect.left), FXSYS_round(rect.top),
- FXSYS_round(rect.right()), FXSYS_round(rect.bottom())))) {
- return FWL_Error::MethodNotSupported;
- }
- return FWL_Error::Succeeded;
+ m_renderDevice->SetClip_Rect(
+ FX_RECT(FXSYS_round(rect.left), FXSYS_round(rect.top),
+ FXSYS_round(rect.right()), FXSYS_round(rect.bottom())));
}
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::ClearClip() {
- if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return FWL_Error::Succeeded;
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetFont(CFX_Font* font) {
- if (!font)
- return FWL_Error::ParameterInvalid;
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.font = font;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetFontSize(const FX_FLOAT size) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.fontSize = size <= 0 ? 1.0f : size;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetFontHScale(const FX_FLOAT scale) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.fontHScale = scale <= 0 ? 1.0f : scale;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetCharSpacing(const FX_FLOAT spacing) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- m_info.fontSpacing = spacing < 0 ? 0 : spacing;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::SetTextDrawingMode(const int32_t mode) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return FWL_Error::Succeeded;
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::ShowText(const CFX_PointF& point,
- const CFX_WideString& text,
- CFX_Matrix* matrix) {
- if (m_type == FX_CONTEXT_Device && m_renderDevice)
- return RenderDeviceShowText(point, text, matrix);
- return FWL_Error::PropertyInvalid;
-}
-
-void CFX_Graphics::CalcTextRect(CFX_RectF& rect,
- const CFX_WideString& text,
- bool isMultiline,
- CFX_Matrix* matrix) {
- if (m_type != FX_CONTEXT_Device || !m_renderDevice)
- return;
-
- int32_t length = text.GetLength();
- uint32_t* charCodes = FX_Alloc(uint32_t, length);
- FXTEXT_CHARPOS* charPos = FX_Alloc(FXTEXT_CHARPOS, length);
- CalcTextInfo(text, charCodes, charPos, rect);
- FX_Free(charPos);
- FX_Free(charCodes);
-}
-
-FWL_Error CFX_Graphics::Transfer(CFX_Graphics* graphics,
- const CFX_Matrix* matrix) {
- if (!graphics || !graphics->m_renderDevice)
- return FWL_Error::ParameterInvalid;
- CFX_Matrix m(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
- m_info.CTM.e, m_info.CTM.f);
- if (matrix) {
- m.Concat(*matrix);
- }
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- CFX_DIBitmap* bitmap = graphics->m_renderDevice->GetBitmap();
- bool result = m_renderDevice->SetDIBits(bitmap, 0, 0);
- if (!result)
- return FWL_Error::MethodNotSupported;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
-}
-
-FWL_Error CFX_Graphics::Transfer(CFX_Graphics* graphics,
- FX_FLOAT srcLeft,
- FX_FLOAT srcTop,
- const CFX_RectF& dstRect,
- const CFX_Matrix* matrix) {
- if (!graphics || !graphics->m_renderDevice)
- return FWL_Error::ParameterInvalid;
- CFX_Matrix m(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
- m_info.CTM.e, m_info.CTM.f);
- if (matrix) {
- m.Concat(*matrix);
- }
- if (m_type == FX_CONTEXT_Device && m_renderDevice) {
- CFX_DIBitmap bmp;
- bool result =
- bmp.Create((int32_t)dstRect.width, (int32_t)dstRect.height,
- graphics->m_renderDevice->GetBitmap()->GetFormat());
- if (!result)
- return FWL_Error::IntermediateValueInvalid;
- result = graphics->m_renderDevice->GetDIBits(&bmp, (int32_t)srcLeft,
- (int32_t)srcTop);
- if (!result)
- return FWL_Error::MethodNotSupported;
- result = m_renderDevice->SetDIBits(&bmp, (int32_t)dstRect.left,
- (int32_t)dstRect.top);
- if (!result)
- return FWL_Error::MethodNotSupported;
- return FWL_Error::Succeeded;
- }
- return FWL_Error::PropertyInvalid;
}
CFX_RenderDevice* CFX_Graphics::GetRenderDevice() {
return m_renderDevice;
}
-FWL_Error CFX_Graphics::InverseRect(const CFX_RectF& rect) {
- if (!m_renderDevice)
- return FWL_Error::PropertyInvalid;
- CFX_DIBitmap* bitmap = m_renderDevice->GetBitmap();
- if (!bitmap)
- return FWL_Error::PropertyInvalid;
- CFX_RectF temp(rect);
- m_info.CTM.TransformRect(temp);
- CFX_RectF r(0, 0, (FX_FLOAT)bitmap->GetWidth(), (FX_FLOAT)bitmap->GetWidth());
- r.Intersect(temp);
- if (r.IsEmpty()) {
- return FWL_Error::ParameterInvalid;
- }
- FX_ARGB* pBuf =
- (FX_ARGB*)(bitmap->GetBuffer() + int32_t(r.top) * bitmap->GetPitch());
- int32_t bottom = (int32_t)r.bottom();
- int32_t right = (int32_t)r.right();
- for (int32_t i = (int32_t)r.top; i < bottom; i++) {
- FX_ARGB* pLine = pBuf + (int32_t)r.left;
- for (int32_t j = (int32_t)r.left; j < right; j++) {
- FX_ARGB c = *pLine;
- *pLine++ = (c & 0xFF000000) | (0xFFFFFF - (c & 0x00FFFFFF));
- }
- pBuf = (FX_ARGB*)((uint8_t*)pBuf + bitmap->GetPitch());
- }
- return FWL_Error::Succeeded;
-}
-
-FWL_Error CFX_Graphics::XorDIBitmap(const CFX_DIBitmap* srcBitmap,
- const CFX_RectF& rect) {
- if (!m_renderDevice)
- return FWL_Error::PropertyInvalid;
- CFX_DIBitmap* dst = m_renderDevice->GetBitmap();
- if (!dst)
- return FWL_Error::PropertyInvalid;
- CFX_RectF temp(rect);
- m_info.CTM.TransformRect(temp);
- CFX_RectF r(0, 0, (FX_FLOAT)dst->GetWidth(), (FX_FLOAT)dst->GetWidth());
- r.Intersect(temp);
- if (r.IsEmpty()) {
- return FWL_Error::ParameterInvalid;
- }
- FX_ARGB* pSrcBuf = (FX_ARGB*)(srcBitmap->GetBuffer() +
- int32_t(r.top) * srcBitmap->GetPitch());
- FX_ARGB* pDstBuf =
- (FX_ARGB*)(dst->GetBuffer() + int32_t(r.top) * dst->GetPitch());
- int32_t bottom = (int32_t)r.bottom();
- int32_t right = (int32_t)r.right();
- for (int32_t i = (int32_t)r.top; i < bottom; i++) {
- FX_ARGB* pSrcLine = pSrcBuf + (int32_t)r.left;
- FX_ARGB* pDstLine = pDstBuf + (int32_t)r.left;
- for (int32_t j = (int32_t)r.left; j < right; j++) {
- FX_ARGB c = *pDstLine;
- *pDstLine++ =
- ArgbEncode(FXARGB_A(c), (c & 0xFFFFFF) ^ (*pSrcLine & 0xFFFFFF));
- pSrcLine++;
- }
- pSrcBuf = (FX_ARGB*)((uint8_t*)pSrcBuf + srcBitmap->GetPitch());
- pDstBuf = (FX_ARGB*)((uint8_t*)pDstBuf + dst->GetPitch());
- }
- return FWL_Error::Succeeded;
-}
-
-FWL_Error CFX_Graphics::EqvDIBitmap(const CFX_DIBitmap* srcBitmap,
- const CFX_RectF& rect) {
- if (!m_renderDevice)
- return FWL_Error::PropertyInvalid;
- CFX_DIBitmap* dst = m_renderDevice->GetBitmap();
- if (!dst)
- return FWL_Error::PropertyInvalid;
- CFX_RectF temp(rect);
- m_info.CTM.TransformRect(temp);
- CFX_RectF r(0, 0, (FX_FLOAT)dst->GetWidth(), (FX_FLOAT)dst->GetWidth());
- r.Intersect(temp);
- if (r.IsEmpty()) {
- return FWL_Error::ParameterInvalid;
- }
- FX_ARGB* pSrcBuf = (FX_ARGB*)(srcBitmap->GetBuffer() +
- int32_t(r.top) * srcBitmap->GetPitch());
- FX_ARGB* pDstBuf =
- (FX_ARGB*)(dst->GetBuffer() + int32_t(r.top) * dst->GetPitch());
- int32_t bottom = (int32_t)r.bottom();
- int32_t right = (int32_t)r.right();
- for (int32_t i = (int32_t)r.top; i < bottom; i++) {
- FX_ARGB* pSrcLine = pSrcBuf + (int32_t)r.left;
- FX_ARGB* pDstLine = pDstBuf + (int32_t)r.left;
- for (int32_t j = (int32_t)r.left; j < right; j++) {
- FX_ARGB c = *pDstLine;
- *pDstLine++ =
- ArgbEncode(FXARGB_A(c), ~((c & 0xFFFFFF) ^ (*pSrcLine & 0xFFFFFF)));
- pSrcLine++;
- }
- pSrcBuf = (FX_ARGB*)((uint8_t*)pSrcBuf + srcBitmap->GetPitch());
- pDstBuf = (FX_ARGB*)((uint8_t*)pDstBuf + dst->GetPitch());
- }
- return FWL_Error::Succeeded;
-}
-
-FWL_Error CFX_Graphics::RenderDeviceSetLineDash(FX_DashStyle dashStyle) {
+void CFX_Graphics::RenderDeviceSetLineDash(FX_DashStyle dashStyle) {
switch (dashStyle) {
case FX_DASHSTYLE_Solid: {
m_info.graphState.SetDashCount(0);
- return FWL_Error::Succeeded;
+ return;
}
case FX_DASHSTYLE_Dash: {
FX_FLOAT dashArray[] = {3, 1};
SetLineDash(0, dashArray, 2);
- return FWL_Error::Succeeded;
+ return;
}
case FX_DASHSTYLE_Dot: {
FX_FLOAT dashArray[] = {1, 1};
SetLineDash(0, dashArray, 2);
- return FWL_Error::Succeeded;
+ return;
}
case FX_DASHSTYLE_DashDot: {
FX_FLOAT dashArray[] = {3, 1, 1, 1};
SetLineDash(0, dashArray, 4);
- return FWL_Error::Succeeded;
+ return;
}
case FX_DASHSTYLE_DashDotDot: {
FX_FLOAT dashArray[] = {4, 1, 2, 1, 2, 1};
SetLineDash(0, dashArray, 6);
- return FWL_Error::Succeeded;
+ return;
}
default:
- return FWL_Error::ParameterInvalid;
+ return;
}
}
-FWL_Error CFX_Graphics::RenderDeviceStrokePath(CFX_Path* path,
- CFX_Matrix* matrix) {
+void CFX_Graphics::RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix) {
if (!m_info.strokeColor)
- return FWL_Error::PropertyInvalid;
+ return;
CFX_Matrix m(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
m_info.CTM.e, m_info.CTM.f);
if (matrix) {
@@ -1155,27 +282,20 @@
}
switch (m_info.strokeColor->m_type) {
case FX_COLOR_Solid: {
- bool result =
- m_renderDevice->DrawPath(path->GetPathData(), &m, &m_info.graphState,
- 0x0, m_info.strokeColor->m_info.argb, 0);
- if (!result)
- return FWL_Error::Indefinite;
- return FWL_Error::Succeeded;
+ m_renderDevice->DrawPath(path->GetPathData(), &m, &m_info.graphState, 0x0,
+ m_info.strokeColor->m_info.argb, 0);
+ return;
}
- case FX_COLOR_Pattern:
- return StrokePathWithPattern(path, &m);
- case FX_COLOR_Shading:
- return StrokePathWithShading(path, &m);
default:
- return FWL_Error::PropertyInvalid;
+ return;
}
}
-FWL_Error CFX_Graphics::RenderDeviceFillPath(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix) {
+void CFX_Graphics::RenderDeviceFillPath(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix) {
if (!m_info.fillColor)
- return FWL_Error::PropertyInvalid;
+ return;
CFX_Matrix m(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
m_info.CTM.e, m_info.CTM.f);
if (matrix) {
@@ -1183,54 +303,24 @@
}
switch (m_info.fillColor->m_type) {
case FX_COLOR_Solid: {
- bool result = m_renderDevice->DrawPath(
- path->GetPathData(), &m, &m_info.graphState,
- m_info.fillColor->m_info.argb, 0x0, fillMode);
- if (!result)
- return FWL_Error::Indefinite;
- return FWL_Error::Succeeded;
+ m_renderDevice->DrawPath(path->GetPathData(), &m, &m_info.graphState,
+ m_info.fillColor->m_info.argb, 0x0, fillMode);
+ return;
}
case FX_COLOR_Pattern:
- return FillPathWithPattern(path, fillMode, &m);
+ FillPathWithPattern(path, fillMode, &m);
+ return;
case FX_COLOR_Shading:
- return FillPathWithShading(path, fillMode, &m);
+ FillPathWithShading(path, fillMode, &m);
+ return;
default:
- return FWL_Error::PropertyInvalid;
+ return;
}
}
-FWL_Error CFX_Graphics::RenderDeviceDrawImage(CFX_DIBSource* source,
- const CFX_PointF& point,
- CFX_Matrix* matrix) {
- CFX_Matrix m1(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
- m_info.CTM.e, m_info.CTM.f);
- if (matrix) {
- m1.Concat(*matrix);
- }
- CFX_Matrix m2((FX_FLOAT)source->GetWidth(), 0.0, 0.0,
- (FX_FLOAT)source->GetHeight(), point.x, point.y);
- m2.Concat(m1);
- int32_t left, top;
- std::unique_ptr<CFX_DIBitmap> bmp1 = source->FlipImage(false, true);
- std::unique_ptr<CFX_DIBitmap> bmp2 = bmp1->TransformTo(&m2, left, top);
- CFX_RectF r = GetClipRect();
- CFX_DIBitmap* bitmap = m_renderDevice->GetBitmap();
- CFX_DIBitmap bmp;
- if (bmp.Create(bitmap->GetWidth(), bitmap->GetHeight(), FXDIB_Argb) &&
- m_renderDevice->GetDIBits(&bmp, 0, 0) &&
- bmp.TransferBitmap(FXSYS_round(r.left), FXSYS_round(r.top),
- FXSYS_round(r.Width()), FXSYS_round(r.Height()),
- bmp2.get(), FXSYS_round(r.left - left),
- FXSYS_round(r.top - top)) &&
- m_renderDevice->SetDIBits(&bmp, 0, 0)) {
- return FWL_Error::Succeeded;
- }
- return FWL_Error::Indefinite;
-}
-
-FWL_Error CFX_Graphics::RenderDeviceStretchImage(CFX_DIBSource* source,
- const CFX_RectF& rect,
- CFX_Matrix* matrix) {
+void CFX_Graphics::RenderDeviceStretchImage(CFX_DIBSource* source,
+ const CFX_RectF& rect,
+ CFX_Matrix* matrix) {
CFX_Matrix m1(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
m_info.CTM.e, m_info.CTM.f);
if (matrix) {
@@ -1247,52 +337,15 @@
std::unique_ptr<CFX_DIBitmap> bmp3 = bmp2->TransformTo(&m2, left, top);
CFX_RectF r = GetClipRect();
CFX_DIBitmap* bitmap = m_renderDevice->GetBitmap();
- if (bitmap->CompositeBitmap(FXSYS_round(r.left), FXSYS_round(r.top),
- FXSYS_round(r.Width()), FXSYS_round(r.Height()),
- bmp3.get(), FXSYS_round(r.left - left),
- FXSYS_round(r.top - top))) {
- return FWL_Error::Succeeded;
- }
- return FWL_Error::Indefinite;
+ bitmap->CompositeBitmap(FXSYS_round(r.left), FXSYS_round(r.top),
+ FXSYS_round(r.Width()), FXSYS_round(r.Height()),
+ bmp3.get(), FXSYS_round(r.left - left),
+ FXSYS_round(r.top - top));
}
-FWL_Error CFX_Graphics::RenderDeviceShowText(const CFX_PointF& point,
- const CFX_WideString& text,
- CFX_Matrix* matrix) {
- int32_t length = text.GetLength();
- uint32_t* charCodes = FX_Alloc(uint32_t, length);
- FXTEXT_CHARPOS* charPos = FX_Alloc(FXTEXT_CHARPOS, length);
- CFX_RectF rect(point.x, point.y, 0, 0);
- CalcTextInfo(text, charCodes, charPos, rect);
- CFX_Matrix m(m_info.CTM.a, m_info.CTM.b, m_info.CTM.c, m_info.CTM.d,
- m_info.CTM.e, m_info.CTM.f);
- m.Translate(0.0f, m_info.fontSize * m_info.fontHScale);
- if (matrix) {
- m.Concat(*matrix);
- }
- bool result = m_renderDevice->DrawNormalText(
- length, charPos, m_info.font, -m_info.fontSize * m_info.fontHScale, &m,
- m_info.fillColor->m_info.argb, FXTEXT_CLEARTYPE);
- if (!result)
- return FWL_Error::Indefinite;
- FX_Free(charPos);
- FX_Free(charCodes);
- return FWL_Error::Succeeded;
-}
-
-FWL_Error CFX_Graphics::StrokePathWithPattern(CFX_Path* path,
- CFX_Matrix* matrix) {
- return FWL_Error::MethodNotSupported;
-}
-
-FWL_Error CFX_Graphics::StrokePathWithShading(CFX_Path* path,
- CFX_Matrix* matrix) {
- return FWL_Error::MethodNotSupported;
-}
-
-FWL_Error CFX_Graphics::FillPathWithPattern(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix) {
+void CFX_Graphics::FillPathWithPattern(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix) {
CFX_Pattern* pattern = m_info.fillColor->m_info.pattern;
CFX_DIBitmap* bitmap = m_renderDevice->GetBitmap();
int32_t width = bitmap->GetWidth();
@@ -1302,11 +355,8 @@
m_renderDevice->GetDIBits(&bmp, 0, 0);
FX_HatchStyle hatchStyle = m_info.fillColor->m_info.pattern->m_hatchStyle;
- if (hatchStyle < FX_HATCHSTYLE_Horizontal ||
- hatchStyle > FX_HATCHSTYLE_SolidDiamond) {
- return FWL_Error::IntermediateValueInvalid;
- }
- const FX_HATCHDATA& data = hatchBitmapData[hatchStyle];
+ const FX_HATCHDATA& data = hatchBitmapData[static_cast<int>(hatchStyle)];
+
CFX_DIBitmap mask;
mask.Create(data.width, data.height, FXDIB_1bppMask);
FXSYS_memcpy(mask.GetBuffer(), data.maskBits, mask.GetPitch() * data.height);
@@ -1330,12 +380,11 @@
m_renderDevice->SetClip_PathFill(path->GetPathData(), matrix, fillMode);
SetDIBitsWithMatrix(&bmp, &pattern->m_matrix);
m_renderDevice->RestoreState(false);
- return FWL_Error::Succeeded;
}
-FWL_Error CFX_Graphics::FillPathWithShading(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix) {
+void CFX_Graphics::FillPathWithShading(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix) {
CFX_DIBitmap* bitmap = m_renderDevice->GetBitmap();
int32_t width = bitmap->GetWidth();
int32_t height = bitmap->GetHeight();
@@ -1451,11 +500,10 @@
SetDIBitsWithMatrix(&bmp, matrix);
m_renderDevice->RestoreState(false);
}
- return result ? FWL_Error::Succeeded : FWL_Error::PropertyInvalid;
}
-FWL_Error CFX_Graphics::SetDIBitsWithMatrix(CFX_DIBSource* source,
- CFX_Matrix* matrix) {
+void CFX_Graphics::SetDIBitsWithMatrix(CFX_DIBSource* source,
+ CFX_Matrix* matrix) {
if (matrix->IsIdentity()) {
m_renderDevice->SetDIBits(source, 0, 0);
} else {
@@ -1468,87 +516,23 @@
std::unique_ptr<CFX_DIBitmap> bmp2 = bmp1->TransformTo(&m, left, top);
m_renderDevice->SetDIBits(bmp2.get(), left, top);
}
- return FWL_Error::Succeeded;
-}
-
-FWL_Error CFX_Graphics::CalcTextInfo(const CFX_WideString& text,
- uint32_t* charCodes,
- FXTEXT_CHARPOS* charPos,
- CFX_RectF& rect) {
- std::unique_ptr<CFX_UnicodeEncoding> encoding(
- new CFX_UnicodeEncoding(m_info.font));
- int32_t length = text.GetLength();
- FX_FLOAT penX = (FX_FLOAT)rect.left;
- FX_FLOAT penY = (FX_FLOAT)rect.top;
- FX_FLOAT left = (FX_FLOAT)(0);
- FX_FLOAT top = (FX_FLOAT)(0);
- charCodes[0] = text.GetAt(0);
- charPos[0].m_Origin = CFX_PointF(penX + left, penY + top);
- charPos[0].m_GlyphIndex = encoding->GlyphFromCharCode(charCodes[0]);
- charPos[0].m_FontCharWidth = FXSYS_round(
- m_info.font->GetGlyphWidth(charPos[0].m_GlyphIndex) * m_info.fontHScale);
- charPos[0].m_bGlyphAdjust = true;
- charPos[0].m_AdjustMatrix[0] = -1;
- charPos[0].m_AdjustMatrix[1] = 0;
- charPos[0].m_AdjustMatrix[2] = 0;
- charPos[0].m_AdjustMatrix[3] = 1;
- penX += (FX_FLOAT)(charPos[0].m_FontCharWidth) * m_info.fontSize / 1000 +
- m_info.fontSpacing;
- for (int32_t i = 1; i < length; i++) {
- charCodes[i] = text.GetAt(i);
- charPos[i].m_Origin = CFX_PointF(penX + left, penY + top);
- charPos[i].m_GlyphIndex = encoding->GlyphFromCharCode(charCodes[i]);
- charPos[i].m_FontCharWidth =
- FXSYS_round(m_info.font->GetGlyphWidth(charPos[i].m_GlyphIndex) *
- m_info.fontHScale);
- charPos[i].m_bGlyphAdjust = true;
- charPos[i].m_AdjustMatrix[0] = -1;
- charPos[i].m_AdjustMatrix[1] = 0;
- charPos[i].m_AdjustMatrix[2] = 0;
- charPos[i].m_AdjustMatrix[3] = 1;
- penX += (FX_FLOAT)(charPos[i].m_FontCharWidth) * m_info.fontSize / 1000 +
- m_info.fontSpacing;
- }
- rect.width = (FX_FLOAT)penX - rect.left;
- rect.height = rect.top + m_info.fontSize * m_info.fontHScale - rect.top;
- return FWL_Error::Succeeded;
}
CFX_Graphics::TInfo::TInfo()
- : isAntialiasing(true),
- strokeAlignment(FX_STROKEALIGNMENT_Center),
- isActOnDash(false),
- strokeColor(nullptr),
- fillColor(nullptr),
- font(nullptr),
- fontSize(40.0),
- fontHScale(1.0),
- fontSpacing(0.0) {}
+ : isActOnDash(false), strokeColor(nullptr), fillColor(nullptr) {}
CFX_Graphics::TInfo::TInfo(const TInfo& info)
: graphState(info.graphState),
- isAntialiasing(info.isAntialiasing),
- strokeAlignment(info.strokeAlignment),
CTM(info.CTM),
isActOnDash(info.isActOnDash),
strokeColor(info.strokeColor),
- fillColor(info.fillColor),
- font(info.font),
- fontSize(info.fontSize),
- fontHScale(info.fontHScale),
- fontSpacing(info.fontSpacing) {}
+ fillColor(info.fillColor) {}
CFX_Graphics::TInfo& CFX_Graphics::TInfo::operator=(const TInfo& other) {
graphState.Copy(other.graphState);
- isAntialiasing = other.isAntialiasing;
- strokeAlignment = other.strokeAlignment;
CTM = other.CTM;
isActOnDash = other.isActOnDash;
strokeColor = other.strokeColor;
fillColor = other.fillColor;
- font = other.font;
- fontSize = other.fontSize;
- fontHScale = other.fontHScale;
- fontSpacing = other.fontSpacing;
return *this;
}
diff --git a/xfa/fxgraphics/cfx_graphics.h b/xfa/fxgraphics/cfx_graphics.h
index ed219de..c18f8eb 100644
--- a/xfa/fxgraphics/cfx_graphics.h
+++ b/xfa/fxgraphics/cfx_graphics.h
@@ -16,13 +16,10 @@
#include "core/fxge/cfx_renderdevice.h"
#include "core/fxge/fx_dib.h"
#include "core/fxge/fx_font.h"
-#include "xfa/fwl/fwl_error.h"
class CFX_Color;
class CFX_Path;
-class CAGG_Graphics;
-using FX_DeviceCap = int32_t;
using FX_FillMode = int32_t;
enum FX_DashStyle {
@@ -33,152 +30,44 @@
FX_DASHSTYLE_DashDotDot = 4
};
-enum FX_StrokeAlignment {
- FX_STROKEALIGNMENT_Center = 0,
- FX_STROKEALIGNMENT_Inset = 1,
- FX_STROKEALIGNMENT_Outset = 2,
- FX_STROKEALIGNMENT_Left = 3,
- FX_STROKEALIGNMENT_Right = 4
-};
-
-enum FX_HatchStyle {
- FX_HATCHSTYLE_Horizontal = 0,
- FX_HATCHSTYLE_Vertical = 1,
- FX_HATCHSTYLE_ForwardDiagonal = 2,
- FX_HATCHSTYLE_BackwardDiagonal = 3,
- FX_HATCHSTYLE_Cross = 4,
- FX_HATCHSTYLE_DiagonalCross = 5,
- FX_HATCHSTYLE_05Percent = 6,
- FX_HATCHSTYLE_10Percent = 7,
- FX_HATCHSTYLE_20Percent = 8,
- FX_HATCHSTYLE_25Percent = 9,
- FX_HATCHSTYLE_30Percent = 10,
- FX_HATCHSTYLE_40Percent = 11,
- FX_HATCHSTYLE_50Percent = 12,
- FX_HATCHSTYLE_60Percent = 13,
- FX_HATCHSTYLE_70Percent = 14,
- FX_HATCHSTYLE_75Percent = 15,
- FX_HATCHSTYLE_80Percent = 16,
- FX_HATCHSTYLE_90Percent = 17,
- FX_HATCHSTYLE_LightDownwardDiagonal = 18,
- FX_HATCHSTYLE_LightUpwardDiagonal = 19,
- FX_HATCHSTYLE_DarkDownwardDiagonal = 20,
- FX_HATCHSTYLE_DarkUpwardDiagonal = 21,
- FX_HATCHSTYLE_WideDownwardDiagonal = 22,
- FX_HATCHSTYLE_WideUpwardDiagonal = 23,
- FX_HATCHSTYLE_LightVertical = 24,
- FX_HATCHSTYLE_LightHorizontal = 25,
- FX_HATCHSTYLE_NarrowVertical = 26,
- FX_HATCHSTYLE_NarrowHorizontal = 27,
- FX_HATCHSTYLE_DarkVertical = 28,
- FX_HATCHSTYLE_DarkHorizontal = 29,
- FX_HATCHSTYLE_DashedDownwardDiagonal = 30,
- FX_HATCHSTYLE_DashedUpwardDiagonal = 31,
- FX_HATCHSTYLE_DashedHorizontal = 32,
- FX_HATCHSTYLE_DashedVertical = 33,
- FX_HATCHSTYLE_SmallConfetti = 34,
- FX_HATCHSTYLE_LargeConfetti = 35,
- FX_HATCHSTYLE_ZigZag = 36,
- FX_HATCHSTYLE_Wave = 37,
- FX_HATCHSTYLE_DiagonalBrick = 38,
- FX_HATCHSTYLE_HorizontalBrick = 39,
- FX_HATCHSTYLE_Weave = 40,
- FX_HATCHSTYLE_Plaid = 41,
- FX_HATCHSTYLE_Divot = 42,
- FX_HATCHSTYLE_DottedGrid = 43,
- FX_HATCHSTYLE_DottedDiamond = 44,
- FX_HATCHSTYLE_Shingle = 45,
- FX_HATCHSTYLE_Trellis = 46,
- FX_HATCHSTYLE_Sphere = 47,
- FX_HATCHSTYLE_SmallGrid = 48,
- FX_HATCHSTYLE_SmallCheckerBoard = 49,
- FX_HATCHSTYLE_LargeCheckerBoard = 50,
- FX_HATCHSTYLE_OutlinedDiamond = 51,
- FX_HATCHSTYLE_SolidDiamond = 52
+enum class FX_HatchStyle {
+ Horizontal = 0,
+ Vertical = 1,
+ ForwardDiagonal = 2,
+ BackwardDiagonal = 3,
+ Cross = 4,
+ DiagonalCross = 5
};
class CFX_RenderDevice;
class CFX_Graphics {
public:
- CFX_Graphics();
- virtual ~CFX_Graphics();
+ explicit CFX_Graphics(CFX_RenderDevice* renderDevice);
+ ~CFX_Graphics();
- FWL_Error Create(CFX_RenderDevice* renderDevice, bool isAntialiasing = true);
- FWL_Error Create(int32_t width,
- int32_t height,
- FXDIB_Format format,
- bool isNative = true,
- bool isAntialiasing = true);
+ void SaveGraphState();
+ void RestoreGraphState();
- FWL_Error GetDeviceCap(const int32_t capID, FX_DeviceCap& capVal);
- FWL_Error IsPrinterDevice(bool& isPrinter);
- FWL_Error EnableAntialiasing(bool isAntialiasing);
-
- FWL_Error SaveGraphState();
- FWL_Error RestoreGraphState();
-
- FWL_Error GetLineCap(CFX_GraphStateData::LineCap& lineCap) const;
- FWL_Error GetDashCount(int32_t& dashCount) const;
- FWL_Error GetLineDash(FX_FLOAT& dashPhase, FX_FLOAT* dashArray) const;
- FWL_Error GetLineJoin(CFX_GraphStateData::LineJoin& lineJoin) const;
- FWL_Error GetMiterLimit(FX_FLOAT& miterLimit) const;
- FWL_Error GetLineWidth(FX_FLOAT& lineWidth) const;
- FWL_Error GetStrokeAlignment(FX_StrokeAlignment& strokeAlignment) const;
CFX_RectF GetClipRect() const;
CFX_Matrix* GetMatrix();
CFX_RenderDevice* GetRenderDevice();
- FWL_Error SetLineCap(CFX_GraphStateData::LineCap lineCap);
- FWL_Error SetLineDash(FX_FLOAT dashPhase,
- FX_FLOAT* dashArray,
- int32_t dashCount);
- FWL_Error SetLineDash(FX_DashStyle dashStyle);
- FWL_Error SetLineJoin(CFX_GraphStateData::LineJoin lineJoin);
- FWL_Error SetMiterLimit(FX_FLOAT miterLimit);
- FWL_Error SetLineWidth(FX_FLOAT lineWidth, bool isActOnDash = false);
- FWL_Error SetStrokeAlignment(FX_StrokeAlignment strokeAlignment);
- FWL_Error SetStrokeColor(CFX_Color* color);
- FWL_Error SetFillColor(CFX_Color* color);
- FWL_Error SetClipRect(const CFX_RectF& rect);
- FWL_Error SetFont(CFX_Font* font);
- FWL_Error SetFontSize(const FX_FLOAT size);
- FWL_Error SetFontHScale(const FX_FLOAT scale);
- FWL_Error SetCharSpacing(const FX_FLOAT spacing);
- FWL_Error SetTextDrawingMode(const int32_t mode);
-
- FWL_Error StrokePath(CFX_Path* path, CFX_Matrix* matrix = nullptr);
- FWL_Error FillPath(CFX_Path* path,
- FX_FillMode fillMode = FXFILL_WINDING,
- CFX_Matrix* matrix = nullptr);
- FWL_Error ClipPath(CFX_Path* path,
- FX_FillMode fillMode = FXFILL_WINDING,
- CFX_Matrix* matrix = nullptr);
- FWL_Error DrawImage(CFX_DIBSource* source,
- const CFX_PointF& point,
- CFX_Matrix* matrix = nullptr);
- FWL_Error StretchImage(CFX_DIBSource* source,
- const CFX_RectF& rect,
- CFX_Matrix* matrix = nullptr);
- FWL_Error ConcatMatrix(const CFX_Matrix* matrix);
- FWL_Error ClearClip();
- FWL_Error ShowText(const CFX_PointF& point,
- const CFX_WideString& text,
- CFX_Matrix* matrix = nullptr);
- void CalcTextRect(CFX_RectF& rect,
- const CFX_WideString& text,
- bool isMultiline = false,
+ void SetLineCap(CFX_GraphStateData::LineCap lineCap);
+ void SetLineDash(FX_FLOAT dashPhase, FX_FLOAT* dashArray, int32_t dashCount);
+ void SetLineDash(FX_DashStyle dashStyle);
+ void SetLineWidth(FX_FLOAT lineWidth, bool isActOnDash = false);
+ void SetStrokeColor(CFX_Color* color);
+ void SetFillColor(CFX_Color* color);
+ void SetClipRect(const CFX_RectF& rect);
+ void StrokePath(CFX_Path* path, CFX_Matrix* matrix = nullptr);
+ void FillPath(CFX_Path* path,
+ FX_FillMode fillMode = FXFILL_WINDING,
+ CFX_Matrix* matrix = nullptr);
+ void StretchImage(CFX_DIBSource* source,
+ const CFX_RectF& rect,
CFX_Matrix* matrix = nullptr);
- FWL_Error Transfer(CFX_Graphics* graphics, const CFX_Matrix* matrix);
- FWL_Error Transfer(CFX_Graphics* graphics,
- FX_FLOAT srcLeft,
- FX_FLOAT srcTop,
- const CFX_RectF& dstRect,
- const CFX_Matrix* matrix);
-
- FWL_Error InverseRect(const CFX_RectF& rect);
- FWL_Error XorDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect);
- FWL_Error EqvDIBitmap(const CFX_DIBitmap* srcBitmap, const CFX_RectF& rect);
+ void ConcatMatrix(const CFX_Matrix* matrix);
protected:
int32_t m_type;
@@ -190,53 +79,32 @@
TInfo& operator=(const TInfo& other);
CFX_GraphStateData graphState;
- bool isAntialiasing;
- FX_StrokeAlignment strokeAlignment;
CFX_Matrix CTM;
bool isActOnDash;
CFX_Color* strokeColor;
CFX_Color* fillColor;
- CFX_Font* font;
- FX_FLOAT fontSize;
- FX_FLOAT fontHScale;
- FX_FLOAT fontSpacing;
} m_info;
- FWL_Error RenderDeviceSetLineDash(FX_DashStyle dashStyle);
- FWL_Error RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix);
- FWL_Error RenderDeviceFillPath(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix);
- FWL_Error RenderDeviceDrawImage(CFX_DIBSource* source,
- const CFX_PointF& point,
- CFX_Matrix* matrix);
- FWL_Error RenderDeviceStretchImage(CFX_DIBSource* source,
- const CFX_RectF& rect,
- CFX_Matrix* matrix);
- FWL_Error RenderDeviceShowText(const CFX_PointF& point,
- const CFX_WideString& text,
- CFX_Matrix* matrix);
-
- FWL_Error StrokePathWithPattern(CFX_Path* path, CFX_Matrix* matrix);
- FWL_Error StrokePathWithShading(CFX_Path* path, CFX_Matrix* matrix);
-
- FWL_Error FillPathWithPattern(CFX_Path* path,
- FX_FillMode fillMode,
- CFX_Matrix* matrix);
- FWL_Error FillPathWithShading(CFX_Path* path,
- FX_FillMode fillMode,
+ void RenderDeviceSetLineDash(FX_DashStyle dashStyle);
+ void RenderDeviceStrokePath(CFX_Path* path, CFX_Matrix* matrix);
+ void RenderDeviceFillPath(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix);
+ void RenderDeviceStretchImage(CFX_DIBSource* source,
+ const CFX_RectF& rect,
CFX_Matrix* matrix);
- FWL_Error SetDIBitsWithMatrix(CFX_DIBSource* source, CFX_Matrix* matrix);
- FWL_Error CalcTextInfo(const CFX_WideString& text,
- uint32_t* charCodes,
- FXTEXT_CHARPOS* charPos,
- CFX_RectF& rect);
+ void FillPathWithPattern(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix);
+ void FillPathWithShading(CFX_Path* path,
+ FX_FillMode fillMode,
+ CFX_Matrix* matrix);
+
+ void SetDIBitsWithMatrix(CFX_DIBSource* source, CFX_Matrix* matrix);
CFX_RenderDevice* m_renderDevice;
std::vector<std::unique_ptr<TInfo>> m_infoStack;
- std::unique_ptr<CAGG_Graphics> m_aggGraphics;
- friend class CAGG_Graphics;
};
#endif // XFA_FXGRAPHICS_CFX_GRAPHICS_H_
diff --git a/xfa/fxgraphics/cfx_pattern.cpp b/xfa/fxgraphics/cfx_pattern.cpp
index 8293ba1..a20ec24 100644
--- a/xfa/fxgraphics/cfx_pattern.cpp
+++ b/xfa/fxgraphics/cfx_pattern.cpp
@@ -11,9 +11,6 @@
const FX_ARGB backArgb,
CFX_Matrix* matrix)
: m_hatchStyle(hatchStyle), m_foreArgb(foreArgb), m_backArgb(backArgb) {
- ASSERT(m_hatchStyle >= FX_HATCHSTYLE_Horizontal &&
- m_hatchStyle <= FX_HATCHSTYLE_SolidDiamond);
-
if (matrix)
m_matrix = *matrix;
else