[Libreoffice-commits] core.git: include/svx svx/source

Rishabh Kumar kris.kr296 at gmail.com
Wed Jul 20 21:53:06 UTC 2016


 include/svx/xtable.hxx          |    5 ++
 svx/source/xoutdev/xtabptrn.cxx |   69 ++++++++++++++++++++++++++++++++++++++--
 2 files changed, 71 insertions(+), 3 deletions(-)

New commits:
commit b0db1f4c79e12b4fc96f82b362b332d9ffb6e87c
Author: Rishabh Kumar <kris.kr296 at gmail.com>
Date:   Wed Jul 20 00:59:13 2016 +0530

    Make pattern preset preview resizeable
    
    Change-Id: I24e46ca08993cb359eddade72cd9bc4fda4512ff
    Reviewed-on: https://gerrit.libreoffice.org/27323
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/include/svx/xtable.hxx b/include/svx/xtable.hxx
index e17a0227..a692f39 100644
--- a/include/svx/xtable.hxx
+++ b/include/svx/xtable.hxx
@@ -397,6 +397,9 @@ public:
 
 class SVX_DLLPUBLIC XPatternList : public XPropertyList
 {
+private:
+    Bitmap CreateBitmap( long nIndex, const Size& rSize ) const;
+
 protected:
     virtual Bitmap CreateBitmapForUI(long nIndex) override;
 
@@ -406,9 +409,9 @@ public:
 
     using XPropertyList::Replace;
     using XPropertyList::Remove;
-
     XBitmapEntry* Remove(long nIndex);
     XBitmapEntry* GetBitmap(long nIndex) const;
+    Bitmap GetBitmapForPreview(long nIndex, const Size& rSize);
 
     virtual css::uno::Reference< css::container::XNameContainer > createInstance() override;
     virtual bool Create() override;
diff --git a/svx/source/xoutdev/xtabptrn.cxx b/svx/source/xoutdev/xtabptrn.cxx
index 6fcfec9..9cbda46 100644
--- a/svx/source/xoutdev/xtabptrn.cxx
+++ b/svx/source/xoutdev/xtabptrn.cxx
@@ -27,6 +27,8 @@
 #include <svx/xtable.hxx>
 #include <svx/xpool.hxx>
 #include <svx/xbtmpit.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
 
 using namespace com::sun::star;
 
@@ -84,9 +86,72 @@ bool XPatternList::Create()
     return true;
 }
 
-Bitmap XPatternList::CreateBitmapForUI( long /*nIndex*/ )
+Bitmap XPatternList::CreateBitmap( long nIndex, const Size& rSize ) const
 {
-    return Bitmap();
+    OSL_ENSURE( nIndex < Count(), "Access out of range" );
+
+    if(nIndex < Count())
+    {
+        BitmapEx rBitmapEx = GetBitmap( nIndex )->GetGraphicObject().GetGraphic().GetBitmapEx();
+        ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
+        pVirtualDevice->SetOutputSizePixel(rSize);
+
+        if(rBitmapEx.IsTransparent())
+        {
+            const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+            if(rStyleSettings.GetPreviewUsesCheckeredBackground())
+            {
+                const Point aNull(0, 0);
+                static const sal_uInt32 nLen(8);
+                static const Color aW(COL_WHITE);
+                static const Color aG(0xef, 0xef, 0xef);
+
+                pVirtualDevice->DrawCheckered(aNull, rSize, nLen, aW, aG);
+            }
+            else
+            {
+                pVirtualDevice->SetBackground(rStyleSettings.GetFieldColor());
+                pVirtualDevice->Erase();
+            }
+        }
+
+        if(rBitmapEx.GetSizePixel().Width() >= rSize.Width() && rBitmapEx.GetSizePixel().Height() >= rSize.Height())
+        {
+            rBitmapEx.Scale(rSize);
+            pVirtualDevice->DrawBitmapEx(Point(0, 0), rBitmapEx);
+        }
+        else
+        {
+            const Size aBitmapSize(rBitmapEx.GetSizePixel());
+
+            for(long y(0); y < rSize.Height(); y += aBitmapSize.Height())
+            {
+                for(long x(0); x < rSize.Width(); x += aBitmapSize.Width())
+                {
+                    pVirtualDevice->DrawBitmapEx(
+                        Point(x, y),
+                        rBitmapEx);
+                }
+            }
+        }
+        rBitmapEx = pVirtualDevice->GetBitmap(Point(0, 0), rSize);
+        return rBitmapEx.GetBitmap();
+    }
+    else
+        return Bitmap();
+}
+
+Bitmap XPatternList::CreateBitmapForUI( long nIndex )
+{
+    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+    const Size& rSize = rStyleSettings.GetListBoxPreviewDefaultPixelSize();
+    return CreateBitmap(nIndex, rSize);
+}
+
+Bitmap XPatternList::GetBitmapForPreview( long nIndex, const Size& rSize )
+{
+    return CreateBitmap(nIndex, rSize);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list