summaryrefslogtreecommitdiff
path: root/core/src/fxge
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/fxge')
-rw-r--r--core/src/fxge/agg/fx_agg_driver.cpp (renamed from core/src/fxge/agg/src/fx_agg_driver.cpp)48
-rw-r--r--core/src/fxge/agg/fx_agg_driver.h (renamed from core/src/fxge/agg/include/fx_agg_driver.h)10
-rw-r--r--core/src/fxge/apple/fx_apple_platform.cpp2
-rw-r--r--core/src/fxge/apple/fx_quartz_device.cpp2
-rw-r--r--core/src/fxge/ge/fx_ge_linux.cpp2
-rw-r--r--core/src/fxge/skia/fx_skia_device.cpp2
-rw-r--r--core/src/fxge/win32/fx_win32_device.cpp2
7 files changed, 57 insertions, 11 deletions
diff --git a/core/src/fxge/agg/src/fx_agg_driver.cpp b/core/src/fxge/agg/fx_agg_driver.cpp
index 8b0e3f94f4..16cf705585 100644
--- a/core/src/fxge/agg/src/fx_agg_driver.cpp
+++ b/core/src/fxge/agg/fx_agg_driver.cpp
@@ -4,7 +4,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include <algorithm>
@@ -183,6 +183,7 @@ static void RasterizeStroke(agg::rasterizer_scanline_aa& rasterizer,
rasterizer.add_path_transformed(stroke, pObject2Device);
}
}
+
IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver(
CFX_DIBitmap* pBitmap,
FX_BOOL bRgbByteOrder,
@@ -191,6 +192,7 @@ IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver(
return new CFX_AggDeviceDriver(pBitmap, 0, bRgbByteOrder, pOriDevice,
bGroupKnockout);
}
+
CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
int dither_bits,
FX_BOOL bRgbByteOrder,
@@ -208,15 +210,23 @@ CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
m_FillFlags = 0;
InitPlatform();
}
+
CFX_AggDeviceDriver::~CFX_AggDeviceDriver() {
delete m_pClipRgn;
for (int i = 0; i < m_StateStack.GetSize(); i++)
delete m_StateStack[i];
DestroyPlatform();
}
+
+uint8_t* CFX_AggDeviceDriver::GetBuffer() const {
+ return m_pBitmap->GetBuffer();
+}
+
#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
void CFX_AggDeviceDriver::InitPlatform() {}
+
void CFX_AggDeviceDriver::DestroyPlatform() {}
+
FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars,
const FXTEXT_CHARPOS* pCharPos,
CFX_Font* pFont,
@@ -227,8 +237,9 @@ FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars,
int alpha_flag,
void* pIccTransform) {
return FALSE;
-}
+} // _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
#endif
+
int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) {
switch (caps_id) {
case FXDC_DEVICE_CLASS:
@@ -264,6 +275,7 @@ int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) {
}
return 0;
}
+
void CFX_AggDeviceDriver::SaveState() {
CFX_ClipRgn* pClip = NULL;
if (m_pClipRgn) {
@@ -271,6 +283,7 @@ void CFX_AggDeviceDriver::SaveState() {
}
m_StateStack.Add(pClip);
}
+
void CFX_AggDeviceDriver::RestoreState(FX_BOOL bKeepSaved) {
if (m_StateStack.GetSize() == 0) {
delete m_pClipRgn;
@@ -289,6 +302,7 @@ void CFX_AggDeviceDriver::RestoreState(FX_BOOL bKeepSaved) {
m_pClipRgn = pSavedClip;
}
}
+
void CFX_AggDeviceDriver::SetClipMask(agg::rasterizer_scanline_aa& rasterizer) {
FX_RECT path_rect(rasterizer.min_x(), rasterizer.min_y(),
rasterizer.max_x() + 1, rasterizer.max_y() + 1);
@@ -313,6 +327,7 @@ void CFX_AggDeviceDriver::SetClipMask(agg::rasterizer_scanline_aa& rasterizer) {
(m_FillFlags & FXFILL_NOPATHSMOOTH) != 0);
m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top, mask);
}
+
FX_BOOL CFX_AggDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData,
const CFX_Matrix* pObject2Device,
int fill_mode) {
@@ -345,6 +360,7 @@ FX_BOOL CFX_AggDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData,
SetClipMask(rasterizer);
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::SetClip_PathStroke(
const CFX_PathData* pPathData,
const CFX_Matrix* pObject2Device,
@@ -364,6 +380,7 @@ FX_BOOL CFX_AggDeviceDriver::SetClip_PathStroke(
SetClipMask(rasterizer);
return TRUE;
}
+
class CFX_Renderer {
private:
int m_Alpha, m_Red, m_Green, m_Blue, m_Gray;
@@ -387,6 +404,7 @@ class CFX_Renderer {
public:
void prepare(unsigned) {}
+
void CompositeSpan(uint8_t* dest_scan,
uint8_t* ori_scan,
int Bpp,
@@ -582,6 +600,7 @@ class CFX_Renderer {
}
}
}
+
void CompositeSpan1bpp(uint8_t* dest_scan,
int Bpp,
int span_left,
@@ -626,6 +645,7 @@ class CFX_Renderer {
dest_scan1 = dest_scan + (span_left % 8 + col - col_start + 1) / 8;
}
}
+
void CompositeSpanGray(uint8_t* dest_scan,
int Bpp,
int span_left,
@@ -693,6 +713,7 @@ class CFX_Renderer {
}
}
}
+
void CompositeSpanARGB(uint8_t* dest_scan,
int Bpp,
int span_left,
@@ -787,6 +808,7 @@ class CFX_Renderer {
dest_scan += Bpp;
}
}
+
void CompositeSpanRGB(uint8_t* dest_scan,
int Bpp,
int span_left,
@@ -913,6 +935,7 @@ class CFX_Renderer {
}
}
}
+
void CompositeSpanCMYK(uint8_t* dest_scan,
int Bpp,
int span_left,
@@ -994,6 +1017,7 @@ class CFX_Renderer {
}
}
}
+
template <class Scanline>
void render(const Scanline& sl) {
if (!m_pOriDevice && !composite_span) {
@@ -1184,6 +1208,7 @@ class CFX_Renderer {
return TRUE;
}
};
+
FX_BOOL CFX_AggDeviceDriver::RenderRasterizer(
agg::rasterizer_scanline_aa& rasterizer,
FX_DWORD color,
@@ -1202,6 +1227,7 @@ FX_BOOL CFX_AggDeviceDriver::RenderRasterizer(
(m_FillFlags & FXFILL_NOPATHSMOOTH) != 0);
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData,
const CFX_Matrix* pObject2Device,
const CFX_GraphStateData* pGraphState,
@@ -1285,6 +1311,7 @@ FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData,
}
return TRUE;
}
+
void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) {
if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) {
return;
@@ -1300,6 +1327,7 @@ void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) {
pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255;
}
}
+
void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap,
int left,
int top,
@@ -1380,6 +1408,7 @@ void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap,
}
}
}
+
void RgbByteOrderTransferBitmap(CFX_DIBitmap* pBitmap,
int dest_left,
int dest_top,
@@ -1483,12 +1512,14 @@ void RgbByteOrderTransferBitmap(CFX_DIBitmap* pBitmap,
ASSERT(FALSE);
}
}
+
FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha) {
uint8_t r, g, b;
AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk),
FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, g, b);
return ArgbEncode(alpha, r, g, b);
}
+
FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice,
int x,
int y,
@@ -1524,6 +1555,7 @@ FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice,
}
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::SetPixel(int x,
int y,
FX_DWORD color,
@@ -1570,6 +1602,7 @@ FX_BOOL CFX_AggDeviceDriver::SetPixel(int x,
}
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect,
FX_DWORD fill_color,
int alpha_flag,
@@ -1609,6 +1642,7 @@ FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect,
FXDIB_BLEND_NORMAL, NULL, m_bRgbByteOrder, alpha_flag, pIccTransform);
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::GetClipBox(FX_RECT* pRect) {
if (!m_pClipRgn) {
pRect->left = pRect->top = 0;
@@ -1619,6 +1653,7 @@ FX_BOOL CFX_AggDeviceDriver::GetClipBox(FX_RECT* pRect) {
*pRect = m_pClipRgn->GetBox();
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap,
int left,
int top,
@@ -1667,6 +1702,7 @@ FX_BOOL CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap,
delete pBack;
return bRet;
}
+
FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap,
FX_DWORD argb,
const FX_RECT* pSrcRect,
@@ -1687,6 +1723,7 @@ FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap,
left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, pSrcRect->left,
pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, pIccTransform);
}
+
FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource,
FX_DWORD argb,
int dest_left,
@@ -1724,6 +1761,7 @@ FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource,
}
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource,
int bitmap_alpha,
FX_DWORD argb,
@@ -1742,21 +1780,25 @@ FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource,
handle = pRenderer;
return TRUE;
}
+
FX_BOOL CFX_AggDeviceDriver::ContinueDIBits(void* pHandle, IFX_Pause* pPause) {
if (!m_pBitmap->GetBuffer()) {
return TRUE;
}
return ((CFX_ImageRenderer*)pHandle)->Continue(pPause);
}
+
void CFX_AggDeviceDriver::CancelDIBits(void* pHandle) {
if (!m_pBitmap->GetBuffer()) {
return;
}
delete (CFX_ImageRenderer*)pHandle;
}
+
CFX_FxgeDevice::CFX_FxgeDevice() {
m_bOwnedBitmap = FALSE;
}
+
FX_BOOL CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
int dither_bits,
FX_BOOL bRgbByteOrder,
@@ -1771,6 +1813,7 @@ FX_BOOL CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
SetDeviceDriver(pDriver);
return TRUE;
}
+
FX_BOOL CFX_FxgeDevice::Create(int width,
int height,
FXDIB_Format format,
@@ -1788,6 +1831,7 @@ FX_BOOL CFX_FxgeDevice::Create(int width,
SetDeviceDriver(pDriver);
return TRUE;
}
+
CFX_FxgeDevice::~CFX_FxgeDevice() {
if (m_bOwnedBitmap) {
delete GetBitmap();
diff --git a/core/src/fxge/agg/include/fx_agg_driver.h b/core/src/fxge/agg/fx_agg_driver.h
index 71569749fb..ac2dfd02e3 100644
--- a/core/src/fxge/agg/include/fx_agg_driver.h
+++ b/core/src/fxge/agg/fx_agg_driver.h
@@ -4,8 +4,8 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#ifndef CORE_SRC_FXGE_AGG_INCLUDE_FX_AGG_DRIVER_H_
-#define CORE_SRC_FXGE_AGG_INCLUDE_FX_AGG_DRIVER_H_
+#ifndef CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_
+#define CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_
#include "core/include/fxge/fx_ge.h"
#include "third_party/agg23/agg_clip_liang_barsky.h"
@@ -24,6 +24,7 @@ class CAgg_PathData {
agg::path_storage m_PathData;
};
+
class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver {
public:
CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
@@ -132,8 +133,9 @@ class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver {
void SetClipMask(agg::rasterizer_scanline_aa& rasterizer);
- virtual uint8_t* GetBuffer() const { return m_pBitmap->GetBuffer(); }
+ virtual uint8_t* GetBuffer() const;
+ private:
CFX_DIBitmap* m_pBitmap;
CFX_ClipRgn* m_pClipRgn;
CFX_ArrayTemplate<CFX_ClipRgn*> m_StateStack;
@@ -147,4 +149,4 @@ class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver {
FX_BOOL m_bGroupKnockout;
};
-#endif // CORE_SRC_FXGE_AGG_INCLUDE_FX_AGG_DRIVER_H_
+#endif // CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_
diff --git a/core/src/fxge/apple/fx_apple_platform.cpp b/core/src/fxge/apple/fx_apple_platform.cpp
index 5108f7ecc2..f56ea44e92 100644
--- a/core/src/fxge/apple/fx_apple_platform.cpp
+++ b/core/src/fxge/apple/fx_apple_platform.cpp
@@ -11,7 +11,7 @@
#include "core/include/fxge/fx_freetype.h"
#include "core/include/fxge/fx_ge_apple.h"
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include "core/src/fxge/apple/apple_int.h"
#include "core/src/fxge/dib/dib_int.h"
#include "core/src/fxge/ge/fx_text_int.h"
diff --git a/core/src/fxge/apple/fx_quartz_device.cpp b/core/src/fxge/apple/fx_quartz_device.cpp
index e77daff9fb..2beca42efe 100644
--- a/core/src/fxge/apple/fx_quartz_device.cpp
+++ b/core/src/fxge/apple/fx_quartz_device.cpp
@@ -7,7 +7,7 @@
#include "core/include/fxcrt/fx_ext.h"
#include "core/include/fxge/fx_freetype.h"
#include "core/include/fxge/fx_ge.h"
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include "core/src/fxge/dib/dib_int.h"
#include "core/src/fxge/ge/fx_text_int.h"
diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp
index 8ad5ff0da2..0166266564 100644
--- a/core/src/fxge/ge/fx_ge_linux.cpp
+++ b/core/src/fxge/ge/fx_ge_linux.cpp
@@ -5,7 +5,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include "core/include/fxge/fx_ge.h"
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include "core/src/fxge/ge/fx_text_int.h"
#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_
diff --git a/core/src/fxge/skia/fx_skia_device.cpp b/core/src/fxge/skia/fx_skia_device.cpp
index 6bfa05f342..9938298c12 100644
--- a/core/src/fxge/skia/fx_skia_device.cpp
+++ b/core/src/fxge/skia/fx_skia_device.cpp
@@ -7,7 +7,7 @@
#if defined(_SKIA_SUPPORT_)
#include "core/include/fxcodec/fx_codec.h"
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include "core/src/fxge/skia/fx_skia_device.h"
#include "SkCanvas.h"
diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp
index 99b5540774..cdfc21bddc 100644
--- a/core/src/fxge/win32/fx_win32_device.cpp
+++ b/core/src/fxge/win32/fx_win32_device.cpp
@@ -12,7 +12,7 @@
#include "core/include/fxcodec/fx_codec.h"
#include "core/include/fxge/fx_freetype.h"
#include "core/include/fxge/fx_ge_win32.h"
-#include "core/src/fxge/agg/include/fx_agg_driver.h"
+#include "core/src/fxge/agg/fx_agg_driver.h"
#include "core/src/fxge/dib/dib_int.h"
#include "core/src/fxge/ge/fx_text_int.h"
#include "core/src/fxge/win32/dwrite_int.h"