Index: core/src/fxge/agg/fx_agg_driver.cpp |
diff --git a/core/src/fxge/agg/src/fx_agg_driver.cpp b/core/src/fxge/agg/fx_agg_driver.cpp |
similarity index 99% |
rename from core/src/fxge/agg/src/fx_agg_driver.cpp |
rename to core/src/fxge/agg/fx_agg_driver.cpp |
index 8b0e3f94f4db6997d97ab4c0b64ad62678cae1e0..16cf705585a0abc34fb7137db775f5b30271781a 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(); |