| Index: core/src/fxge/dib/fx_dib_composite.cpp
|
| diff --git a/core/src/fxge/dib/fx_dib_composite.cpp b/core/src/fxge/dib/fx_dib_composite.cpp
|
| index 8bf36e523a64affc5edbc0305d66c5931bc4d81a..e2781d62443bbfd866d25e6a0cc0ca53a81e9943 100644
|
| --- a/core/src/fxge/dib/fx_dib_composite.cpp
|
| +++ b/core/src/fxge/dib/fx_dib_composite.cpp
|
| @@ -285,10 +285,10 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| const uint8_t* src_alpha_scan,
|
| uint8_t* dst_alpha_scan,
|
| void* pIccTransform) {
|
| - ICodec_IccModule* pIccModule = NULL;
|
| - if (pIccTransform) {
|
| + ICodec_IccModule* pIccModule = nullptr;
|
| + if (pIccTransform)
|
| pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
|
| - }
|
| +
|
| if (blend_type) {
|
| FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
|
| int blended_color;
|
| @@ -297,9 +297,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| uint8_t back_alpha = *dst_alpha_scan;
|
| if (back_alpha == 0) {
|
| int src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| if (pIccTransform) {
|
| pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan,
|
| @@ -315,9 +315,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| continue;
|
| }
|
| uint8_t src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha == 0) {
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| @@ -343,14 +343,14 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| dst_alpha_scan++;
|
| src_scan += 3;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < pixel_count; col++) {
|
| uint8_t back_alpha = *dst_alpha_scan;
|
| if (back_alpha == 0) {
|
| int src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| if (pIccTransform) {
|
| pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan,
|
| @@ -366,9 +366,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| continue;
|
| }
|
| uint8_t src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha == 0) {
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| @@ -378,16 +378,17 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha);
|
| int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan);
|
| uint8_t gray;
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| src_scan += 4;
|
| }
|
| + }
|
| return;
|
| }
|
| if (src_alpha_scan) {
|
| @@ -395,9 +396,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| uint8_t back_alpha = *dst_alpha_scan;
|
| if (back_alpha == 0) {
|
| int src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| if (pIccTransform) {
|
| pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan,
|
| @@ -413,9 +414,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| continue;
|
| }
|
| uint8_t src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha == 0) {
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| @@ -425,24 +426,24 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha);
|
| int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan);
|
| uint8_t gray;
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| src_scan += 3;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < pixel_count; col++) {
|
| uint8_t back_alpha = *dst_alpha_scan;
|
| if (back_alpha == 0) {
|
| int src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| if (pIccTransform) {
|
| pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan,
|
| @@ -458,9 +459,9 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| continue;
|
| }
|
| uint8_t src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha == 0) {
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| @@ -470,17 +471,19 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
|
| *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha);
|
| int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan);
|
| uint8_t gray;
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
|
| dest_scan++;
|
| dst_alpha_scan++;
|
| src_scan += 4;
|
| }
|
| + }
|
| }
|
| +
|
| inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
|
| const uint8_t* src_scan,
|
| int pixel_count,
|
| @@ -490,24 +493,24 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
|
| void* pIccTransform) {
|
| ICodec_IccModule* pIccModule = NULL;
|
| uint8_t gray;
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
|
| - }
|
| +
|
| if (blend_type) {
|
| FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
|
| int blended_color;
|
| if (src_alpha_scan) {
|
| for (int col = 0; col < pixel_count; col++) {
|
| int src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| if (bNonseparableBlend) {
|
| blended_color =
|
| blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
|
| @@ -519,18 +522,18 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
|
| dest_scan++;
|
| src_scan += 3;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < pixel_count; col++) {
|
| int src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| if (bNonseparableBlend) {
|
| blended_color =
|
| blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
|
| @@ -542,43 +545,46 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
|
| dest_scan++;
|
| src_scan += 4;
|
| }
|
| + }
|
| return;
|
| }
|
| if (src_alpha_scan) {
|
| for (int col = 0; col < pixel_count; col++) {
|
| int src_alpha = *src_alpha_scan++;
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
|
| }
|
| dest_scan++;
|
| src_scan += 3;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < pixel_count; col++) {
|
| int src_alpha = src_scan[3];
|
| - if (clip_scan) {
|
| + if (clip_scan)
|
| src_alpha = clip_scan[col] * src_alpha / 255;
|
| - }
|
| +
|
| if (src_alpha) {
|
| - if (pIccTransform) {
|
| + if (pIccTransform)
|
| pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
|
| - } else {
|
| + else
|
| gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
|
| - }
|
| +
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
|
| }
|
| dest_scan++;
|
| src_scan += 4;
|
| }
|
| + }
|
| }
|
| +
|
| inline void _CompositeRow_Rgb2Gray(uint8_t* dest_scan,
|
| const uint8_t* src_scan,
|
| int src_Bpp,
|
| @@ -2329,7 +2335,7 @@ inline void _CompositeRow_8bppRgb2Argb_NoBlend(uint8_t* dest_scan,
|
| dest_scan++;
|
| dest_scan++;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < width; col++) {
|
| FX_ARGB argb = pPalette[*src_scan];
|
| int src_r = FXARGB_R(argb);
|
| @@ -2363,7 +2369,9 @@ inline void _CompositeRow_8bppRgb2Argb_NoBlend(uint8_t* dest_scan,
|
| dest_scan++;
|
| src_scan++;
|
| }
|
| + }
|
| }
|
| +
|
| void _CompositeRow_8bppRgb2Rgba_NoBlend(uint8_t* dest_scan,
|
| const uint8_t* src_scan,
|
| int width,
|
| @@ -2414,7 +2422,7 @@ void _CompositeRow_8bppRgb2Rgba_NoBlend(uint8_t* dest_scan,
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio);
|
| dest_scan++;
|
| }
|
| - } else
|
| + } else {
|
| for (int col = 0; col < width; col++) {
|
| FX_ARGB argb = pPalette[*src_scan];
|
| int src_r = FXARGB_R(argb);
|
| @@ -2448,7 +2456,9 @@ void _CompositeRow_8bppRgb2Rgba_NoBlend(uint8_t* dest_scan,
|
| dest_scan++;
|
| src_scan++;
|
| }
|
| + }
|
| }
|
| +
|
| inline void _CompositeRow_1bppRgb2Argb_NoBlend(uint8_t* dest_scan,
|
| const uint8_t* src_scan,
|
| int src_left,
|
| @@ -4120,12 +4130,13 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format,
|
| g, b);
|
| *gray_pal++ = FXRGB2GRAY(r, g, b);
|
| }
|
| - } else
|
| + } else {
|
| for (int i = 0; i < pal_count; i++) {
|
| FX_ARGB argb = pSrcPalette[i];
|
| *gray_pal++ =
|
| FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb));
|
| }
|
| + }
|
| } else {
|
| int palsize = 1 << (src_format & 0xff);
|
| pDestPalette = FX_Alloc(FX_DWORD, palsize);
|
| @@ -4586,27 +4597,29 @@ void CFX_ScanlineCompositor::CompositeByteMaskLine(uint8_t* dest_scan,
|
| width, clip_scan);
|
| }
|
| } else if (m_bRgbByteOrder) {
|
| - if (m_DestFormat == FXDIB_Argb)
|
| + if (m_DestFormat == FXDIB_Argb) {
|
| _CompositeRow_ByteMask2Argb_RgbByteOrder(
|
| dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
|
| width, m_BlendType, clip_scan);
|
| - else
|
| + } else {
|
| _CompositeRow_ByteMask2Rgb_RgbByteOrder(
|
| dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
|
| width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan);
|
| + }
|
| return;
|
| - } else if (m_DestFormat == FXDIB_Argb)
|
| + } else if (m_DestFormat == FXDIB_Argb) {
|
| _CompositeRow_ByteMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| m_MaskGreen, m_MaskBlue, width, m_BlendType,
|
| clip_scan);
|
| - else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32)
|
| + } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) {
|
| _CompositeRow_ByteMask2Rgb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| m_MaskGreen, m_MaskBlue, width, m_BlendType,
|
| (m_DestFormat & 0xff) >> 3, clip_scan);
|
| - else if (m_DestFormat == FXDIB_Rgba)
|
| + } else if (m_DestFormat == FXDIB_Rgba) {
|
| _CompositeRow_ByteMask2Rgba(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| m_MaskGreen, m_MaskBlue, width, m_BlendType,
|
| clip_scan, dst_extra_alpha);
|
| + }
|
| }
|
| void CFX_ScanlineCompositor::CompositeBitMaskLine(uint8_t* dest_scan,
|
| const uint8_t* src_scan,
|
| @@ -4618,32 +4631,35 @@ void CFX_ScanlineCompositor::CompositeBitMaskLine(uint8_t* dest_scan,
|
| _CompositeRow_BitMask2Mask(dest_scan, src_scan, m_MaskAlpha, src_left,
|
| width, clip_scan);
|
| } else if ((m_DestFormat & 0xff) == 8) {
|
| - if (m_DestFormat & 0x0200)
|
| + if (m_DestFormat & 0x0200) {
|
| _CompositeRow_BitMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| src_left, width, clip_scan, dst_extra_alpha);
|
| - else {
|
| + } else {
|
| _CompositeRow_BitMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| src_left, width, clip_scan);
|
| }
|
| } else if (m_bRgbByteOrder) {
|
| - if (m_DestFormat == FXDIB_Argb)
|
| + if (m_DestFormat == FXDIB_Argb) {
|
| _CompositeRow_BitMask2Argb_RgbByteOrder(
|
| dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
|
| src_left, width, m_BlendType, clip_scan);
|
| - else
|
| + } else {
|
| _CompositeRow_BitMask2Rgb_RgbByteOrder(
|
| dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
|
| src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan);
|
| + }
|
| return;
|
| - } else if (m_DestFormat == FXDIB_Argb)
|
| + } else if (m_DestFormat == FXDIB_Argb) {
|
| _CompositeRow_BitMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
|
| m_MaskGreen, m_MaskBlue, src_left, width,
|
| m_BlendType, clip_scan);
|
| - else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32)
|
| + } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) {
|
| _CompositeRow_BitMask2Rgb(
|
| dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
|
| src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan);
|
| + }
|
| }
|
| +
|
| FX_BOOL CFX_DIBitmap::CompositeBitmap(int dest_left,
|
| int dest_top,
|
| int width,
|
| @@ -4838,11 +4854,12 @@ FX_BOOL CFX_DIBitmap::CompositeRect(int left,
|
| uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left;
|
| if (src_alpha == 255) {
|
| FXSYS_memset(dest_scan, gray, width);
|
| - } else
|
| + } else {
|
| for (int col = 0; col < width; col++) {
|
| *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
|
| dest_scan++;
|
| }
|
| + }
|
| }
|
| return TRUE;
|
| }
|
| @@ -4894,11 +4911,11 @@ FX_BOOL CFX_DIBitmap::CompositeRect(int left,
|
| CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
|
| pIccModule->TranslateScanline(pIccTransform, color_p, color_p, 1);
|
| } else {
|
| - if (alpha_flag >> 8 && !IsCmykImage())
|
| + if (alpha_flag >> 8 && !IsCmykImage()) {
|
| AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color),
|
| FXSYS_GetYValue(color), FXSYS_GetKValue(color),
|
| color_p[2], color_p[1], color_p[0]);
|
| - else if (!(alpha_flag >> 8) && IsCmykImage()) {
|
| + } else if (!(alpha_flag >> 8) && IsCmykImage()) {
|
| return FALSE;
|
| }
|
| }
|
|
|