Index: core/fxge/dib/fx_dib_main.cpp |
diff --git a/core/fxge/dib/fx_dib_main.cpp b/core/fxge/dib/fx_dib_main.cpp |
index 310c62fcc568bc2e97af23cb34aad3e456a2cec0..7b11510833de91a368f364dc4dabcadba2bb386e 100644 |
--- a/core/fxge/dib/fx_dib_main.cpp |
+++ b/core/fxge/dib/fx_dib_main.cpp |
@@ -128,17 +128,17 @@ bool CFX_DIBitmap::Create(int width, |
} |
bool CFX_DIBitmap::Copy(const CFX_DIBSource* pSrc) { |
- if (m_pBuffer) { |
+ if (m_pBuffer) |
return false; |
- } |
- if (!Create(pSrc->GetWidth(), pSrc->GetHeight(), pSrc->GetFormat())) { |
+ |
+ if (!Create(pSrc->GetWidth(), pSrc->GetHeight(), pSrc->GetFormat())) |
return false; |
- } |
- CopyPalette(pSrc->GetPalette()); |
- CopyAlphaMask(pSrc->m_pAlphaMask); |
- for (int row = 0; row < pSrc->GetHeight(); row++) { |
+ |
+ SetPalette(pSrc->GetPalette()); |
+ SetAlphaMask(pSrc->m_pAlphaMask); |
+ for (int row = 0; row < pSrc->GetHeight(); row++) |
FXSYS_memcpy(m_pBuffer + row * m_Pitch, pSrc->GetScanline(row), m_Pitch); |
- } |
+ |
return true; |
} |
@@ -186,8 +186,8 @@ std::unique_ptr<CFX_DIBitmap> CFX_DIBSource::Clone(const FX_RECT* pClip) const { |
if (!pNewBitmap->Create(rect.Width(), rect.Height(), GetFormat())) |
return nullptr; |
- pNewBitmap->CopyPalette(m_pPalette.get()); |
- pNewBitmap->CopyAlphaMask(m_pAlphaMask, pClip); |
+ pNewBitmap->SetPalette(m_pPalette.get()); |
+ pNewBitmap->SetAlphaMask(m_pAlphaMask, pClip); |
if (GetBPP() == 1 && rect.left % 8 != 0) { |
int left_shift = rect.left % 32; |
int right_shift = 32 - left_shift; |
@@ -572,18 +572,17 @@ bool CFX_DIBitmap::TransferMask(int dest_left, |
return true; |
} |
-void CFX_DIBSource::CopyPalette(const uint32_t* pSrc) { |
+void CFX_DIBSource::SetPalette(const uint32_t* pSrc) { |
static const uint32_t kPaletteSize = 256; |
- |
if (!pSrc || GetBPP() > 8) { |
m_pPalette.reset(); |
- } else { |
- uint32_t pal_size = 1 << GetBPP(); |
- if (!m_pPalette) |
- m_pPalette.reset(FX_Alloc(uint32_t, pal_size)); |
- pal_size = std::min(pal_size, kPaletteSize); |
- FXSYS_memcpy(m_pPalette.get(), pSrc, pal_size * sizeof(uint32_t)); |
+ return; |
} |
+ uint32_t pal_size = 1 << GetBPP(); |
+ if (!m_pPalette) |
+ m_pPalette.reset(FX_Alloc(uint32_t, pal_size)); |
+ pal_size = std::min(pal_size, kPaletteSize); |
+ FXSYS_memcpy(m_pPalette.get(), pSrc, pal_size * sizeof(uint32_t)); |
} |
void CFX_DIBSource::GetPalette(uint32_t* pal, int alpha) const { |
@@ -606,20 +605,19 @@ void CFX_DIBSource::GetPalette(uint32_t* pal, int alpha) const { |
} |
} |
-CFX_DIBitmap* CFX_DIBSource::GetAlphaMask(const FX_RECT* pClip) const { |
+std::unique_ptr<CFX_DIBitmap> CFX_DIBSource::CloneAlphaMask( |
+ const FX_RECT* pClip) const { |
ASSERT(GetFormat() == FXDIB_Argb); |
FX_RECT rect(0, 0, m_Width, m_Height); |
if (pClip) { |
rect.Intersect(*pClip); |
- if (rect.IsEmpty()) { |
+ if (rect.IsEmpty()) |
return nullptr; |
- } |
} |
- CFX_DIBitmap* pMask = new CFX_DIBitmap; |
- if (!pMask->Create(rect.Width(), rect.Height(), FXDIB_8bppMask)) { |
- delete pMask; |
+ auto pMask = pdfium::MakeUnique<CFX_DIBitmap>(); |
+ if (!pMask->Create(rect.Width(), rect.Height(), FXDIB_8bppMask)) |
return nullptr; |
- } |
+ |
for (int row = rect.top; row < rect.bottom; row++) { |
const uint8_t* src_scan = GetScanline(row) + rect.left * 4 + 3; |
uint8_t* dest_scan = (uint8_t*)pMask->GetScanline(row - rect.top); |
dsinclair
2016/12/14 21:39:05
nit: static_cast
Tom Sepez
2016/12/14 22:05:05
Actually, both of these are const_casts.
Done.
|
@@ -631,31 +629,30 @@ CFX_DIBitmap* CFX_DIBSource::GetAlphaMask(const FX_RECT* pClip) const { |
return pMask; |
} |
-bool CFX_DIBSource::CopyAlphaMask(const CFX_DIBSource* pAlphaMask, |
- const FX_RECT* pClip) { |
- if (!HasAlpha() || GetFormat() == FXDIB_Argb) { |
+bool CFX_DIBSource::SetAlphaMask(const CFX_DIBSource* pAlphaMask, |
+ const FX_RECT* pClip) { |
+ if (!HasAlpha() || GetFormat() == FXDIB_Argb) |
return false; |
+ |
+ if (!pAlphaMask) { |
+ m_pAlphaMask->Clear(0xff000000); |
+ return true; |
} |
- if (pAlphaMask) { |
- FX_RECT rect(0, 0, pAlphaMask->m_Width, pAlphaMask->m_Height); |
- if (pClip) { |
- rect.Intersect(*pClip); |
- if (rect.IsEmpty() || rect.Width() != m_Width || |
- rect.Height() != m_Height) { |
- return false; |
- } |
- } else { |
- if (pAlphaMask->m_Width != m_Width || pAlphaMask->m_Height != m_Height) { |
- return false; |
- } |
+ FX_RECT rect(0, 0, pAlphaMask->m_Width, pAlphaMask->m_Height); |
+ if (pClip) { |
+ rect.Intersect(*pClip); |
+ if (rect.IsEmpty() || rect.Width() != m_Width || |
+ rect.Height() != m_Height) { |
+ return false; |
} |
- for (int row = 0; row < m_Height; row++) |
- FXSYS_memcpy((void*)m_pAlphaMask->GetScanline(row), |
- pAlphaMask->GetScanline(row + rect.top) + rect.left, |
- m_pAlphaMask->m_Pitch); |
} else { |
- m_pAlphaMask->Clear(0xff000000); |
+ if (pAlphaMask->m_Width != m_Width || pAlphaMask->m_Height != m_Height) |
+ return false; |
} |
+ for (int row = 0; row < m_Height; row++) |
dsinclair
2016/12/14 21:39:05
nit: {}s
Tom Sepez
2016/12/14 22:05:05
much better. done.
|
+ FXSYS_memcpy((void*)m_pAlphaMask->GetScanline(row), |
dsinclair
2016/12/14 21:39:05
static_cast?
|
+ pAlphaMask->GetScanline(row + rect.top) + rect.left, |
+ m_pAlphaMask->m_Pitch); |
return true; |
} |
@@ -1349,7 +1346,7 @@ CFX_DIBitmap* CFX_DIBSource::FlipImage(bool bXFlip, bool bYFlip) const { |
delete pFlipped; |
return nullptr; |
} |
- pFlipped->CopyPalette(m_pPalette.get()); |
+ pFlipped->SetPalette(m_pPalette.get()); |
uint8_t* pDestBuffer = pFlipped->GetBuffer(); |
int Bpp = m_bpp / 8; |
for (int row = 0; row < m_Height; row++) { |
@@ -1423,8 +1420,8 @@ CFX_DIBExtractor::CFX_DIBExtractor(const CFX_DIBSource* pSrc) { |
m_pBitmap.reset(); |
return; |
} |
- m_pBitmap->CopyPalette(pSrc->GetPalette()); |
- m_pBitmap->CopyAlphaMask(pSrc->m_pAlphaMask); |
+ m_pBitmap->SetPalette(pSrc->GetPalette()); |
+ m_pBitmap->SetAlphaMask(pSrc->m_pAlphaMask); |
} else { |
m_pBitmap = pSrc->Clone(); |
} |
@@ -1642,6 +1639,6 @@ bool CFX_BitmapStorer::SetInfo(int width, |
return false; |
} |
if (pSrcPalette) |
- m_pBitmap->CopyPalette(pSrcPalette); |
+ m_pBitmap->SetPalette(pSrcPalette); |
return true; |
} |