Make pattern preset preview resizeable

Change-Id: I24e46ca08993cb359eddade72cd9bc4fda4512ff
Reviewed-on: https://gerrit.libreoffice.org/27323
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
This commit is contained in:
Rishabh Kumar
2016-07-20 00:59:13 +05:30
committed by Samuel Mehrbrodt
parent d77081946f
commit b0db1f4c79
2 changed files with 71 additions and 3 deletions

View File

@@ -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;

View File

@@ -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: */