Add GetIsCmykFromFormat() and use where appropriate.
Also use GetBppFromFormat() in more places.
Change-Id: I26612aa35af596ec36f09b08d977f5a546fed580
Reviewed-on: https://pdfium-review.googlesource.com/c/50995
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/core/fxge/dib/cfx_bitmapcomposer.cpp b/core/fxge/dib/cfx_bitmapcomposer.cpp
index a4e4863..beb02b7 100644
--- a/core/fxge/dib/cfx_bitmapcomposer.cpp
+++ b/core/fxge/dib/cfx_bitmapcomposer.cpp
@@ -84,7 +84,7 @@
if (m_SrcFormat == FXDIB_8bppMask) {
m_Compositor.CompositeByteMaskLine(dest_scan, src_scan, dest_width,
clip_scan, dst_extra_alpha);
- } else if ((m_SrcFormat & 0xff) == 8) {
+ } else if (GetBppFromFormat(m_SrcFormat) == 8) {
m_Compositor.CompositePalBitmapLine(dest_scan, src_scan, 0, dest_width,
clip_scan, src_extra_alpha,
dst_extra_alpha);
diff --git a/core/fxge/dib/cfx_dibbase.cpp b/core/fxge/dib/cfx_dibbase.cpp
index f91d946..f878fc4 100644
--- a/core/fxge/dib/cfx_dibbase.cpp
+++ b/core/fxge/dib/cfx_dibbase.cpp
@@ -1265,9 +1265,9 @@
}
case FXDIB_Argb:
case FXDIB_Rgb32: {
- const bool cmyk = src_format & 0x0400;
- return ConvertBuffer_Argb(bpp, cmyk, dest_format, dest_buf, dest_pitch,
- width, height, pSrcBitmap, src_left, src_top);
+ return ConvertBuffer_Argb(bpp, GetIsCmykFromFormat(src_format),
+ dest_format, dest_buf, dest_pitch, width,
+ height, pSrcBitmap, src_left, src_top);
}
default:
NOTREACHED();
diff --git a/core/fxge/dib/cfx_imagestretcher.cpp b/core/fxge/dib/cfx_imagestretcher.cpp
index 54d14f7..07ff251 100644
--- a/core/fxge/dib/cfx_imagestretcher.cpp
+++ b/core/fxge/dib/cfx_imagestretcher.cpp
@@ -58,7 +58,7 @@
m_DestHeight(dest_height),
m_ClipRect(bitmap_rect),
m_DestFormat(GetStretchedFormat(*pSource)),
- m_DestBPP(m_DestFormat & 0xff),
+ m_DestBPP(GetBppFromFormat(m_DestFormat)),
m_LineIndex(0) {}
CFX_ImageStretcher::~CFX_ImageStretcher() {}
diff --git a/core/fxge/dib/cfx_scanlinecompositor.cpp b/core/fxge/dib/cfx_scanlinecompositor.cpp
index 5bc3912..202cb18 100644
--- a/core/fxge/dib/cfx_scanlinecompositor.cpp
+++ b/core/fxge/dib/cfx_scanlinecompositor.cpp
@@ -2852,24 +2852,25 @@
InitSourceMask(mask_color);
return true;
}
- if ((~src_format & 0x0400) && (dest_format & 0x0400))
+ if (!GetIsCmykFromFormat(src_format) && GetIsCmykFromFormat(dest_format))
return false;
- if ((m_SrcFormat & 0xff) <= 8) {
+ if (GetBppFromFormat(m_SrcFormat) <= 8) {
if (dest_format == FXDIB_8bppMask)
return true;
InitSourcePalette(src_format, dest_format, pSrcPalette);
m_iTransparency = (dest_format == FXDIB_Argb ? 1 : 0) +
(GetIsAlphaFromFormat(dest_format) ? 2 : 0) +
- (dest_format & 0x0400 ? 4 : 0) +
+ (GetIsCmykFromFormat(dest_format) ? 4 : 0) +
(GetBppFromFormat(src_format) == 1 ? 8 : 0);
return true;
}
m_iTransparency = (GetIsAlphaFromFormat(src_format) ? 0 : 1) +
(GetIsAlphaFromFormat(dest_format) ? 0 : 2) +
(blend_type == BlendMode::kNormal ? 4 : 0) +
- (bClip ? 8 : 0) + (src_format & 0x0400 ? 16 : 0) +
- (dest_format & 0x0400 ? 32 : 0);
+ (bClip ? 8 : 0) +
+ (GetIsCmykFromFormat(src_format) ? 16 : 0) +
+ (GetIsCmykFromFormat(dest_format) ? 32 : 0);
return true;
}
@@ -2881,9 +2882,9 @@
if (m_DestFormat == FXDIB_8bppMask)
return;
- if ((m_DestFormat & 0xff) == 8) {
+ if (GetBppFromFormat(m_DestFormat) == 8) {
m_MaskRed = FXRGB2GRAY(m_MaskRed, m_MaskGreen, m_MaskBlue);
- if (m_DestFormat & 0x0400)
+ if (GetIsCmykFromFormat(m_DestFormat))
m_MaskRed = FX_CCOLOR(m_MaskRed);
}
}
@@ -2891,8 +2892,8 @@
void CFX_ScanlineCompositor::InitSourcePalette(FXDIB_Format src_format,
FXDIB_Format dest_format,
const uint32_t* pSrcPalette) {
- bool bIsSrcCmyk = !!(src_format & 0x0400);
- bool bIsDstCmyk = !!(dest_format & 0x0400);
+ bool bIsSrcCmyk = GetIsCmykFromFormat(src_format);
+ bool bIsDstCmyk = GetIsCmykFromFormat(dest_format);
bool bIsDestBpp8 = GetBppFromFormat(dest_format) == 8;
int pal_count = 1 << GetBppFromFormat(src_format);
m_pSrcPalette = nullptr;
@@ -3048,8 +3049,8 @@
} else {
CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan);
}
- } else if ((m_DestFormat & 0xff) == 8) {
- if (m_DestFormat & 0x0400) {
+ } else if (GetBppFromFormat(m_DestFormat) == 8) {
+ if (GetIsCmykFromFormat(m_DestFormat)) {
for (int i = 0; i < width; ++i) {
*dest_scan = ~*dest_scan;
dest_scan++;
@@ -3072,7 +3073,7 @@
clip_scan);
}
}
- if (m_DestFormat & 0x0400) {
+ if (GetIsCmykFromFormat(m_DestFormat)) {
for (int i = 0; i < width; ++i) {
*dest_scan = ~*dest_scan;
dest_scan++;
@@ -3175,7 +3176,7 @@
CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan);
return;
}
- if ((m_DestFormat & 0xff) == 8) {
+ if (GetBppFromFormat(m_DestFormat) == 8) {
if (m_iTransparency & 8) {
if (GetIsAlphaFromFormat(m_DestFormat)) {
CompositeRow_1bppPal2Graya(
@@ -3244,7 +3245,7 @@
if (m_DestFormat == FXDIB_8bppMask) {
CompositeRow_ByteMask2Mask(dest_scan, src_scan, m_MaskAlpha, width,
clip_scan);
- } else if ((m_DestFormat & 0xff) == 8) {
+ } else if (GetBppFromFormat(m_DestFormat) == 8) {
if (GetIsAlphaFromFormat(m_DestFormat)) {
CompositeRow_ByteMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
width, clip_scan, dst_extra_alpha);
@@ -3286,7 +3287,7 @@
if (m_DestFormat == FXDIB_8bppMask) {
CompositeRow_BitMask2Mask(dest_scan, src_scan, m_MaskAlpha, src_left, width,
clip_scan);
- } else if ((m_DestFormat & 0xff) == 8) {
+ } else if (GetBppFromFormat(m_DestFormat) == 8) {
if (GetIsAlphaFromFormat(m_DestFormat)) {
CompositeRow_BitMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
src_left, width, clip_scan, dst_extra_alpha);
diff --git a/core/fxge/fx_dib.h b/core/fxge/fx_dib.h
index 23dd468..9067824 100644
--- a/core/fxge/fx_dib.h
+++ b/core/fxge/fx_dib.h
@@ -123,6 +123,10 @@
return format & 0x200;
}
+inline bool GetIsCmykFromFormat(FXDIB_Format format) {
+ return format & 0x400;
+}
+
inline FX_CMYK CmykEncode(int c, int m, int y, int k) {
return (c << 24) | (m << 16) | (y << 8) | k;
}