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:
committed by
Samuel Mehrbrodt
parent
d77081946f
commit
b0db1f4c79
@@ -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;
|
||||
|
@@ -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: */
|
||||
|
Reference in New Issue
Block a user