| 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 ad6ee0c4e7596d9e8bb9e7e70475f56f296f2e86..85df71e11d1562e8254f46520f4b37fe6e2bb5aa 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())) {
|
|
|