[Libreoffice-commits] core.git: vcl/win

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Dec 12 10:32:07 UTC 2018


 vcl/win/gdi/gdiimpl.cxx |  103 +++++++++++++++++++++++++++++-------------------
 1 file changed, 64 insertions(+), 39 deletions(-)

New commits:
commit 773a29a3fa188b0a1290781d305d2df868e1600c
Author:     Dmitriy Shilin <dshil at fastmail.com>
AuthorDate: Wed Dec 12 10:14:28 2018 +0300
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Wed Dec 12 11:31:42 2018 +0100

    tdf#107792 vcl: split MakeBrush into functions
    
    Change-Id: I531442ca1e121c059fb21bd86ff0c6ac7fa0cac4
    Reviewed-on: https://gerrit.libreoffice.org/64914
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/vcl/win/gdi/gdiimpl.cxx b/vcl/win/gdi/gdiimpl.cxx
index cebacda7e5f5..5c1fa6df3e30 100644
--- a/vcl/win/gdi/gdiimpl.cxx
+++ b/vcl/win/gdi/gdiimpl.cxx
@@ -1457,56 +1457,55 @@ HBRUSH WinSalGraphicsImpl::SearchStockBrush(COLORREF nBrushColor)
     return nullptr;
 }
 
-HBRUSH WinSalGraphicsImpl::MakeBrush(Color nColor)
+namespace
+{
+
+HBRUSH Make16BitDIBPatternBrush(Color nColor)
 {
     const SalData* pSalData = GetSalData();
 
-    BYTE        nRed        = nColor.GetRed();
-    BYTE        nGreen      = nColor.GetGreen();
-    BYTE        nBlue       = nColor.GetBlue();
-    COLORREF    nBrushColor = PALETTERGB(nRed, nGreen, nBlue);
+    const BYTE nRed   = nColor.GetRed();
+    const BYTE nGreen = nColor.GetGreen();
+    const BYTE nBlue  = nColor.GetBlue();
 
-    if (mrParent.isPrinter() || !pSalData->mhDitherDIB)
-        return CreateSolidBrush(nBrushColor);
+    static const BYTE aOrdDither16Bit[8][8] =
+    {
+       { 0, 6, 1, 7, 0, 6, 1, 7 },
+       { 4, 2, 5, 3, 4, 2, 5, 3 },
+       { 1, 7, 0, 6, 1, 7, 0, 6 },
+       { 5, 3, 4, 2, 5, 3, 4, 2 },
+       { 0, 6, 1, 7, 0, 6, 1, 7 },
+       { 4, 2, 5, 3, 4, 2, 5, 3 },
+       { 1, 7, 0, 6, 1, 7, 0, 6 },
+       { 5, 3, 4, 2, 5, 3, 4, 2 }
+    };
 
-    if (24 == reinterpret_cast<BITMAPINFOHEADER*>(pSalData->mpDitherDIB)->biBitCount)
+    BYTE* pTmp = pSalData->mpDitherDIBData;
+    long* pDitherDiff = pSalData->mpDitherDiff;
+    BYTE* pDitherLow = pSalData->mpDitherLow;
+    BYTE* pDitherHigh = pSalData->mpDitherHigh;
+
+    for(int nY = 0; nY < 8; ++nY)
     {
-        static const BYTE aOrdDither16Bit[8][8] =
-        {
-           { 0, 6, 1, 7, 0, 6, 1, 7 },
-           { 4, 2, 5, 3, 4, 2, 5, 3 },
-           { 1, 7, 0, 6, 1, 7, 0, 6 },
-           { 5, 3, 4, 2, 5, 3, 4, 2 },
-           { 0, 6, 1, 7, 0, 6, 1, 7 },
-           { 4, 2, 5, 3, 4, 2, 5, 3 },
-           { 1, 7, 0, 6, 1, 7, 0, 6 },
-           { 5, 3, 4, 2, 5, 3, 4, 2 }
-        };
-
-        BYTE* pTmp = pSalData->mpDitherDIBData;
-        long* pDitherDiff = pSalData->mpDitherDiff;
-        BYTE* pDitherLow = pSalData->mpDitherLow;
-        BYTE* pDitherHigh = pSalData->mpDitherHigh;
-
-        for(int nY = 0; nY < 8; ++nY)
+        for(int nX = 0; nX < 8; ++nX)
         {
-            for(int nX = 0; nX < 8; ++nX)
-            {
-                const BYTE nThres = aOrdDither16Bit[nY][nX];
-                *pTmp++ = DMAP(nBlue, nThres);
-                *pTmp++ = DMAP(nGreen, nThres);
-                *pTmp++ = DMAP(nRed, nThres);
-            }
+            const BYTE nThres = aOrdDither16Bit[nY][nX];
+            *pTmp++ = DMAP(nBlue, nThres);
+            *pTmp++ = DMAP(nGreen, nThres);
+            *pTmp++ = DMAP(nRed, nThres);
         }
-
-        return CreateDIBPatternBrush(pSalData->mhDitherDIB, DIB_RGB_COLORS);
     }
 
-    if (ImplIsSysColorEntry(nColor))
-        return CreateSolidBrush(PALRGB_TO_RGB(nBrushColor));
+    return CreateDIBPatternBrush(pSalData->mhDitherDIB, DIB_RGB_COLORS);
+}
 
-    if (ImplIsPaletteEntry(nRed, nGreen, nBlue))
-        return CreateSolidBrush(nBrushColor);
+HBRUSH Make8BitDIBPatternBrush(Color nColor)
+{
+    const SalData* pSalData = GetSalData();
+
+    const BYTE nRed   = nColor.GetRed();
+    const BYTE nGreen = nColor.GetGreen();
+    const BYTE nBlue  = nColor.GetBlue();
 
     static const BYTE aOrdDither8Bit[8][8] =
     {
@@ -1540,6 +1539,32 @@ HBRUSH WinSalGraphicsImpl::MakeBrush(Color nColor)
     return CreateDIBPatternBrush(pSalData->mhDitherDIB, DIB_PAL_COLORS);
 }
 
+} // namespace
+
+HBRUSH WinSalGraphicsImpl::MakeBrush(Color nColor)
+{
+    const SalData* pSalData = GetSalData();
+
+    const BYTE        nRed        = nColor.GetRed();
+    const BYTE        nGreen      = nColor.GetGreen();
+    const BYTE        nBlue       = nColor.GetBlue();
+    const COLORREF    nBrushColor = PALETTERGB(nRed, nGreen, nBlue);
+
+    if (mrParent.isPrinter() || !pSalData->mhDitherDIB)
+        return CreateSolidBrush(nBrushColor);
+
+    if (24 == reinterpret_cast<BITMAPINFOHEADER*>(pSalData->mpDitherDIB)->biBitCount)
+        return Make16BitDIBPatternBrush(nColor);
+
+    if (ImplIsSysColorEntry(nColor))
+        return CreateSolidBrush(PALRGB_TO_RGB(nBrushColor));
+
+    if (ImplIsPaletteEntry(nRed, nGreen, nBlue))
+        return CreateSolidBrush(nBrushColor);
+
+    return Make8BitDIBPatternBrush(nColor);
+}
+
 void WinSalGraphicsImpl::ResetBrush(HBRUSH hNewBrush)
 {
     HBRUSH hOldBrush = SelectBrush(mrParent.getHDC(), hNewBrush);


More information about the Libreoffice-commits mailing list