summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render.cpp34
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_image.cpp29
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp4
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_text.cpp3
-rw-r--r--core/fpdfapi/fpdf_render/render_int.h11
-rw-r--r--core/fxge/agg/fx_agg_driver.cpp16
-rw-r--r--core/fxge/agg/fx_agg_driver.h2
-rw-r--r--core/fxge/dib/fx_dib_main.cpp85
-rw-r--r--core/fxge/ge/fx_ge_device.cpp2
-rw-r--r--core/fxge/include/fx_dib.h11
-rw-r--r--core/fxge/include/fx_ge.h12
-rw-r--r--core/fxge/skia/fx_skia_device.cpp14
-rw-r--r--core/fxge/skia/fx_skia_device.h4
-rw-r--r--fpdfsdk/fpdf_progressive.cpp11
-rw-r--r--fpdfsdk/fpdfformfill.cpp181
-rw-r--r--fpdfsdk/fpdfview.cpp38
-rw-r--r--fpdfsdk/include/fsdk_define.h2
-rw-r--r--xfa/fde/tto/fde_textout.cpp3
-rw-r--r--xfa/fwl/theme/cfwl_formtp.cpp4
-rw-r--r--xfa/fxbarcode/oned/BC_OneDimWriter.cpp10
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN13Writer.cpp22
-rw-r--r--xfa/fxbarcode/oned/BC_OnedEAN8Writer.cpp21
-rw-r--r--xfa/fxbarcode/oned/BC_OnedUPCAWriter.cpp29
-rw-r--r--xfa/fxgraphics/cagg_graphics.cpp2
-rw-r--r--xfa/fxgraphics/cfx_graphics.cpp2
25 files changed, 216 insertions, 336 deletions
diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp
index b69863b5b0..a3dbbdb3f2 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -142,7 +142,6 @@ CPDF_RenderStatus::CPDF_RenderStatus()
m_HalftoneLimit(0),
m_bPrint(FALSE),
m_Transparency(0),
- m_DitherBits(0),
m_bDropObjects(FALSE),
m_bStdCS(FALSE),
m_GroupFamily(0),
@@ -170,7 +169,6 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext,
FX_BOOL bLoadMask) {
m_pContext = pContext;
m_pDevice = pDevice;
- m_DitherBits = pDevice->GetDeviceCaps(FXDC_DITHER_BITS);
m_bPrint = m_pDevice->GetDeviceClass() != FXDC_DISPLAY;
if (pDeviceMatrix) {
m_DeviceMatrix = *pDeviceMatrix;
@@ -320,28 +318,6 @@ FX_BOOL CPDF_RenderStatus::GetObjectClippedRect(const CPDF_PageObject* pObj,
rect.Intersect(rtClip);
return rect.IsEmpty();
}
-void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj,
- const CFX_Matrix* pObj2Device) {
- CFX_DIBitmap* pBitmap = m_pDevice->GetBitmap();
- if (!pBitmap) {
- return;
- }
- FX_RECT rect;
- if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) {
- return;
- }
- if (m_DitherBits == 2) {
- static FX_ARGB pal[4] = {0, 85, 170, 255};
- pBitmap->DitherFS(pal, 4, &rect);
- } else if (m_DitherBits == 3) {
- static FX_ARGB pal[8] = {0, 36, 73, 109, 146, 182, 219, 255};
- pBitmap->DitherFS(pal, 8, &rect);
- } else if (m_DitherBits == 4) {
- static FX_ARGB pal[16] = {0, 17, 34, 51, 68, 85, 102, 119,
- 136, 153, 170, 187, 204, 221, 238, 255};
- pBitmap->DitherFS(pal, 16, &rect);
- }
-}
void CPDF_RenderStatus::ProcessObjectNoClip(const CPDF_PageObject* pObj,
const CFX_Matrix* pObj2Device) {
@@ -788,7 +764,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj,
m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top);
}
- if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get()))
+ if (!bitmap_device.Create(width, height, FXDIB_Argb, oriDevice.get()))
return TRUE;
CFX_DIBitmap* bitmap = bitmap_device.GetBitmap();
@@ -804,7 +780,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj,
pTextMask->Clear(0);
CFX_FxgeDevice text_device;
- text_device.Attach(pTextMask.get());
+ text_device.Attach(pTextMask.get(), false, nullptr, false);
for (uint32_t i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) {
CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
if (!textobj) {
@@ -890,7 +866,7 @@ CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj,
FinalMatrix.Scale(scaleX, scaleY);
pBackdrop->Clear(pBackdrop->HasAlpha() ? 0 : 0xffffffff);
CFX_FxgeDevice device;
- device.Attach(pBackdrop.get());
+ device.Attach(pBackdrop.get(), false, nullptr, false);
m_pContext->Render(&device, pObj, &m_Options, &FinalMatrix);
return pBackdrop.release();
}
@@ -900,7 +876,7 @@ void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer,
const CPDF_RenderOptions* pOptions,
CFX_Matrix* pFinalMatrix) {
CFX_FxgeDevice device;
- device.Attach(pBuffer);
+ device.Attach(pBuffer, false, nullptr, false);
FX_RECT rect(0, 0, device.GetWidth(), device.GetHeight());
device.FillRect(&rect, 0xffffffff);
@@ -1282,7 +1258,7 @@ FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext,
return FALSE;
if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ &&
- m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) {
+ m_pBitmapDevice->Create(iWidth, iHeight, dibFormat, nullptr)) {
break;
}
m_Matrix.Scale(0.5f, 0.5f);
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
index f7e57c0fa6..d3fbb7990c 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
@@ -523,9 +523,9 @@ FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) {
int width = rect.Width();
int height = rect.Height();
CFX_FxgeDevice bitmap_device1;
- if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) {
+ if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32, nullptr))
return TRUE;
- }
+
bitmap_device1.GetBitmap()->Clear(0xffffff);
{
CPDF_RenderStatus bitmap_render;
@@ -545,7 +545,8 @@ FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) {
}
{
CFX_FxgeDevice bitmap_device2;
- if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb)) {
+ if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb,
+ nullptr)) {
return TRUE;
}
bitmap_device2.GetBitmap()->Clear(0);
@@ -621,9 +622,9 @@ FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
int width = rect.Width();
int height = rect.Height();
CFX_FxgeDevice bitmap_device1;
- if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) {
+ if (!bitmap_device1.Create(width, height, FXDIB_Rgb32, nullptr))
return TRUE;
- }
+
bitmap_device1.GetBitmap()->Clear(0xffffff);
{
CPDF_RenderStatus bitmap_render;
@@ -638,9 +639,9 @@ FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
}
{
CFX_FxgeDevice bitmap_device2;
- if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) {
+ if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb, nullptr))
return TRUE;
- }
+
bitmap_device2.GetBitmap()->Clear(0);
CPDF_RenderStatus bitmap_render;
bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL,
@@ -900,17 +901,15 @@ CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict,
FX_BOOL bLuminosity = pSMaskDict->GetStringBy("S") != "Alpha";
int width = pClipRect->right - pClipRect->left;
int height = pClipRect->bottom - pClipRect->top;
+ FXDIB_Format format;
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
- if (!bitmap_device.Create(width, height,
- bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask)) {
- return NULL;
- }
+ format = bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask;
#else
- if (!bitmap_device.Create(width, height,
- bLuminosity ? FXDIB_Rgb : FXDIB_8bppMask)) {
- return NULL;
- }
+ format = bLuminosity ? FXDIB_Rgb : FXDIB_8bppMask;
#endif
+ if (!bitmap_device.Create(width, height, format, nullptr))
+ return nullptr;
+
CFX_DIBitmap& bitmap = *bitmap_device.GetBitmap();
CPDF_Object* pCSObj = NULL;
CPDF_ColorSpace* pCS = NULL;
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp
index 393b993e35..754394da70 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp
@@ -752,7 +752,7 @@ void DrawCoonPatchMeshes(
ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
CFX_FxgeDevice device;
- device.Attach(pBitmap);
+ device.Attach(pBitmap, false, nullptr, false);
CPDF_MeshStream stream(funcs, pCS);
if (!stream.Load(pShadingStream))
return;
@@ -830,7 +830,7 @@ std::unique_ptr<CFX_DIBitmap> DrawPatternBitmap(
return std::unique_ptr<CFX_DIBitmap>();
}
CFX_FxgeDevice bitmap_device;
- bitmap_device.Attach(pBitmap.get());
+ bitmap_device.Attach(pBitmap.get(), false, nullptr, false);
pBitmap->Clear(0);
CFX_FloatRect cell_bbox = pPattern->bbox();
pPattern->pattern_to_form()->TransformRect(cell_bbox);
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
index e4ee49afc9..a3df1c2214 100644
--- a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
+++ b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
@@ -437,7 +437,8 @@ FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj,
FX_RECT rect = rect_f.GetOutterRect();
CFX_FxgeDevice bitmap_device;
if (!bitmap_device.Create((int)(rect.Width() * sa),
- (int)(rect.Height() * sd), FXDIB_Argb)) {
+ (int)(rect.Height() * sd), FXDIB_Argb,
+ nullptr)) {
return TRUE;
}
bitmap_device.GetBitmap()->Clear(0);
diff --git a/core/fpdfapi/fpdf_render/render_int.h b/core/fpdfapi/fpdf_render/render_int.h
index 46689d3b68..98822797b0 100644
--- a/core/fpdfapi/fpdf_render/render_int.h
+++ b/core/fpdfapi/fpdf_render/render_int.h
@@ -123,6 +123,7 @@ class CPDF_RenderStatus {
public:
CPDF_RenderStatus();
~CPDF_RenderStatus();
+
FX_BOOL Initialize(class CPDF_RenderContext* pContext,
CFX_RenderDevice* pDevice,
const CFX_Matrix* pDeviceMatrix,
@@ -155,6 +156,7 @@ class CPDF_RenderStatus {
protected:
friend class CPDF_ImageRenderer;
friend class CPDF_RenderContext;
+
void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj,
@@ -242,20 +244,17 @@ class CPDF_RenderStatus {
FX_ARGB GetFillArgb(const CPDF_PageObject* pObj,
FX_BOOL bType3 = FALSE) const;
FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const;
- CPDF_RenderContext* m_pContext;
- FX_BOOL m_bStopped;
- void DitherObjectArea(const CPDF_PageObject* pObj,
- const CFX_Matrix* pObj2Device);
FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj,
const CFX_Matrix* pObj2Device,
FX_BOOL bLogical,
FX_RECT& rect) const;
void GetScaledMatrix(CFX_Matrix& matrix) const;
- protected:
static const int kRenderMaxRecursionDepth = 64;
static int s_CurrentRecursionDepth;
+ CPDF_RenderContext* m_pContext;
+ FX_BOOL m_bStopped;
CFX_RenderDevice* m_pDevice;
CFX_Matrix m_DeviceMatrix;
CPDF_ClipPath m_LastClipPath;
@@ -266,7 +265,6 @@ class CPDF_RenderStatus {
std::unique_ptr<CPDF_ImageRenderer> m_pImageRenderer;
FX_BOOL m_bPrint;
int m_Transparency;
- int m_DitherBits;
FX_BOOL m_bDropObjects;
FX_BOOL m_bStdCS;
uint32_t m_GroupFamily;
@@ -275,6 +273,7 @@ class CPDF_RenderStatus {
FX_ARGB m_T3FillColor;
int m_curBlend;
};
+
class CPDF_ImageLoader {
public:
CPDF_ImageLoader()
diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp
index 86326f6caf..d7a9ddb530 100644
--- a/core/fxge/agg/fx_agg_driver.cpp
+++ b/core/fxge/agg/fx_agg_driver.cpp
@@ -189,17 +189,15 @@ IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver(
FX_BOOL bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
FX_BOOL bGroupKnockout) {
- return new CFX_AggDeviceDriver(pBitmap, 0, bRgbByteOrder, pOriDevice,
+ return new CFX_AggDeviceDriver(pBitmap, bRgbByteOrder, pOriDevice,
bGroupKnockout);
}
CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
- int dither_bits,
FX_BOOL bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
FX_BOOL bGroupKnockout) {
m_pBitmap = pBitmap;
- m_DitherBits = dither_bits;
m_pClipRgn = nullptr;
m_pPlatformBitmap = nullptr;
m_pPlatformGraphics = nullptr;
@@ -270,8 +268,6 @@ int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) {
}
return flags;
}
- case FXDC_DITHER_BITS:
- return m_DitherBits;
}
return 0;
}
@@ -1784,16 +1780,15 @@ CFX_FxgeDevice::CFX_FxgeDevice() {
}
bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
- int dither_bits,
bool bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
bool bGroupKnockout) {
- if (!pBitmap) {
+ if (!pBitmap)
return false;
- }
+
SetBitmap(pBitmap);
IFX_RenderDeviceDriver* pDriver = new CFX_AggDeviceDriver(
- pBitmap, dither_bits, bRgbByteOrder, pOriDevice, bGroupKnockout);
+ pBitmap, bRgbByteOrder, pOriDevice, bGroupKnockout);
SetDeviceDriver(pDriver);
return true;
}
@@ -1801,7 +1796,6 @@ bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
bool CFX_FxgeDevice::Create(int width,
int height,
FXDIB_Format format,
- int dither_bits,
CFX_DIBitmap* pOriDevice) {
m_bOwnedBitmap = true;
CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
@@ -1811,7 +1805,7 @@ bool CFX_FxgeDevice::Create(int width,
}
SetBitmap(pBitmap);
IFX_RenderDeviceDriver* pDriver =
- new CFX_AggDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE);
+ new CFX_AggDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE);
SetDeviceDriver(pDriver);
return true;
}
diff --git a/core/fxge/agg/fx_agg_driver.h b/core/fxge/agg/fx_agg_driver.h
index a33bc09937..3462b61bb2 100644
--- a/core/fxge/agg/fx_agg_driver.h
+++ b/core/fxge/agg/fx_agg_driver.h
@@ -28,7 +28,6 @@ class CAgg_PathData {
class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver {
public:
CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap,
- int dither_bits,
FX_BOOL bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
FX_BOOL bGroupKnockout);
@@ -144,7 +143,6 @@ class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver {
void* m_pPlatformBitmap;
void* m_pDwRenderTartget;
int m_FillFlags;
- int m_DitherBits;
FX_BOOL m_bRgbByteOrder;
CFX_DIBitmap* m_pOriDevice;
FX_BOOL m_bGroupKnockout;
diff --git a/core/fxge/dib/fx_dib_main.cpp b/core/fxge/dib/fx_dib_main.cpp
index ad6ee0c4e7..85df71e11d 100644
--- a/core/fxge/dib/fx_dib_main.cpp
+++ b/core/fxge/dib/fx_dib_main.cpp
@@ -1371,90 +1371,7 @@ FX_BOOL CFX_DIBitmap::ConvertColorScale(uint32_t forecolor,
}
return TRUE;
}
-FX_BOOL CFX_DIBitmap::DitherFS(const uint32_t* pPalette,
- int pal_size,
- const FX_RECT* pRect) {
- if (!m_pBuffer) {
- return FALSE;
- }
- if (m_bpp != 8 && m_pPalette && m_AlphaFlag != 0) {
- return FALSE;
- }
- if (m_Width < 4 && m_Height < 4) {
- return FALSE;
- }
- FX_RECT rect(0, 0, m_Width, m_Height);
- if (pRect) {
- rect.Intersect(*pRect);
- }
- uint8_t translate[256];
- for (int i = 0; i < 256; i++) {
- int err2 = 65536;
- for (int j = 0; j < pal_size; j++) {
- uint8_t entry = (uint8_t)pPalette[j];
- int err = (int)entry - i;
- if (err * err < err2) {
- err2 = err * err;
- translate[i] = entry;
- }
- }
- }
- for (int row = rect.top; row < rect.bottom; row++) {
- uint8_t* scan = m_pBuffer + row * m_Pitch;
- uint8_t* next_scan = m_pBuffer + (row + 1) * m_Pitch;
- for (int col = rect.left; col < rect.right; col++) {
- int src_pixel = scan[col];
- int dest_pixel = translate[src_pixel];
- scan[col] = (uint8_t)dest_pixel;
- int error = -dest_pixel + src_pixel;
- if (col < rect.right - 1) {
- int src = scan[col + 1];
- src += error * 7 / 16;
- if (src > 255) {
- scan[col + 1] = 255;
- } else if (src < 0) {
- scan[col + 1] = 0;
- } else {
- scan[col + 1] = src;
- }
- }
- if (col < rect.right - 1 && row < rect.bottom - 1) {
- int src = next_scan[col + 1];
- src += error * 1 / 16;
- if (src > 255) {
- next_scan[col + 1] = 255;
- } else if (src < 0) {
- next_scan[col + 1] = 0;
- } else {
- next_scan[col + 1] = src;
- }
- }
- if (row < rect.bottom - 1) {
- int src = next_scan[col];
- src += error * 5 / 16;
- if (src > 255) {
- next_scan[col] = 255;
- } else if (src < 0) {
- next_scan[col] = 0;
- } else {
- next_scan[col] = src;
- }
- }
- if (col > rect.left && row < rect.bottom - 1) {
- int src = next_scan[col - 1];
- src += error * 3 / 16;
- if (src > 255) {
- next_scan[col - 1] = 255;
- } else if (src < 0) {
- next_scan[col - 1] = 0;
- } else {
- next_scan[col - 1] = src;
- }
- }
- }
- }
- return TRUE;
-}
+
CFX_DIBitmap* CFX_DIBSource::FlipImage(FX_BOOL bXFlip, FX_BOOL bYFlip) const {
CFX_DIBitmap* pFlipped = new CFX_DIBitmap;
if (!pFlipped->Create(m_Width, m_Height, GetFormat())) {
diff --git a/core/fxge/ge/fx_ge_device.cpp b/core/fxge/ge/fx_ge_device.cpp
index d6c7b18b47..b9bd133e57 100644
--- a/core/fxge/ge/fx_ge_device.cpp
+++ b/core/fxge/ge/fx_ge_device.cpp
@@ -261,7 +261,7 @@ FX_BOOL CFX_RenderDevice::DrawFillStrokePath(
Backdrop.Copy(&bitmap);
}
CFX_FxgeDevice bitmap_device;
- bitmap_device.Attach(&bitmap, 0, FALSE, &Backdrop, TRUE);
+ bitmap_device.Attach(&bitmap, false, &Backdrop, true);
CFX_Matrix matrix;
if (pObject2Device) {
matrix = *pObject2Device;
diff --git a/core/fxge/include/fx_dib.h b/core/fxge/include/fx_dib.h
index 6504e5fd8f..12ed03c1d3 100644
--- a/core/fxge/include/fx_dib.h
+++ b/core/fxge/include/fx_dib.h
@@ -256,6 +256,7 @@ class CFX_DIBSource {
int FindPalette(uint32_t color) const;
void GetPalette(uint32_t* pal, int alpha) const;
};
+
class CFX_DIBitmap : public CFX_DIBSource {
public:
CFX_DIBitmap();
@@ -357,17 +358,13 @@ class CFX_DIBitmap : public CFX_DIBSource {
FX_BOOL ConvertColorScale(uint32_t forecolor, uint32_t backcolor);
- FX_BOOL DitherFS(const uint32_t* pPalette,
- int pal_size,
- const FX_RECT* pRect = NULL);
-
protected:
- uint8_t* m_pBuffer;
+ FX_BOOL GetGrayData(void* pIccTransform = NULL);
+ uint8_t* m_pBuffer;
FX_BOOL m_bExtBuf;
-
- FX_BOOL GetGrayData(void* pIccTransform = NULL);
};
+
class CFX_DIBExtractor {
public:
CFX_DIBExtractor(const CFX_DIBSource* pSrc);
diff --git a/core/fxge/include/fx_ge.h b/core/fxge/include/fx_ge.h
index c025c1251e..6a3113d070 100644
--- a/core/fxge/include/fx_ge.h
+++ b/core/fxge/include/fx_ge.h
@@ -161,7 +161,6 @@ class CFX_GraphStateData {
#define FXDC_HORZ_SIZE 5
#define FXDC_VERT_SIZE 6
#define FXDC_RENDER_CAPS 7
-#define FXDC_DITHER_BITS 8
#define FXDC_DISPLAY 1
#define FXDC_PRINTER 2
#define FXRC_GET_BITS 0x01
@@ -402,16 +401,13 @@ class CFX_FxgeDevice : public CFX_RenderDevice {
~CFX_FxgeDevice() override;
bool Attach(CFX_DIBitmap* pBitmap,
- int dither_bits = 0,
- bool bRgbByteOrder = false,
- CFX_DIBitmap* pOriDevice = NULL,
- bool bGroupKnockout = false);
-
+ bool bRgbByteOrder,
+ CFX_DIBitmap* pOriDevice,
+ bool bGroupKnockout);
bool Create(int width,
int height,
FXDIB_Format format,
- int dither_bits = 0,
- CFX_DIBitmap* pOriDevice = NULL);
+ CFX_DIBitmap* pOriDevice);
#ifdef _SKIA_SUPPORT_
bool AttachRecorder(SkPictureRecorder* recorder);
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index e64dfd0a73..452472e40c 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -500,14 +500,12 @@ void CFX_SkiaDeviceDriver::PaintStroke(SkPaint* spaint,
}
CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap,
- int dither_bits,
FX_BOOL bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
FX_BOOL bGroupKnockout)
: m_pBitmap(pBitmap),
m_pOriDevice(pOriDevice),
m_pRecorder(nullptr),
- m_ditherBits(dither_bits),
m_bRgbByteOrder(bRgbByteOrder),
m_bGroupKnockout(bGroupKnockout) {
SkBitmap skBitmap;
@@ -526,7 +524,6 @@ CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(int size_x, int size_y)
: m_pBitmap(nullptr),
m_pOriDevice(nullptr),
m_pRecorder(new SkPictureRecorder),
- m_ditherBits(0),
m_bRgbByteOrder(FALSE),
m_bGroupKnockout(FALSE) {
m_pRecorder->beginRecording(SkIntToScalar(size_x), SkIntToScalar(size_y));
@@ -537,7 +534,6 @@ CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(SkPictureRecorder* recorder)
: m_pBitmap(nullptr),
m_pOriDevice(nullptr),
m_pRecorder(recorder),
- m_ditherBits(0),
m_bRgbByteOrder(FALSE),
m_bGroupKnockout(FALSE) {
m_pCanvas = m_pRecorder->getRecordingCanvas();
@@ -594,8 +590,6 @@ int CFX_SkiaDeviceDriver::GetDeviceCaps(int caps_id) {
return FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE |
FXRC_BLEND_MODE | FXRC_SOFT_CLIP | FXRC_ALPHA_OUTPUT |
FXRC_FILLSTROKE_PATH | FXRC_SHADING;
- case FXDC_DITHER_BITS:
- return m_ditherBits;
}
return 0;
}
@@ -1095,15 +1089,14 @@ SkPictureRecorder* CFX_FxgeDevice::CreateRecorder(int size_x, int size_y) {
}
bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap,
- int dither_bits,
bool bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
bool bGroupKnockout) {
if (!pBitmap)
return false;
SetBitmap(pBitmap);
- SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, dither_bits, bRgbByteOrder,
- pOriDevice, bGroupKnockout));
+ SetDeviceDriver(new CFX_SkiaDeviceDriver(pBitmap, bRgbByteOrder, pOriDevice,
+ bGroupKnockout));
return true;
}
@@ -1117,7 +1110,6 @@ bool CFX_FxgeDevice::AttachRecorder(SkPictureRecorder* recorder) {
bool CFX_FxgeDevice::Create(int width,
int height,
FXDIB_Format format,
- int dither_bits,
CFX_DIBitmap* pOriDevice) {
m_bOwnedBitmap = TRUE;
CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
@@ -1127,7 +1119,7 @@ bool CFX_FxgeDevice::Create(int width,
}
SetBitmap(pBitmap);
CFX_SkiaDeviceDriver* pDriver =
- new CFX_SkiaDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE);
+ new CFX_SkiaDeviceDriver(pBitmap, FALSE, pOriDevice, FALSE);
SetDeviceDriver(pDriver);
return true;
}
diff --git a/core/fxge/skia/fx_skia_device.h b/core/fxge/skia/fx_skia_device.h
index 79097ade18..dd3ba420e8 100644
--- a/core/fxge/skia/fx_skia_device.h
+++ b/core/fxge/skia/fx_skia_device.h
@@ -17,11 +17,10 @@ struct SkIRect;
class CFX_SkiaDeviceDriver : public IFX_RenderDeviceDriver {
public:
CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap,
- int dither_bits,
FX_BOOL bRgbByteOrder,
CFX_DIBitmap* pOriDevice,
FX_BOOL bGroupKnockout);
- CFX_SkiaDeviceDriver(SkPictureRecorder* recorder);
+ explicit CFX_SkiaDeviceDriver(SkPictureRecorder* recorder);
CFX_SkiaDeviceDriver(int size_x, int size_y);
~CFX_SkiaDeviceDriver() override;
@@ -145,7 +144,6 @@ class CFX_SkiaDeviceDriver : public IFX_RenderDeviceDriver {
CFX_DIBitmap* m_pOriDevice;
SkCanvas* m_pCanvas;
SkPictureRecorder* const m_pRecorder;
- int m_ditherBits;
FX_BOOL m_bRgbByteOrder;
FX_BOOL m_bGroupKnockout;
};
diff --git a/fpdfsdk/fpdf_progressive.cpp b/fpdfsdk/fpdf_progressive.cpp
index c66807cc91..efde1eb029 100644
--- a/fpdfsdk/fpdf_progressive.cpp
+++ b/fpdfsdk/fpdf_progressive.cpp
@@ -42,13 +42,10 @@ DLLEXPORT int STDCALL FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap,
CRenderContext* pContext = new CRenderContext;
pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
- pContext->m_pDevice = new CFX_FxgeDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER) {
- ((CFX_FxgeDevice*)pContext->m_pDevice)
- ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
- } else {
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
- }
+ CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
+ pContext->m_pDevice = pDevice;
+ CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap);
+ pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false);
IFSDK_PAUSE_Adapter IPauseAdapter(pause);
FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
diff --git a/fpdfsdk/fpdfformfill.cpp b/fpdfsdk/fpdfformfill.cpp
index 6bcb605794..2631eb3e4f 100644
--- a/fpdfsdk/fpdfformfill.cpp
+++ b/fpdfsdk/fpdfformfill.cpp
@@ -55,6 +55,94 @@ FPDF_STRINGHANDLE ToFPDFStringHandle(std::vector<CFX_ByteString>* strings) {
}
#endif // PDF_ENABLE_XFA
+void FFLCommon(FPDF_FORMHANDLE hHandle,
+ FPDF_BITMAP bitmap,
+ FPDF_RECORDER recorder,
+ FPDF_PAGE page,
+ int start_x,
+ int start_y,
+ int size_x,
+ int size_y,
+ int rotate,
+ int flags) {
+ if (!hHandle)
+ return;
+
+ UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
+ if (!pPage)
+ return;
+
+#ifndef PDF_ENABLE_XFA
+ CPDF_RenderOptions options;
+ if (flags & FPDF_LCD_TEXT)
+ options.m_Flags |= RENDER_CLEARTYPE;
+ else
+ options.m_Flags &= ~RENDER_CLEARTYPE;
+ // Grayscale output
+ if (flags & FPDF_GRAYSCALE) {
+ options.m_ColorMode = RENDER_COLOR_GRAY;
+ options.m_ForeColor = 0;
+ options.m_BackColor = 0xffffff;
+ }
+ options.m_AddFlags = flags >> 8;
+ options.m_pOCContext =
+ new CPDF_OCContext(pPage->m_pDocument, CPDF_OCContext::View);
+#else // PDF_ENABLE_XFA
+ CPDFXFA_Document* pDocument = pPage->GetDocument();
+ if (!pDocument)
+ return;
+ CPDF_Document* pPDFDoc = pDocument->GetPDFDoc();
+ if (!pPDFDoc)
+ return;
+ CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
+ CPDFSDK_Document* pFXDoc = pEnv->GetSDKDocument();
+ if (!pFXDoc)
+ return;
+#endif // PDF_ENABLE_XFA
+
+ CFX_Matrix matrix;
+ pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
+
+ FX_RECT clip(start_x, start_y, start_x + size_x, start_y + size_y);
+
+ std::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice);
+#ifdef _SKIA_SUPPORT_
+ pDevice->AttachRecorder(static_cast<SkPictureRecorder*>(recorder));
+#endif
+ pDevice->Attach(CFXBitmapFromFPDFBitmap(bitmap), false, nullptr, false);
+ pDevice->SaveState();
+ pDevice->SetClip_Rect(clip);
+
+#ifndef PDF_ENABLE_XFA
+ if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
+ pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
+#else // PDF_ENABLE_XFA
+ CPDF_RenderOptions options;
+ if (flags & FPDF_LCD_TEXT)
+ options.m_Flags |= RENDER_CLEARTYPE;
+ else
+ options.m_Flags &= ~RENDER_CLEARTYPE;
+
+ // Grayscale output
+ if (flags & FPDF_GRAYSCALE) {
+ options.m_ColorMode = RENDER_COLOR_GRAY;
+ options.m_ForeColor = 0;
+ options.m_BackColor = 0xffffff;
+ }
+ options.m_AddFlags = flags >> 8;
+ options.m_pOCContext = new CPDF_OCContext(pPDFDoc, CPDF_OCContext::View);
+
+ if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage))
+ pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip);
+#endif // PDF_ENABLE_XFA
+
+ pDevice->RestoreState(false);
+ delete options.m_pOCContext;
+#ifdef PDF_ENABLE_XFA
+ options.m_pOCContext = NULL;
+#endif // PDF_ENABLE_XFA
+}
+
} // namespace
DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
@@ -293,94 +381,6 @@ DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) {
return pSDKDoc->KillFocusAnnot(0);
}
-static void FFLCommon(FPDF_FORMHANDLE hHandle,
- FPDF_BITMAP bitmap,
- FPDF_RECORDER recorder,
- FPDF_PAGE page,
- int start_x,
- int start_y,
- int size_x,
- int size_y,
- int rotate,
- int flags) {
- if (!hHandle)
- return;
-
- UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
- if (!pPage)
- return;
-
-#ifndef PDF_ENABLE_XFA
- CPDF_RenderOptions options;
- if (flags & FPDF_LCD_TEXT)
- options.m_Flags |= RENDER_CLEARTYPE;
- else
- options.m_Flags &= ~RENDER_CLEARTYPE;
- // Grayscale output
- if (flags & FPDF_GRAYSCALE) {
- options.m_ColorMode = RENDER_COLOR_GRAY;
- options.m_ForeColor = 0;
- options.m_BackColor = 0xffffff;
- }
- options.m_AddFlags = flags >> 8;
- options.m_pOCContext =
- new CPDF_OCContext(pPage->m_pDocument, CPDF_OCContext::View);
-#else // PDF_ENABLE_XFA
- CPDFXFA_Document* pDocument = pPage->GetDocument();
- if (!pDocument)
- return;
- CPDF_Document* pPDFDoc = pDocument->GetPDFDoc();
- if (!pPDFDoc)
- return;
- CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
- CPDFSDK_Document* pFXDoc = pEnv->GetSDKDocument();
- if (!pFXDoc)
- return;
-#endif // PDF_ENABLE_XFA
-
- CFX_Matrix matrix;
- pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate);
-
- FX_RECT clip(start_x, start_y, start_x + size_x, start_y + size_y);
-
- std::unique_ptr<CFX_FxgeDevice> pDevice(new CFX_FxgeDevice);
-#ifdef _SKIA_SUPPORT_
- pDevice->AttachRecorder(static_cast<SkPictureRecorder*>(recorder));
-#endif
- pDevice->Attach((CFX_DIBitmap*)bitmap);
- pDevice->SaveState();
- pDevice->SetClip_Rect(clip);
-
-#ifndef PDF_ENABLE_XFA
- if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, pPage))
- pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options);
-#else // PDF_ENABLE_XFA
- CPDF_RenderOptions options;
- if (flags & FPDF_LCD_TEXT)
- options.m_Flags |= RENDER_CLEARTYPE;
- else
- options.m_Flags &= ~RENDER_CLEARTYPE;
-
- // Grayscale output
- if (flags & FPDF_GRAYSCALE) {
- options.m_ColorMode = RENDER_COLOR_GRAY;
- options.m_ForeColor = 0;
- options.m_BackColor = 0xffffff;
- }
- options.m_AddFlags = flags >> 8;
- options.m_pOCContext = new CPDF_OCContext(pPDFDoc, CPDF_OCContext::View);
-
- if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage))
- pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip);
-#endif // PDF_ENABLE_XFA
-
- pDevice->RestoreState(false);
- delete options.m_pOCContext;
-#ifdef PDF_ENABLE_XFA
- options.m_pOCContext = NULL;
-#endif // PDF_ENABLE_XFA
-}
-
DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
FPDF_BITMAP bitmap,
FPDF_PAGE page,
@@ -464,7 +464,7 @@ DLLEXPORT void STDCALL FPDF_Widget_Copy(FPDF_DOCUMENT document,
CFX_ByteString bsCpText = wsCpText.UTF16LE_Encode();
uint32_t len = bsCpText.GetLength() / sizeof(unsigned short);
- if (wsText == NULL) {
+ if (!wsText) {
*size = len;
return;
}
@@ -483,8 +483,9 @@ DLLEXPORT void STDCALL FPDF_Widget_Cut(FPDF_DOCUMENT document,
FPDF_WIDGET hWidget,
FPDF_WIDESTRING wsText,
FPDF_DWORD* size) {
- if (NULL == hWidget || NULL == document)
+ if (!hWidget || !document)
return;
+
CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
if (pDocument->GetDocType() != XFA_DOCTYPE_Dynamic &&
pDocument->GetDocType() != XFA_DOCTYPE_Static)
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index 7797165bc2..24cd8ef5c4 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -74,6 +74,10 @@ CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) {
#endif // PDF_ENABLE_XFA
}
+CFX_DIBitmap* CFXBitmapFromFPDFBitmap(FPDF_BITMAP bitmap) {
+ return static_cast<CFX_DIBitmap*>(bitmap);
+}
+
#ifdef PDF_ENABLE_XFA
CFPDF_FileStream::CFPDF_FileStream(FPDF_FILEHANDLER* pFS) {
m_pFS = pFS;
@@ -544,14 +548,15 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc,
pBitmap = new CFX_DIBitmap;
pBitmap->Create(size_x, size_y, FXDIB_Argb);
pBitmap->Clear(0x00ffffff);
- pContext->m_pDevice = new CFX_FxgeDevice;
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
+ CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
+ pContext->m_pDevice = pDevice;
+ pDevice->Attach(pBitmap, false, nullptr, false);
} else {
pContext->m_pDevice = new CFX_WindowsDevice(dc);
}
FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
- rotate, flags, TRUE, NULL);
+ rotate, flags, TRUE, nullptr);
if (bBackgroundAlphaNeeded || bHasImageMask) {
if (pBitmap) {
@@ -595,13 +600,10 @@ DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
CRenderContext* pContext = new CRenderContext;
pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
- pContext->m_pDevice = new CFX_FxgeDevice;
- if (flags & FPDF_REVERSE_BYTE_ORDER) {
- ((CFX_FxgeDevice*)pContext->m_pDevice)
- ->Attach((CFX_DIBitmap*)bitmap, 0, TRUE);
- } else {
- ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bitmap);
- }
+ CFX_FxgeDevice* pDevice = new CFX_FxgeDevice;
+ pContext->m_pDevice = pDevice;
+ CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap);
+ pDevice->Attach(pBitmap, !!(flags & FPDF_REVERSE_BYTE_ORDER), nullptr, false);
FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
rotate, flags, TRUE, nullptr);
@@ -771,32 +773,34 @@ DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap,
FPDF_DWORD color) {
if (!bitmap)
return;
+
CFX_FxgeDevice device;
- device.Attach((CFX_DIBitmap*)bitmap);
- if (!((CFX_DIBitmap*)bitmap)->HasAlpha())
+ CFX_DIBitmap* pBitmap = CFXBitmapFromFPDFBitmap(bitmap);
+ device.Attach(pBitmap, false, nullptr, false);
+ if (!pBitmap->HasAlpha())
color |= 0xFF000000;
FX_RECT rect(left, top, left + width, top + height);
device.FillRect(&rect, color);
}
DLLEXPORT void* STDCALL FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap) {
- return bitmap ? ((CFX_DIBitmap*)bitmap)->GetBuffer() : nullptr;
+ return bitmap ? CFXBitmapFromFPDFBitmap(bitmap)->GetBuffer() : nullptr;
}
DLLEXPORT int STDCALL FPDFBitmap_GetWidth(FPDF_BITMAP bitmap) {
- return bitmap ? ((CFX_DIBitmap*)bitmap)->GetWidth() : 0;
+ return bitmap ? CFXBitmapFromFPDFBitmap(bitmap)->GetWidth() : 0;
}
DLLEXPORT int STDCALL FPDFBitmap_GetHeight(FPDF_BITMAP bitmap) {
- return bitmap ? ((CFX_DIBitmap*)bitmap)->GetHeight() : 0;
+ return bitmap ? CFXBitmapFromFPDFBitmap(bitmap)->GetHeight() : 0;
}
DLLEXPORT int STDCALL FPDFBitmap_GetStride(FPDF_BITMAP bitmap) {
- return bitmap ? ((CFX_DIBitmap*)bitmap)->GetPitch() : 0;
+ return bitmap ? CFXBitmapFromFPDFBitmap(bitmap)->GetPitch() : 0;
}
DLLEXPORT void STDCALL FPDFBitmap_Destroy(FPDF_BITMAP bitmap) {
- delete (CFX_DIBitmap*)bitmap;
+ delete CFXBitmapFromFPDFBitmap(bitmap);
}
void FPDF_RenderPage_Retail(CRenderContext* pContext,
diff --git a/fpdfsdk/include/fsdk_define.h b/fpdfsdk/include/fsdk_define.h
index a8a02d665e..4a470206d3 100644
--- a/fpdfsdk/include/fsdk_define.h
+++ b/fpdfsdk/include/fsdk_define.h
@@ -108,6 +108,8 @@ FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc);
CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page);
+CFX_DIBitmap* CFXBitmapFromFPDFBitmap(FPDF_BITMAP bitmap);
+
void FSDK_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable);
FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy);
void FPDF_RenderPage_Retail(CRenderContext* pContext,
diff --git a/xfa/fde/tto/fde_textout.cpp b/xfa/fde/tto/fde_textout.cpp
index 3e14b9bf38..c7d82ac0f4 100644
--- a/xfa/fde/tto/fde_textout.cpp
+++ b/xfa/fde/tto/fde_textout.cpp
@@ -125,12 +125,13 @@ void CFDE_TextOut::SetLineSpace(FX_FLOAT fLineSpace) {
ASSERT(fLineSpace > 1.0f);
m_fLineSpace = fLineSpace;
}
+
void CFDE_TextOut::SetDIBitmap(CFX_DIBitmap* pDIB) {
ASSERT(pDIB);
m_pRenderDevice.reset();
CFX_FxgeDevice* device = new CFX_FxgeDevice;
- device->Attach(pDIB, 0, FALSE);
+ device->Attach(pDIB, false, nullptr, false);
m_pRenderDevice.reset(new CFDE_RenderDevice(device, FALSE));
}
diff --git a/xfa/fwl/theme/cfwl_formtp.cpp b/xfa/fwl/theme/cfwl_formtp.cpp
index 75244373d4..971e738765 100644
--- a/xfa/fwl/theme/cfwl_formtp.cpp
+++ b/xfa/fwl/theme/cfwl_formtp.cpp
@@ -844,7 +844,7 @@ void CFWL_FormTP::InitCaption(FX_BOOL bActive) {
delete m_pActiveBitmap;
m_pActiveBitmap = new CFX_DIBitmap;
m_pActiveBitmap->Create(1, kCYCaption, FXDIB_Argb);
- dev.Attach(m_pActiveBitmap);
+ dev.Attach(m_pActiveBitmap, false, nullptr, false);
gs.Create(&dev);
path.AddRectangle(0, 0, 1, 5);
DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[0][0],
@@ -865,7 +865,7 @@ void CFWL_FormTP::InitCaption(FX_BOOL bActive) {
delete m_pDeactivebitmap;
m_pDeactivebitmap = new CFX_DIBitmap;
m_pDeactivebitmap->Create(1, kCYCaption, FXDIB_Argb);
- dev.Attach(m_pDeactivebitmap);
+ dev.Attach(m_pDeactivebitmap, false, nullptr, false);
gs.Create(&dev);
path.AddRectangle(0, 0, 1, 5);
DrawAxialShading(&gs, 0, 0, 0, 5, m_pThemeData->clrHeadBK[1][0],
diff --git a/xfa/fxbarcode/oned/BC_OneDimWriter.cpp b/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
index ae1b237957..7b1cc50d72 100644
--- a/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/xfa/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -201,6 +201,7 @@ void CBC_OneDimWriter::ShowDeviceChars(CFX_RenderDevice* device,
(FX_FLOAT)iFontSize, (CFX_Matrix*)&affine_matrix,
m_fontColor, FXTEXT_CLEARTYPE);
}
+
void CBC_OneDimWriter::ShowBitmapChars(CFX_DIBitmap* pOutBitmap,
const CFX_ByteString str,
FX_FLOAT geWidth,
@@ -211,7 +212,7 @@ void CBC_OneDimWriter::ShowBitmapChars(CFX_DIBitmap* pOutBitmap,
int32_t iFontSize = (int32_t)fabs(m_fFontSize);
int32_t iTextHeight = iFontSize + 1;
CFX_FxgeDevice ge;
- ge.Create((int)geWidth, iTextHeight, m_colorSpace);
+ ge.Create((int)geWidth, iTextHeight, m_colorSpace, nullptr);
FX_RECT geRect(0, 0, (int)geWidth, iTextHeight);
ge.FillRect(&geRect, m_backgroundColor);
CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize);
@@ -219,9 +220,10 @@ void CBC_OneDimWriter::ShowBitmapChars(CFX_DIBitmap* pOutBitmap,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
(CFX_Matrix*)&affine_matrix, m_fontColor, FXTEXT_CLEARTYPE);
CFX_FxgeDevice geBitmap;
- geBitmap.Attach(pOutBitmap);
+ geBitmap.Attach(pOutBitmap, false, nullptr, false);
geBitmap.SetDIBits(ge.GetBitmap(), (int)locX, (int)locY);
}
+
void CBC_OneDimWriter::ShowChars(const CFX_WideStringC& contents,
CFX_DIBitmap* pOutBitmap,
CFX_RenderDevice* device,
@@ -229,11 +231,11 @@ void CBC_OneDimWriter::ShowChars(const CFX_WideStringC& contents,
int32_t barWidth,
int32_t multiple,
int32_t& e) {
- if (device == NULL && pOutBitmap == NULL) {
+ if (!device && !pOutBitmap) {
e = BCExceptionIllegalArgument;
return;
}
- if (m_pFont == NULL) {
+ if (!m_pFont) {
e = BCExceptionNullPointer;
return;
}
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN13Writer.cpp b/xfa/fxbarcode/oned/BC_OnedEAN13Writer.cpp
index bdc5e1f2c7..20b52774e8 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN13Writer.cpp
+++ b/xfa/fxbarcode/oned/BC_OnedEAN13Writer.cpp
@@ -153,6 +153,7 @@ uint8_t* CBC_OnedEAN13Writer::Encode(const CFX_ByteString& contents,
}
return result;
}
+
void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
CFX_DIBitmap* pOutBitmap,
CFX_RenderDevice* device,
@@ -160,7 +161,7 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
int32_t barWidth,
int32_t multiple,
int32_t& e) {
- if (device == NULL && pOutBitmap == NULL) {
+ if (!device && !pOutBitmap) {
e = BCExceptionIllegalArgument;
return;
}
@@ -171,14 +172,14 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
FXTEXT_CHARPOS* pCharPos = FX_Alloc(FXTEXT_CHARPOS, iLen);
FXSYS_memset(pCharPos, 0, sizeof(FXTEXT_CHARPOS) * iLen);
CFX_FxgeDevice geBitmap;
- if (pOutBitmap) {
- geBitmap.Attach(pOutBitmap);
- }
+ if (pOutBitmap)
+ geBitmap.Attach(pOutBitmap, false, nullptr, false);
+
int32_t iFontSize = (int32_t)fabs(m_fFontSize);
int32_t iTextHeight = iFontSize + 1;
CFX_ByteString tempStr = str.Mid(1, 6);
int32_t strWidth = multiple * 42;
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap) {
CFX_Matrix matr(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0);
CFX_FloatRect rect(
(FX_FLOAT)leftPosition, (FX_FLOAT)(m_Height - iTextHeight),
@@ -208,7 +209,7 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
}
FX_FLOAT blank = 0.0;
iLen = tempStr.GetLength();
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap) {
strWidth = (int32_t)(strWidth * m_outputHScale);
}
CalcTextInfo(tempStr, pCharPos + 1, m_pFont, (FX_FLOAT)strWidth, iFontSize,
@@ -216,7 +217,7 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize);
CFX_FxgeDevice ge;
if (pOutBitmap) {
- ge.Create(strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create(strWidth, iTextHeight, FXDIB_Argb, nullptr);
FX_RECT rect(0, 0, strWidth, iTextHeight);
ge.FillRect(&rect, m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos + 1, m_pFont,
@@ -265,14 +266,14 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
tempStr = str.Mid(0, 1);
iLen = tempStr.GetLength();
strWidth = multiple * 7;
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap)
strWidth = (int32_t)(strWidth * m_outputHScale);
- }
+
CalcTextInfo(tempStr, pCharPos, m_pFont, (FX_FLOAT)strWidth, iFontSize,
blank);
if (pOutBitmap) {
delete ge.GetBitmap();
- ge.Create(strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create(strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -292,6 +293,7 @@ void CBC_OnedEAN13Writer::ShowChars(const CFX_WideStringC& contents,
}
FX_Free(pCharPos);
}
+
void CBC_OnedEAN13Writer::RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
diff --git a/xfa/fxbarcode/oned/BC_OnedEAN8Writer.cpp b/xfa/fxbarcode/oned/BC_OnedEAN8Writer.cpp
index 4427cb8970..2aa57d18d1 100644
--- a/xfa/fxbarcode/oned/BC_OnedEAN8Writer.cpp
+++ b/xfa/fxbarcode/oned/BC_OnedEAN8Writer.cpp
@@ -158,6 +158,7 @@ uint8_t* CBC_OnedEAN8Writer::Encode(const CFX_ByteString& contents,
}
return result;
}
+
void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
CFX_DIBitmap* pOutBitmap,
CFX_RenderDevice* device,
@@ -165,10 +166,11 @@ void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
int32_t barWidth,
int32_t multiple,
int32_t& e) {
- if (device == NULL && pOutBitmap == NULL) {
+ if (!device && !pOutBitmap) {
e = BCExceptionIllegalArgument;
return;
}
+
int32_t leftPosition = 3 * multiple;
CFX_ByteString str = FX_UTF8Encode(contents);
int32_t iLength = str.GetLength();
@@ -179,12 +181,12 @@ void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
int32_t strWidth = 7 * multiple * 4;
FX_FLOAT blank = 0.0;
CFX_FxgeDevice geBitmap;
- if (pOutBitmap) {
- geBitmap.Attach(pOutBitmap);
- }
+ if (pOutBitmap)
+ geBitmap.Attach(pOutBitmap, false, nullptr, false);
+
int32_t iFontSize = (int32_t)fabs(m_fFontSize);
int32_t iTextHeight = iFontSize + 1;
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap) {
CFX_Matrix matr(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0);
CFX_FloatRect rect(
(FX_FLOAT)leftPosition, (FX_FLOAT)(m_Height - iTextHeight),
@@ -204,16 +206,16 @@ void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
re = rect1.GetOutterRect();
device->FillRect(&re, m_backgroundColor);
}
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap)
strWidth = (int32_t)(strWidth * m_outputHScale);
- }
+
CalcTextInfo(tempStr, pCharPos, m_pFont, (FX_FLOAT)strWidth, iFontSize,
blank);
CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize);
CFX_FxgeDevice ge;
if (pOutBitmap) {
delete ge.GetBitmap();
- ge.Create(strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create(strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -236,7 +238,7 @@ void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
blank);
if (pOutBitmap) {
delete ge.GetBitmap();
- ge.Create(strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create(strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos + 4, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -259,6 +261,7 @@ void CBC_OnedEAN8Writer::ShowChars(const CFX_WideStringC& contents,
}
FX_Free(pCharPos);
}
+
void CBC_OnedEAN8Writer::RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
diff --git a/xfa/fxbarcode/oned/BC_OnedUPCAWriter.cpp b/xfa/fxbarcode/oned/BC_OnedUPCAWriter.cpp
index 943384d55c..f7900d4195 100644
--- a/xfa/fxbarcode/oned/BC_OnedUPCAWriter.cpp
+++ b/xfa/fxbarcode/oned/BC_OnedUPCAWriter.cpp
@@ -36,18 +36,16 @@ void CBC_OnedUPCAWriter::Init() {
CBC_OnedUPCAWriter::~CBC_OnedUPCAWriter() {
delete m_subWriter;
}
+
FX_BOOL CBC_OnedUPCAWriter::CheckContentValidity(
const CFX_WideStringC& contents) {
- int32_t i = 0;
- for (i = 0; i < contents.GetLength(); i++) {
- if (contents.GetAt(i) >= '0' && contents.GetAt(i) <= '9') {
- continue;
- } else {
+ for (FX_STRSIZE i = 0; i < contents.GetLength(); ++i) {
+ if (contents.GetAt(i) < '0' || contents.GetAt(i) > '9')
return FALSE;
- }
}
return TRUE;
}
+
CFX_WideString CBC_OnedUPCAWriter::FilterContents(
const CFX_WideStringC& contents) {
CFX_WideString filtercontents;
@@ -106,6 +104,7 @@ uint8_t* CBC_OnedUPCAWriter::Encode(const CFX_ByteString& contents,
BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
return ret;
}
+
void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
CFX_DIBitmap* pOutBitmap,
CFX_RenderDevice* device,
@@ -113,10 +112,11 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
int32_t barWidth,
int32_t multiple,
int32_t& e) {
- if (device == NULL && pOutBitmap == NULL) {
+ if (!device && !pOutBitmap) {
e = BCExceptionIllegalArgument;
return;
}
+
int32_t leftPadding = 7 * multiple;
int32_t leftPosition = 10 * multiple + leftPadding;
CFX_ByteString str = FX_UTF8Encode(contents);
@@ -127,13 +127,13 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
FX_FLOAT strWidth = (FX_FLOAT)35 * multiple;
FX_FLOAT blank = 0.0;
CFX_FxgeDevice geBitmap;
- if (pOutBitmap) {
- geBitmap.Attach(pOutBitmap);
- }
+ if (pOutBitmap)
+ geBitmap.Attach(pOutBitmap, false, nullptr, false);
+
iLen = tempStr.GetLength();
int32_t iFontSize = (int32_t)fabs(m_fFontSize);
int32_t iTextHeight = iFontSize + 1;
- if (pOutBitmap == NULL) {
+ if (!pOutBitmap) {
CFX_Matrix matr(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0);
CFX_FloatRect rect(
(FX_FLOAT)leftPosition, (FX_FLOAT)(m_Height - iTextHeight),
@@ -178,7 +178,7 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize);
CFX_FxgeDevice ge;
if (pOutBitmap) {
- ge.Create((int)strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos + 1, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -231,7 +231,7 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
CalcTextInfo(tempStr, pCharPos, m_pFont, strWidth, iFontSize, blank);
if (pOutBitmap) {
delete ge.GetBitmap();
- ge.Create((int)strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -254,7 +254,7 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
CalcTextInfo(tempStr, pCharPos + 11, m_pFont, strWidth, iFontSize, blank);
if (pOutBitmap) {
delete ge.GetBitmap();
- ge.Create((int)strWidth, iTextHeight, FXDIB_Argb);
+ ge.Create((int)strWidth, iTextHeight, FXDIB_Argb, nullptr);
ge.GetBitmap()->Clear(m_backgroundColor);
ge.DrawNormalText(iLen, pCharPos + 11, m_pFont,
CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize,
@@ -277,6 +277,7 @@ void CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents,
}
FX_Free(pCharPos);
}
+
void CBC_OnedUPCAWriter::RenderResult(const CFX_WideStringC& contents,
uint8_t* code,
int32_t codeLength,
diff --git a/xfa/fxgraphics/cagg_graphics.cpp b/xfa/fxgraphics/cagg_graphics.cpp
index 564a2b14cc..5d1f563613 100644
--- a/xfa/fxgraphics/cagg_graphics.cpp
+++ b/xfa/fxgraphics/cagg_graphics.cpp
@@ -18,7 +18,7 @@ FWL_Error CAGG_Graphics::Create(CFX_Graphics* owner,
return FWL_Error::PropertyInvalid;
CFX_FxgeDevice* device = new CFX_FxgeDevice;
- device->Create(width, height, format);
+ device->Create(width, height, format, nullptr);
m_owner = owner;
m_owner->m_renderDevice = device;
m_owner->m_renderDevice->GetBitmap()->Clear(0xFFFFFFFF);
diff --git a/xfa/fxgraphics/cfx_graphics.cpp b/xfa/fxgraphics/cfx_graphics.cpp
index 8de0def44f..755bc1eff1 100644
--- a/xfa/fxgraphics/cfx_graphics.cpp
+++ b/xfa/fxgraphics/cfx_graphics.cpp
@@ -1343,7 +1343,7 @@ FWL_Error CFX_Graphics::FillPathWithPattern(CFX_Path* path,
FX_RECT rect(FXSYS_round(rectf.left), FXSYS_round(rectf.top),
FXSYS_round(rectf.right), FXSYS_round(rectf.bottom));
CFX_FxgeDevice device;
- device.Attach(&bmp);
+ device.Attach(&bmp, false, nullptr, false);
device.FillRect(&rect, m_info.fillColor->m_info.pattern->m_backArgb);
for (int32_t j = rect.bottom; j < rect.top; j += mask.GetHeight()) {
for (int32_t i = rect.left; i < rect.right; i += mask.GetWidth()) {