diff options
author | Armin Le Grand <alg@apache.org> | 2012-05-10 09:29:55 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-03-15 15:24:52 +0000 |
commit | c97aec0d2276901c20634abe53867f739f420f50 (patch) | |
tree | db775ba307edfffaa990a5d01361ae5c53c43f28 | |
parent | d2cccde341af33b72378f3e7b0e8dd9ff1cd5e65 (diff) |
Related: #i119125# change XFillBitmapItem to work with GraphicObject
Completely changed XFillBitmapItem to work with GraphicObject, removed XOBitmap
class, adapted all usages (also the pretty old 8x8 pixel editor).
All Bitmap fill styles will now accept transparent bitmaps as fillings in all
variations (tiled, etc.). LoadSave is no problem, ODF defines graphic as
content for fill. Backward means that OOs before this change will use a white
background of fill with transparent, same as the fallback all the time when
using a transparent fill.
This is also a preparation to e.g. offer SVG or Metafiles as fill style.
Conflicts:
cui/source/tabpages/backgrnd.cxx
cui/source/tabpages/tparea.cxx
cui/source/tabpages/tpbitmap.cxx
filter/source/msfilter/msdffimp.cxx
filter/source/msfilter/svdfppt.cxx
sc/source/filter/excel/xiescher.cxx
sd/source/ui/func/fupage.cxx
svx/inc/svx/dlgctrl.hxx
svx/inc/svx/xbitmap.hxx
svx/inc/svx/xbtmpit.hxx
svx/inc/svx/xtable.hxx
svx/source/customshapes/EnhancedCustomShape2d.cxx
svx/source/dialog/dlgctrl.cxx
svx/source/svdraw/svdograf.cxx
svx/source/tbxctrls/fillctrl.cxx
svx/source/unodraw/XPropertyTable.cxx
svx/source/xoutdev/xattrbmp.cxx
svx/source/xoutdev/xtabbtmp.cxx
Change-Id: Id838bfbacc863695d078fb3cf379d1c0cd951680
40 files changed, 571 insertions, 1096 deletions
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx index d84cf85117b3..930073fad779 100644 --- a/cui/source/tabpages/backgrnd.cxx +++ b/cui/source/tabpages/backgrnd.cxx @@ -53,6 +53,8 @@ #include <svx/xflgrit.hxx> #include <svl/intitem.hxx> #include <sfx2/request.hxx> +#include <svtools/grfmgr.hxx> + using namespace ::com::sun::star; // static ---------------------------------------------------------------- diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx index 952d6121bd2c..c6716c1798e6 100644 --- a/cui/source/tabpages/tparea.cxx +++ b/cui/source/tabpages/tparea.cxx @@ -1142,9 +1142,9 @@ sal_Bool SvxAreaTabPage::FillItemSet( SfxItemSet& rAttrs ) if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != aLbBitmap.GetSavedValue() ) { - XOBitmap aXOBitmap = pBitmapList->GetBitmap( nPos )->GetXBitmap(); - String aString = aLbBitmap.GetSelectEntry(); - XFillBitmapItem aFillBitmapItem( aString, aXOBitmap ); + const XBitmapEntry* pXBitmapEntry = pBitmapList->GetBitmap(nPos); + const String aString(aLbBitmap.GetSelectEntry()); + const XFillBitmapItem aFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject()); pOld = GetOldItem( rAttrs, XATTR_FILLBITMAP ); if ( !pOld || !( *(const XFillBitmapItem*)pOld == aFillBitmapItem ) ) { @@ -2225,15 +2225,15 @@ IMPL_LINK_NOARG(SvxAreaTabPage, ModifyBitmapHdl_Impl) if( _nPos != LISTBOX_ENTRY_NOTFOUND ) { // fill ItemSet and pass it on to aCtlXRectPreview - XBitmapEntry* pEntry = pBitmapList->GetBitmap( _nPos ); + const XBitmapEntry* pEntry = pBitmapList->GetBitmap(_nPos); - rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) ); - rXFSet.Put( XFillBitmapItem( String(), pEntry->GetXBitmap() ) ); + rXFSet.Put(XFillStyleItem(XFILL_BITMAP)); + rXFSet.Put(XFillBitmapItem(String(), pEntry->GetGraphicObject())); } else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True, &pPoolItem ) ) { - rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) ); - rXFSet.Put( XFillBitmapItem( String(), ( ( const XFillBitmapItem* ) pPoolItem )->GetBitmapValue() ) ); + rXFSet.Put(XFillStyleItem(XFILL_BITMAP)); + rXFSet.Put(XFillBitmapItem(String(), ((const XFillBitmapItem*)pPoolItem)->GetGraphicObject())); } else rXFSet.Put( XFillStyleItem( XFILL_NONE ) ); diff --git a/cui/source/tabpages/tpbitmap.cxx b/cui/source/tabpages/tpbitmap.cxx index 6a4b74b139f0..3ed60c3366a2 100644 --- a/cui/source/tabpages/tpbitmap.cxx +++ b/cui/source/tabpages/tpbitmap.cxx @@ -89,7 +89,7 @@ SvxBitmapTabPage::SvxBitmapTabPage pXPool ( (XOutdevItemPool*) rInAttrs.GetPool() ), aXFStyleItem ( XFILL_BITMAP ), - aXBitmapItem ( String(), XOBitmap() ), + aXBitmapItem ( String(), Graphic() ), aXFillAttr ( pXPool ), rXFSet ( aXFillAttr.GetItemSet() ) { @@ -237,32 +237,26 @@ sal_Bool SvxBitmapTabPage::FillItemSet( SfxItemSet& _rOutAttrs ) { if( *pDlgType == 0 && *pbAreaTP == sal_False ) // area dialog { - if( *pPageType == PT_BITMAP ) + if(PT_BITMAP == *pPageType) { - // CheckChanges_Impl(); <-- duplicate inquiry? - - XOBitmap aXOBitmap; - String aString; + _rOutAttrs.Put(XFillStyleItem(XFILL_BITMAP)); sal_uInt16 nPos = aLbBitmaps.GetSelectEntryPos(); - if( nPos != LISTBOX_ENTRY_NOTFOUND ) + if(LISTBOX_ENTRY_NOTFOUND != nPos) { - aXOBitmap = pBitmapList->GetBitmap( nPos )->GetXBitmap(); - aString = aLbBitmaps.GetSelectEntry(); + const XBitmapEntry* pXBitmapEntry = pBitmapList->GetBitmap(nPos); + const String aString(aLbBitmaps.GetSelectEntry()); + _rOutAttrs.Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); } else { - aXOBitmap = aBitmapCtl.GetXBitmap(); - - // #85339# if it's an array, force conversion to bitmap before using it. - if(aXOBitmap.GetBitmapType() == XBITMAP_8X8) - aXOBitmap.GetBitmap(); + const BitmapEx aBitmapEx(aBitmapCtl.GetBitmapEx()); + _rOutAttrs.Put(XFillBitmapItem(String(), Graphic(aBitmapEx))); } - _rOutAttrs.Put( XFillStyleItem( XFILL_BITMAP ) ); - _rOutAttrs.Put( XFillBitmapItem( aString, aXOBitmap ) ); } } + return sal_True; } @@ -278,7 +272,7 @@ void SvxBitmapTabPage::Reset( const SfxItemSet& ) aBitmapCtl.SetBmpArray( aCtlPixel.GetBitmapPixelPtr() ); // get bitmap and display it - XFillBitmapItem aBmpItem( (const String &) String(), aBitmapCtl.GetXBitmap() ); + const XFillBitmapItem aBmpItem(OUString(), Graphic(aBitmapCtl.GetBitmapEx())); rXFSet.Put( aBmpItem ); aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); aCtlPreview.Invalidate(); @@ -313,145 +307,49 @@ SfxTabPage* SvxBitmapTabPage::Create( Window* pWindow, IMPL_LINK_NOARG(SvxBitmapTabPage, ChangeBitmapHdl_Impl) { - XOBitmap* pXOBitmap = NULL; - int nPos = aLbBitmaps.GetSelectEntryPos(); + GraphicObject* pGraphicObject = 0; + int nPos(aLbBitmaps.GetSelectEntryPos()); - if( nPos != LISTBOX_ENTRY_NOTFOUND ) - pXOBitmap = new XOBitmap( ( (XBitmapEntry*) pBitmapList->GetBitmap( nPos ) )->GetXBitmap() ); + if(LISTBOX_ENTRY_NOTFOUND != nPos) + { + pGraphicObject = new GraphicObject(pBitmapList->GetBitmap(nPos)->GetGraphicObject()); + } else { - const SfxPoolItem* pPoolItem = NULL; - if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLSTYLE ), sal_True, &pPoolItem ) ) + const SfxPoolItem* pPoolItem = 0; + + if(SFX_ITEM_SET == rOutAttrs.GetItemState(GetWhich(XATTR_FILLSTYLE), true, &pPoolItem)) { - XFillStyle eXFS = (XFillStyle) ( ( const XFillStyleItem* ) pPoolItem )->GetValue(); - if( ( XFILL_BITMAP == eXFS ) && - ( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True, &pPoolItem ) ) ) + const XFillStyle eXFS((XFillStyle)((const XFillStyleItem*)pPoolItem)->GetValue()); + + if((XFILL_BITMAP == eXFS) && (SFX_ITEM_SET == rOutAttrs.GetItemState(GetWhich(XATTR_FILLBITMAP), true, &pPoolItem))) { - pXOBitmap = new XOBitmap( ( ( const XFillBitmapItem* ) pPoolItem )->GetBitmapValue() ); + pGraphicObject = new GraphicObject(((const XFillBitmapItem*)pPoolItem)->GetGraphicObject()); } } - if( !pXOBitmap ) + + if(!pGraphicObject) { - aLbBitmaps.SelectEntryPos( 0 ); + aLbBitmaps.SelectEntryPos(0); nPos = aLbBitmaps.GetSelectEntryPos(); - if( nPos != LISTBOX_ENTRY_NOTFOUND ) - pXOBitmap = new XOBitmap( ( (XBitmapEntry*) pBitmapList->GetBitmap( nPos ) )->GetXBitmap() ); - } - } - if( pXOBitmap ) - { - // #85339# try to convert bitmapped item to array item. - if(pXOBitmap->GetBitmapType() == XBITMAP_IMPORT) - { - Bitmap aBitmap(pXOBitmap->GetBitmap()); - Size aSizePixel(aBitmap.GetSizePixel()); - if(8 == aSizePixel.Width() && 8 == aSizePixel.Height()) + if(LISTBOX_ENTRY_NOTFOUND != nPos) { - sal_uInt16* pPixelArray = new sal_uInt16[64]; - sal_uInt32 nCol1(0xffffffff); // background - sal_uInt32 nCol2(0xffffffff); // pixel - BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess(); - sal_Bool bValid(sal_True); - - if(pAccess) - { - for(sal_uInt32 a(0); bValid && a < 64; a++) - { - const BitmapColor aBmCol = pAccess->GetColor(a>>3, a%8); - Color aRgbCol(aBmCol.GetRed(), aBmCol.GetGreen(), aBmCol.GetBlue()); - sal_uInt32 nColVal = aRgbCol.GetRGBColor(); - - // test with nCol1 - if(nCol1 != nColVal) - { - if(0xffffffff == nCol1) - { - // nCol1 is used first time - nCol1 = nColVal; - pPixelArray[a] = 0; - } - else - { - // test with nCol2 - if(nCol2 != nColVal) - { - if(0xffffffff == nCol2) - { - // nCol2 used first time - nCol2 = nColVal; - pPixelArray[a] = 1; - } - else - { - // Third color detected - bValid = sal_False; - } - } - else - { - // color is pixel color - pPixelArray[a] = 1; - } - } - } - else - { - // color is background color - pPixelArray[a] = 0; - } - } - - // release ReadAccess - aBitmap.ReleaseAccess(pAccess); - } - else - { - // no access -> no success - bValid = sal_False; - } - - if(bValid) - { - Color aCol1(nCol1); - Color aCol2(nCol2); - - // no pixel color found? Use opposite od background color. - if(0xffffffff == nCol2) - { - aCol2 = Color( - 0xff - aCol1.GetRed(), - 0xff - aCol1.GetGreen(), - 0xff - aCol1.GetBlue()); - } - - // transformation did work, create a new Item - delete pXOBitmap; - pXOBitmap = new XOBitmap(pPixelArray, aCol2, aCol1); - } - - // cleanup - delete[] pPixelArray; + pGraphicObject = new GraphicObject(pBitmapList->GetBitmap(nPos)->GetGraphicObject()); } } + } + + if(pGraphicObject) + { + BitmapColor aBack; + BitmapColor aFront; + bool bIs8x8(isHistorical8x8(pGraphicObject->GetGraphic().GetBitmap(), aBack, aFront)); aLbColor.SetNoSelection(); aLbBackgroundColor.SetNoSelection(); - if( pXOBitmap->GetBitmapType() == XBITMAP_IMPORT ) - { - aCtlPixel.Reset(); - aCtlPixel.SetPaintable( sal_False ); - aCtlPixel.Disable(); - aFtPixelEdit.Disable(); - aFtColor.Disable(); - aLbColor.Disable(); - aFtBackgroundColor.Disable(); - aLbBackgroundColor.Disable(); - aBtnModify.Disable(); - aBtnAdd.Disable(); - } - else if( pXOBitmap->GetBitmapType() == XBITMAP_8X8 ) + if(bIs8x8) { aCtlPixel.SetPaintable( sal_True ); aCtlPixel.Enable(); @@ -464,10 +362,10 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ChangeBitmapHdl_Impl) aBtnAdd.Enable(); // setting the pixel control - aCtlPixel.SetXBitmap( *pXOBitmap ); + aCtlPixel.SetXBitmap(pGraphicObject->GetGraphic().GetBitmapEx()); - Color aPixelColor = pXOBitmap->GetPixelColor(); - Color aBackColor = pXOBitmap->GetBackgroundColor(); + Color aPixelColor = aFront; + Color aBackColor = aBack; aBitmapCtl.SetPixelColor( aPixelColor ); aBitmapCtl.SetBackgroundColor( aBackColor ); @@ -493,19 +391,34 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ChangeBitmapHdl_Impl) aLbBackgroundColor.SelectEntry( aBackColor ); } } + else + { + aCtlPixel.Reset(); + aCtlPixel.SetPaintable( sal_False ); + aCtlPixel.Disable(); + aFtPixelEdit.Disable(); + aFtColor.Disable(); + aLbColor.Disable(); + aFtBackgroundColor.Disable(); + aLbBackgroundColor.Disable(); + aBtnModify.Disable(); + aBtnAdd.Disable(); + } + aCtlPixel.Invalidate(); // display bitmap - XFillBitmapItem aXBmpItem( (const String &) String(), *pXOBitmap ); + const XFillBitmapItem aXBmpItem(String(), *pGraphicObject); rXFSet.Put( aXBmpItem ); aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); aCtlPreview.Invalidate(); bBmpChanged = sal_False; - delete pXOBitmap; + delete pGraphicObject; } - return 0L; + + return 0; } // ----------------------------------------------------------------------- @@ -624,21 +537,17 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickAddHdl_Impl) XBitmapEntry* pEntry = 0; if( aCtlPixel.IsEnabled() ) { - XOBitmap aXOBitmap = aBitmapCtl.GetXBitmap(); + const BitmapEx aBitmapEx(aBitmapCtl.GetBitmapEx()); - // #85339# if it's an array, force conversion to bitmap before using it. - if(aXOBitmap.GetBitmapType() == XBITMAP_8X8) - aXOBitmap.GetBitmap(); - - pEntry = new XBitmapEntry( aXOBitmap, aName ); + pEntry = new XBitmapEntry(Graphic(aBitmapEx), aName); } else // it must be a not existing imported bitmap { - const SfxPoolItem* pPoolItem = NULL; - if( SFX_ITEM_SET == rOutAttrs.GetItemState( XATTR_FILLBITMAP, sal_True, &pPoolItem ) ) + const SfxPoolItem* pPoolItem = 0; + + if(SFX_ITEM_SET == rOutAttrs.GetItemState(XATTR_FILLBITMAP, true, &pPoolItem)) { - XOBitmap aXOBitmap( ( ( const XFillBitmapItem* ) pPoolItem )->GetBitmapValue() ); - pEntry = new XBitmapEntry( aXOBitmap, aName ); + pEntry = new XBitmapEntry(dynamic_cast< const XFillBitmapItem* >(pPoolItem)->GetGraphicObject(), aName); } } @@ -746,9 +655,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickImportHdl_Impl) if( !nError ) { - Bitmap aBmp( aGraphic.GetBitmap() ); - XBitmapEntry* pEntry = - new XBitmapEntry( XOBitmap( aBmp ), aName ); + XBitmapEntry* pEntry = new XBitmapEntry( aGraphic, aName ); pBitmapList->Insert( pEntry ); aLbBitmaps.Append( pEntry ); @@ -819,13 +726,9 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickModifyHdl_Impl) pEntry->SetName( aName ); - XOBitmap aXOBitmap = aBitmapCtl.GetXBitmap(); - - // #85339# if it's an array, force conversion to bitmap before using it. - if(aXOBitmap.GetBitmapType() == XBITMAP_8X8) - aXOBitmap.GetBitmap(); + const BitmapEx aBitmapEx(aBitmapCtl.GetBitmapEx()); - pEntry->SetXBitmap( aXOBitmap ); + pEntry->SetGraphicObject(Graphic(aBitmapEx)); aLbBitmaps.Modify( pEntry, nPos ); aLbBitmaps.SelectEntryPos( nPos ); @@ -1043,7 +946,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ChangePixelColorHdl_Impl) aBitmapCtl.SetPixelColor( aLbColor.GetSelectEntryColor() ); // get bitmap and display it - rXFSet.Put( XFillBitmapItem( String(), aBitmapCtl.GetXBitmap() ) ); + rXFSet.Put(XFillBitmapItem(String(), Graphic(aBitmapCtl.GetBitmapEx()))); aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); aCtlPreview.Invalidate(); @@ -1062,7 +965,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ChangeBackgrndColorHdl_Impl) aBitmapCtl.SetBackgroundColor( aLbBackgroundColor.GetSelectEntryColor() ); // get bitmap and display it - rXFSet.Put( XFillBitmapItem( String(), aBitmapCtl.GetXBitmap() ) ); + rXFSet.Put(XFillBitmapItem(String(), Graphic(aBitmapCtl.GetBitmapEx()))); aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); aCtlPreview.Invalidate(); @@ -1080,7 +983,7 @@ void SvxBitmapTabPage::PointChanged( Window* pWindow, RECT_POINT ) aBitmapCtl.SetBmpArray( aCtlPixel.GetBitmapPixelPtr() ); // get bitmap and display it - rXFSet.Put( XFillBitmapItem( String(), aBitmapCtl.GetXBitmap() ) ); + rXFSet.Put(XFillBitmapItem(String(), Graphic(aBitmapCtl.GetBitmapEx()))); aCtlPreview.SetAttributes( aXFillAttr.GetItemSet() ); aCtlPreview.Invalidate(); diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx index 77a9a005a329..303647465959 100644 --- a/cui/source/tabpages/tpline.cxx +++ b/cui/source/tabpages/tpline.cxx @@ -48,7 +48,6 @@ #include <sfx2/objsh.hxx> #include <editeng/brushitem.hxx> #include <svx/gallery.hxx> -#include <svx/xbitmap.hxx> #include <unotools/localfilehelper.hxx> #include "paragrph.hrc" #include "sfx2/opengrf.hxx" diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx index 3f04c869453c..602455ea075a 100644 --- a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx +++ b/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx @@ -25,7 +25,7 @@ ////////////////////////////////////////////////////////////////////////////// // predefines -class Bitmap; +class BitmapEx; namespace basegfx { class B2DRange; @@ -51,7 +51,7 @@ namespace drawinglayer public: /// constructors/assignmentoperator/destructor SdrFillBitmapAttribute( - const Bitmap& rBitmap, + const BitmapEx& rBitmapEx, const basegfx::B2DVector& rSize, const basegfx::B2DVector& rOffset, const basegfx::B2DVector& rOffsetPosition, @@ -71,7 +71,7 @@ namespace drawinglayer bool operator==(const SdrFillBitmapAttribute& rCandidate) const; // data read access - const Bitmap& getBitmap() const; + const BitmapEx& getBitmapEx() const; const basegfx::B2DVector& getSize() const; const basegfx::B2DVector& getOffset() const; const basegfx::B2DVector& getOffsetPosition() const; diff --git a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx b/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx index 600777863bc8..5d86525c6d98 100644 --- a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx +++ b/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx @@ -34,7 +34,7 @@ namespace drawinglayer sal_uInt32 mnRefCount; // data definitions - Bitmap maBitmap; + BitmapEx maBitmapEx; basegfx::B2DVector maSize; basegfx::B2DVector maOffset; basegfx::B2DVector maOffsetPosition; @@ -46,7 +46,7 @@ namespace drawinglayer unsigned mbLogSize : 1; ImpSdrFillBitmapAttribute( - const Bitmap& rBitmap, + const BitmapEx& rBitmapEx, const basegfx::B2DVector& rSize, const basegfx::B2DVector& rOffset, const basegfx::B2DVector& rOffsetPosition, @@ -55,7 +55,7 @@ namespace drawinglayer bool bStretch, bool bLogSize) : mnRefCount(0), - maBitmap(rBitmap), + maBitmapEx(rBitmapEx), maSize(rSize), maOffset(rOffset), maOffsetPosition(rOffsetPosition), @@ -67,7 +67,7 @@ namespace drawinglayer } // data read access - const Bitmap& getBitmap() const { return maBitmap; } + const BitmapEx& getBitmapEx() const { return maBitmapEx; } const basegfx::B2DVector& getSize() const { return maSize; } const basegfx::B2DVector& getOffset() const { return maOffset; } const basegfx::B2DVector& getOffsetPosition() const { return maOffsetPosition; } @@ -78,7 +78,7 @@ namespace drawinglayer bool operator==(const ImpSdrFillBitmapAttribute& rCandidate) const { - return (getBitmap() == rCandidate.getBitmap() + return (getBitmapEx() == rCandidate.getBitmapEx() && getSize() == rCandidate.getSize() && getOffset() == rCandidate.getOffset() && getOffsetPosition() == rCandidate.getOffsetPosition() @@ -95,7 +95,7 @@ namespace drawinglayer if(!pDefault) { pDefault = new ImpSdrFillBitmapAttribute( - Bitmap(), + BitmapEx(), basegfx::B2DVector(), basegfx::B2DVector(), basegfx::B2DVector(), @@ -113,7 +113,7 @@ namespace drawinglayer }; SdrFillBitmapAttribute::SdrFillBitmapAttribute( - const Bitmap& rBitmap, + const BitmapEx& rBitmapEx, const basegfx::B2DVector& rSize, const basegfx::B2DVector& rOffset, const basegfx::B2DVector& rOffsetPosition, @@ -121,8 +121,16 @@ namespace drawinglayer bool bTiling, bool bStretch, bool bLogSize) - : mpSdrFillBitmapAttribute(new ImpSdrFillBitmapAttribute( - rBitmap, rSize, rOffset, rOffsetPosition, rRectPoint, bTiling, bStretch, bLogSize)) + : mpSdrFillBitmapAttribute( + new ImpSdrFillBitmapAttribute( + rBitmapEx, + rSize, + rOffset, + rOffsetPosition, + rRectPoint, + bTiling, + bStretch, + bLogSize)) { } @@ -190,9 +198,9 @@ namespace drawinglayer return (*rCandidate.mpSdrFillBitmapAttribute == *mpSdrFillBitmapAttribute); } - const Bitmap& SdrFillBitmapAttribute::getBitmap() const + const BitmapEx& SdrFillBitmapAttribute::getBitmapEx() const { - return mpSdrFillBitmapAttribute->getBitmap(); + return mpSdrFillBitmapAttribute->getBitmapEx(); } const basegfx::B2DVector& SdrFillBitmapAttribute::getSize() const @@ -228,8 +236,8 @@ namespace drawinglayer FillBitmapAttribute SdrFillBitmapAttribute::getFillBitmapAttribute(const basegfx::B2DRange& rRange) const { // get logical size of bitmap (before expanding eventually) - Bitmap aBitmap(getBitmap()); - const basegfx::B2DVector aLogicalSize(aBitmap.GetPrefSize().getWidth(), aBitmap.GetPrefSize().getHeight()); + BitmapEx aBitmapEx(getBitmapEx()); + const basegfx::B2DVector aLogicalSize(aBitmapEx.GetPrefSize().getWidth(), aBitmapEx.GetPrefSize().getHeight()); // get hor/ver shiftings and apply them eventually to the bitmap, but only // when tiling is on @@ -240,45 +248,45 @@ namespace drawinglayer { if(0.0 != getOffset().getX() || 0.0 != getOffset().getY()) { - const sal_uInt32 nWidth(aBitmap.GetSizePixel().getWidth()); - const sal_uInt32 nHeight(aBitmap.GetSizePixel().getHeight()); + const sal_uInt32 nWidth(aBitmapEx.GetSizePixel().getWidth()); + const sal_uInt32 nHeight(aBitmapEx.GetSizePixel().getHeight()); if(0.0 != getOffset().getX()) { bExpandHeight = true; const sal_uInt32 nOffset(basegfx::fround(((double)nWidth * getOffset().getX()) / 100.0)); - aBitmap.Expand(0L, nHeight); + aBitmapEx.Expand(0L, nHeight); const Size aSizeA(nOffset, nHeight); const Rectangle aDstA(Point(0L, nHeight), aSizeA); const Rectangle aSrcA(Point(nWidth - nOffset, 0L), aSizeA); - aBitmap.CopyPixel(aDstA, aSrcA); + aBitmapEx.CopyPixel(aDstA, aSrcA); const Size aSizeB(nWidth - nOffset, nHeight); const Rectangle aDstB(Point(nOffset, nHeight), aSizeB); const Rectangle aSrcB(Point(0L, 0L), aSizeB); - aBitmap.CopyPixel(aDstB, aSrcB); + aBitmapEx.CopyPixel(aDstB, aSrcB); } else { bExpandWidth = true; const sal_uInt32 nOffset(basegfx::fround(((double)nHeight * getOffset().getY()) / 100.0)); - aBitmap.Expand(nWidth, 0L); + aBitmapEx.Expand(nWidth, 0L); const Size aSize(nWidth, nHeight); const Rectangle aDst(Point(nWidth, 0L), aSize); const Rectangle aSrc(Point(0L, 0L), aSize); - aBitmap.CopyPixel(aDst, aSrc); + aBitmapEx.CopyPixel(aDst, aSrc); const Size aSizeA(nWidth, nOffset); const Rectangle aDstA(Point(0L, 0L), aSizeA); const Rectangle aSrcA(Point(nWidth, nHeight - nOffset), aSizeA); - aBitmap.CopyPixel(aDstA, aSrcA); + aBitmapEx.CopyPixel(aDstA, aSrcA); const Size aSizeB(nWidth, nHeight - nOffset); const Rectangle aDstB(Point(0L, nOffset), aSizeB); const Rectangle aSrcB(Point(nWidth, 0L), aSizeB); - aBitmap.CopyPixel(aDstB, aSrcB); + aBitmapEx.CopyPixel(aDstB, aSrcB); } } } @@ -379,7 +387,7 @@ namespace drawinglayer aBitmapSize.setY(aBitmapSize.getY() / fRangeHeight); } - return FillBitmapAttribute(BitmapEx(aBitmap), aBitmapTopLeft, aBitmapSize, getTiling()); + return FillBitmapAttribute(aBitmapEx, aBitmapTopLeft, aBitmapSize, getTiling()); } } // end of namespace attribute } // end of namespace drawinglayer diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 3cb83e92e937..71b69149d2d7 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -1234,9 +1234,8 @@ void ApplyRectangularGradientAsBitmap( const SvxMSDffManager& rManager, SvStream } } - XOBitmap aXBmp( aBitmap, XBITMAP_STRETCH ); - rSet.Put( XFillBmpTileItem( sal_False ) ); - rSet.Put( XFillBitmapItem( OUString(), aXBmp ) ); + rSet.Put(XFillBmpTileItem(false)); + rSet.Put(XFillBitmapItem(OUString(), Graphic(aBitmap))); } } } @@ -1370,54 +1369,30 @@ void DffPropertyReader::ApplyFillAttributes( SvStream& rIn, SfxItemSet& rSet, co bOK = SeekToContent( DFF_Prop_fillBlip, rIn ) && rManager.GetBLIPDirect( rIn, aGraf, NULL ); if ( bOK ) { - Bitmap aBmp( aGraf.GetBitmap() ); - if ( eMSO_FillType == mso_fillPattern ) { Color aCol1( COL_WHITE ), aCol2( COL_WHITE ); + if ( IsProperty( DFF_Prop_fillColor ) ) aCol1 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillColor ), DFF_Prop_fillColor ); + if ( IsProperty( DFF_Prop_fillBackColor ) ) aCol2 = rManager.MSO_CLR_ToColor( GetPropertyValue( DFF_Prop_fillBackColor ), DFF_Prop_fillBackColor ); - XOBitmap aXOBitmap; - aXOBitmap.SetBitmap( aBmp ); - aXOBitmap.SetBitmapType( XBITMAP_IMPORT ); - - if( aBmp.GetSizePixel().Width() == 8 && aBmp.GetSizePixel().Height() == 8 && aBmp.GetColorCount() == 2) - { - aXOBitmap.Bitmap2Array(); - aXOBitmap.SetBitmapType( XBITMAP_8X8 ); - aXOBitmap.SetPixelSize( aBmp.GetSizePixel() ); - - if( aXOBitmap.GetBackgroundColor() == COL_BLACK ) - { - aXOBitmap.SetPixelColor( aCol1 ); - aXOBitmap.SetBackgroundColor( aCol2 ); - } - else - { - aXOBitmap.SetPixelColor( aCol2 ); - aXOBitmap.SetBackgroundColor( aCol1 ); - } - aXOBitmap.Array2Bitmap(); - } - rSet.Put( XFillBitmapItem( OUString(), aXOBitmap ) ); + rSet.Put(XFillBitmapItem(OUString(), aGraf)); } else if ( eMSO_FillType == mso_fillTexture ) { - XOBitmap aXBmp( aBmp, XBITMAP_STRETCH ); - rSet.Put( XFillBmpTileItem( sal_True ) ); - rSet.Put( XFillBitmapItem( OUString(), aXBmp ) ); - rSet.Put( XFillBmpSizeXItem( GetPropertyValue( DFF_Prop_fillWidth, 0 ) / 360 ) ); - rSet.Put( XFillBmpSizeYItem( GetPropertyValue( DFF_Prop_fillHeight, 0 ) / 360 ) ); - rSet.Put( XFillBmpSizeLogItem( sal_True ) ); + rSet.Put(XFillBmpTileItem(true)); + rSet.Put(XFillBitmapItem(OUString(), aGraf)); + rSet.Put(XFillBmpSizeXItem(GetPropertyValue(DFF_Prop_fillWidth, 0) / 360)); + rSet.Put(XFillBmpSizeYItem(GetPropertyValue(DFF_Prop_fillHeight, 0) / 360)); + rSet.Put(XFillBmpSizeLogItem(true)); } else { - XOBitmap aXBmp( aBmp, XBITMAP_STRETCH ); - rSet.Put( XFillBitmapItem( OUString(), aXBmp ) ); - rSet.Put( XFillBmpTileItem( sal_False ) ); + rSet.Put(XFillBitmapItem(OUString(), aGraf)); + rSet.Put(XFillBmpTileItem(false)); } } } diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 113d91244062..44a0b5214264 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -7315,15 +7315,13 @@ void ApplyCellAttributes( const SdrObject* pObj, Reference< XCell >& xCell ) { eFS = com::sun::star::drawing::FillStyle_BITMAP; - XFillBitmapItem aXFillBitmapItem((const XFillBitmapItem&)pObj->GetMergedItem( XATTR_FILLBITMAP )); - XOBitmap aLocalXOBitmap( aXFillBitmapItem.GetBitmapValue() ); + const XFillBitmapItem aXFillBitmapItem((const XFillBitmapItem&)pObj->GetMergedItem( XATTR_FILLBITMAP )); rtl::OUString aURL( RTL_CONSTASCII_USTRINGPARAM(UNO_NAME_GRAPHOBJ_URLPREFIX)); - aURL += rtl::OStringToOUString( - aLocalXOBitmap.GetGraphicObject().GetUniqueID(), + aURL += OStringToOUString( + aXFillBitmapItem.GetGraphicObject().GetUniqueID(), RTL_TEXTENCODING_ASCII_US); - static const rtl::OUString sFillBitmapURL( String( RTL_CONSTASCII_USTRINGPARAM( "FillBitmapURL" ) ) ); - xPropSet->setPropertyValue( sFillBitmapURL, Any( aURL ) ); + xPropSet->setPropertyValue( OUString("FillBitmapURL"), Any( aURL ) ); } break; case XFILL_NONE : diff --git a/lotuswordpro/source/filter/lwpbackgroundstuff.cxx b/lotuswordpro/source/filter/lwpbackgroundstuff.cxx index a38d41920235..0c8deba1ac7f 100644 --- a/lotuswordpro/source/filter/lwpbackgroundstuff.cxx +++ b/lotuswordpro/source/filter/lwpbackgroundstuff.cxx @@ -65,7 +65,6 @@ #include "tools/stream.hxx" #include "vcl/bmpacc.hxx" -#include "svx/xbitmap.hxx" void LwpBackgroundStuff::Read(LwpObjectStream* pStrm) @@ -129,38 +128,9 @@ XFBGImage* LwpBackgroundStuff::GetFillPattern() pPttnArray = NULL; } - // create XOBitmap object from bitmap object - XOBitmap aXOBitmap; - aXOBitmap.SetBitmap( aBmp ); - aXOBitmap.Bitmap2Array(); - aXOBitmap.SetBitmapType( XBITMAP_8X8 ); - - // set back/fore-ground colors - if (m_aFillColor.IsValidColor() && m_aPatternColor.IsValidColor()) - { - Color aBackColor(static_cast<sal_uInt8>(m_aFillColor.GetRed()), - static_cast<sal_uInt8>(m_aFillColor.GetGreen()), - static_cast<sal_uInt8>(m_aFillColor.GetBlue())); - Color aForeColor(static_cast<sal_uInt8>(m_aPatternColor.GetRed()), - static_cast<sal_uInt8>(m_aPatternColor.GetGreen()), - static_cast<sal_uInt8>(m_aPatternColor.GetBlue())); - - if( aXOBitmap.GetBackgroundColor() == COL_BLACK ) - { - aXOBitmap.SetPixelColor( aBackColor ); - aXOBitmap.SetBackgroundColor( aForeColor ); - } - else - { - aXOBitmap.SetPixelColor( aForeColor ); - aXOBitmap.SetBackgroundColor( aBackColor ); - } - } - - // transfer image data from XOBitmap->SvStream->BYTE-Array + // transfer image data from Bitmap->SvStream->BYTE-Array SvMemoryStream aPicMemStream; - aXOBitmap.Array2Bitmap(); - aXOBitmap.GetBitmap().Write(aPicMemStream); + aBmp.Write(aPicMemStream); sal_uInt32 nSize = aPicMemStream.GetEndOfData(); sal_uInt8* pImageBuff = new sal_uInt8 [nSize]; memcpy(pImageBuff, aPicMemStream.GetData(), nSize); diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx index b4a131617286..b51f7b203c4c 100644 --- a/sc/source/filter/excel/xiescher.cxx +++ b/sc/source/filter/excel/xiescher.cxx @@ -670,16 +670,9 @@ void XclImpDrawObjBase::ConvertFillStyle( SdrObject& rSdrObj, const XclObjFillDa aMemStrm << sal_uInt32( pnPattern[ nIdx ] ); // 32-bit little-endian aMemStrm.Seek( STREAM_SEEK_TO_BEGIN ); Bitmap aBitmap; - aBitmap.Read( aMemStrm, false ); - XOBitmap aXOBitmap( aBitmap ); - aXOBitmap.Bitmap2Array(); - aXOBitmap.SetBitmapType( XBITMAP_8X8 ); - if( aXOBitmap.GetBackgroundColor().GetColor() == COL_BLACK ) - ::std::swap( aPattColor, aBackColor ); - aXOBitmap.SetPixelColor( aPattColor ); - aXOBitmap.SetBackgroundColor( aBackColor ); - rSdrObj.SetMergedItem( XFillStyleItem( XFILL_BITMAP ) ); - rSdrObj.SetMergedItem( XFillBitmapItem( EMPTY_STRING, aXOBitmap ) ); + aBitmap.Read( aMemStrm, sal_False ); + rSdrObj.SetMergedItem(XFillStyleItem(XFILL_BITMAP)); + rSdrObj.SetMergedItem(XFillBitmapItem(EMPTY_STRING, Graphic(aBitmap))); } } } diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx index e85878959820..a93edc6707cb 100644 --- a/sc/source/ui/view/viewfun7.cxx +++ b/sc/source/ui/view/viewfun7.cxx @@ -26,7 +26,6 @@ #include <svx/svdpage.hxx> #include <svx/svdpagv.hxx> #include <svx/svdundo.hxx> -#include <svx/xbitmap.hxx> #include <svx/xbtmpit.hxx> #include <svx/xoutbmp.hxx> #include <sfx2/objsh.hxx> @@ -452,15 +451,12 @@ sal_Bool ScViewFunc::ApplyGraphicToObject( SdrObject* pPickObj, const Graphic& r /****************************************************************** * Object gets filled with the graphic ******************************************************************/ - //pScDrawView->BegUndo(ScGlobal::GetRscString(STR_UNDO_DRAGDROP)); pScDrawView->AddUndo(new SdrUndoAttrObj(*pPickObj)); - //pScDrawView->EndUndo(); - XOBitmap aXOBitmap( rGraphic.GetBitmap() ); SfxItemSet aSet( pScDrawView->GetModel()->GetItemPool(), XATTR_FILLSTYLE, XATTR_FILLBITMAP ); aSet.Put(XFillStyleItem(XFILL_BITMAP)); - aSet.Put(XFillBitmapItem(String(), aXOBitmap)); + aSet.Put(XFillBitmapItem(String(), rGraphic)); pPickObj->SetMergedItemSetAndBroadcast(aSet); diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx index 35b0de63a7ae..0a7dc0287b7e 100644 --- a/sd/source/core/drawdoc4.cxx +++ b/sd/source/core/drawdoc4.cxx @@ -169,7 +169,7 @@ void SdDrawDocument::CreateLayoutTemplates() Color aNullColor( COL_WHITE ); Bitmap aNullBmp( aNullSize, 8 ); aNullBmp.Erase( aNullColor ); - rISet.Put(XFillBitmapItem(pPool,aNullBmp)); + rISet.Put(XFillBitmapItem(pPool, Graphic(aNullBmp))); // Shadow attributes (Drawing Engine) rISet.Put(SdrShadowItem(sal_False)); diff --git a/sd/source/ui/func/fupage.cxx b/sd/source/ui/func/fupage.cxx index 31a1e889b9ed..ae49182c2205 100644 --- a/sd/source/ui/func/fupage.cxx +++ b/sd/source/ui/func/fupage.cxx @@ -294,7 +294,7 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent ) // MigrateItemSet makes sure the XFillBitmapItem will have a unique name SfxItemSet aMigrateSet( mpDoc->GetPool(), XATTR_FILLBITMAP, XATTR_FILLBITMAP ); - aMigrateSet.Put( XFillBitmapItem( rtl::OUString("background") , XOBitmap(aGraphic) ) ); + aMigrateSet.Put(XFillBitmapItem(OUString("background"), aGraphic)); mpDoc->MigrateItemSet( &aMigrateSet, pTempSet.get(), NULL ); pTempSet->Put( XFillBmpStretchItem( sal_True )); diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx index b54b56c8f7e8..f9fdabb2edef 100644 --- a/sd/source/ui/view/sdview4.cxx +++ b/sd/source/ui/view/sdview4.cxx @@ -155,10 +155,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction, EndUndo(); } - XOBitmap aXOBitmap( rGraphic.GetBitmap() ); SfxItemSet aSet(mpDocSh->GetPool(), XATTR_FILLSTYLE, XATTR_FILLBITMAP); aSet.Put(XFillStyleItem(XFILL_BITMAP)); - aSet.Put(XFillBitmapItem(&mpDocSh->GetPool(), aXOBitmap)); + aSet.Put(XFillBitmapItem(&mpDocSh->GetPool(), rGraphic)); pPickObj->SetMergedItemSetAndBroadcast(aSet); } } diff --git a/svx/Package_inc.mk b/svx/Package_inc.mk index e1deeab9ecd4..048c5d1a30fc 100644 --- a/svx/Package_inc.mk +++ b/svx/Package_inc.mk @@ -471,7 +471,6 @@ $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sxmsitm.hxx,svx/sxmsitm.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sdtaditm.hxx,svx/sdtaditm.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/svdotext.hxx,svx/svdotext.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/chrtitem.hxx,svx/chrtitem.hxx)) -$(eval $(call gb_Package_add_file,svx_inc,inc/svx/xbitmap.hxx,svx/xbitmap.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sxallitm.hxx,svx/sxallitm.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/dlgutil.hxx,svx/dlgutil.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/unopage.hxx,svx/unopage.hxx)) diff --git a/svx/inc/svx/dlgctrl.hxx b/svx/inc/svx/dlgctrl.hxx index 7aecada36c5c..7297bd559bb5 100644 --- a/svx/inc/svx/dlgctrl.hxx +++ b/svx/inc/svx/dlgctrl.hxx @@ -146,7 +146,7 @@ public: SvxBitmapCtl( Window* pParent, const Size& rSize ); ~SvxBitmapCtl(); - XOBitmap GetXBitmap(); + BitmapEx GetBitmapEx(); void SetBmpArray( const sal_uInt16* pPixel ) { pBmpArray = pPixel; } void SetLines( sal_uInt16 nLns ) { nLines = nLns; } @@ -182,7 +182,7 @@ public: virtual void Paint( const Rectangle& rRect ); virtual void MouseButtonDown( const MouseEvent& rMEvt ); - void SetXBitmap( const XOBitmap& rXOBitmap ); + void SetXBitmap( const BitmapEx& rBitmapEx ); void SetPixelColor( const Color& rCol ) { aPixelColor = rCol; } void SetBackgroundColor( const Color& rCol ) { aBackgroundColor = rCol; } @@ -253,20 +253,20 @@ public: class SVX_DLLPUBLIC BitmapLB : public ListBox { public: - BitmapLB( Window* pParent, ResId Id, sal_Bool bUserDraw = sal_True ); + BitmapLB(Window* pParent, ResId Id, bool bUserDraw = true); - virtual void Fill( const XBitmapListRef &pList ); - virtual void UserDraw( const UserDrawEvent& rUDEvt ); + virtual void Fill(const XBitmapListRef &pList); + virtual void UserDraw(const UserDrawEvent& rUDEvt); - void Append( XBitmapEntry* pEntry, Bitmap* pBmp = NULL ); - void Modify( XBitmapEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp = NULL ); + void Append(XBitmapEntry* pEntry, BitmapEx* pBmpEx = NULL); + void Modify(XBitmapEntry* pEntry, sal_uInt16 nPos, BitmapEx* pBmpEx = NULL); private: - VirtualDevice aVD; - Bitmap aBitmap; + VirtualDevice maVD; + BitmapEx maBitmapEx; XBitmapListRef mpList; - sal_Bool mbUserDraw; + bool mbUserDraw; SVX_DLLPRIVATE void SetVirtualDevice(); }; @@ -276,13 +276,13 @@ private: class FillAttrLB : public ColorListBox { private: - VirtualDevice aVD; - Bitmap aBitmap; + VirtualDevice maVD; + BitmapEx maBitmapEx; void SetVirtualDevice(); public: - FillAttrLB( Window* pParent, WinBits aWB ); + FillAttrLB( Window* pParent, WinBits aWB ); virtual void Fill( const XColorListRef &pList ); virtual void Fill( const XHatchListRef &pList ); diff --git a/svx/inc/svx/xbitmap.hxx b/svx/inc/svx/xbitmap.hxx deleted file mode 100644 index cc0741ddea96..000000000000 --- a/svx/inc/svx/xbitmap.hxx +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef _SVX_XBITMAP_HXX -#define _SVX_XBITMAP_HXX - -#include <tools/color.hxx> -#include <vcl/bitmap.hxx> -#include <svtools/grfmgr.hxx> -#include <svx/xenum.hxx> -#include "svx/svxdllapi.h" - -//--------------- -// class XOBitmap -//--------------- - -class SVX_DLLPUBLIC XOBitmap -{ -protected: - XBitmapType eType; - XBitmapStyle eStyle; - GraphicObject aGraphicObject; - sal_uInt16* pPixelArray; - Size aArraySize; - Color aPixelColor; - Color aBckgrColor; - sal_Bool bGraphicDirty; - -public: - XOBitmap(); - XOBitmap( const GraphicObject& rGraphicObject, XBitmapStyle eStyle = XBITMAP_TILE ); - XOBitmap( const Bitmap& rBitmap, XBitmapStyle eStyle = XBITMAP_TILE ); - XOBitmap( const sal_uInt16* pArray, const Color& aPixelColor, - const Color& aBckgrColor, const Size& rSize = Size( 8, 8 ), - XBitmapStyle eStyle = XBITMAP_TILE ); - XOBitmap( const XOBitmap& rXBmp ); - ~XOBitmap(); - - XOBitmap& operator=( const XOBitmap& rXOBitmap ); - int operator==( const XOBitmap& rXOBitmap ) const; - - void Bitmap2Array(); - void Array2Bitmap(); - - void SetGraphicObject( const GraphicObject& rObj ) { aGraphicObject = rObj; bGraphicDirty = sal_False; } - void SetBitmap( const Bitmap& rBmp ) { aGraphicObject = GraphicObject( Graphic( rBmp ) ); bGraphicDirty = sal_False; } - void SetBitmapType( XBitmapType eNewType ) { eType = eNewType; } - void SetBitmapStyle( XBitmapStyle eNewStyle ) { eStyle = eNewStyle; } - void SetPixelArray( const sal_uInt16* pArray ); - void SetPixelSize( const Size& rSize ) { aArraySize = rSize; bGraphicDirty = sal_True; } - void SetPixelColor( const Color& rColor ) { aPixelColor = rColor; bGraphicDirty = sal_True; } - void SetBackgroundColor( const Color& rColor ) { aBckgrColor = rColor; bGraphicDirty = sal_True; } - - XBitmapType GetBitmapType() const { return eType; } - XBitmapStyle GetBitmapStyle() const { return eStyle; } - const GraphicObject& GetGraphicObject() const; - Bitmap GetBitmap() const; - sal_uInt16* GetPixelArray() const { return pPixelArray; } - Color GetPixelColor() const { return aPixelColor; } - Color GetBackgroundColor() const { return aBckgrColor; } -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/inc/svx/xbtmpit.hxx b/svx/inc/svx/xbtmpit.hxx index 6b8cab68dece..d30e2fd5001f 100644 --- a/svx/inc/svx/xbtmpit.hxx +++ b/svx/inc/svx/xbtmpit.hxx @@ -20,25 +20,32 @@ #ifndef _SVX_XBTMPIT_HXX #define _SVX_XBTMPIT_HXX -#include "svx/svxdllapi.h" - -#include <svx/xbitmap.hxx> +#include <svx/svxdllapi.h> #include <svx/xit.hxx> +#include <svtools/grfmgr.hxx> class SdrModel; +class BitmapColor; + +////////////////////////////////////////////////////////////////////////////// +// helper to construct historical 8x8 bitmaps with two colors -//---------------------- +Bitmap SVX_DLLPUBLIC createHistorical8x8FromArray(const sal_uInt16* pArray, Color aColorPix, Color aColorBack); +bool SVX_DLLPUBLIC isHistorical8x8(const BitmapEx& rBitmapEx, BitmapColor& o_rBack, BitmapColor& o_rFront); + +////////////////////////////////////////////////////////////////////////////// // class XFillBitmapItem -//---------------------- + class SVX_DLLPUBLIC XFillBitmapItem : public NameOrIndex { - XOBitmap aXOBitmap; +private: + GraphicObject maGraphicObject; public: TYPEINFO(); XFillBitmapItem() : NameOrIndex(XATTR_FILLBITMAP, -1 ) {} - XFillBitmapItem( const String& rName, const XOBitmap& rTheBitmap ); - XFillBitmapItem( SfxItemPool* pPool, const XOBitmap& rTheBitmap ); + XFillBitmapItem(const String& rName, const GraphicObject& rGraphicObject); + XFillBitmapItem(SfxItemPool* pPool, const GraphicObject& rGraphicObject); XFillBitmapItem( const XFillBitmapItem& rItem ); XFillBitmapItem( SvStream& rIn, sal_uInt16 nVer = 0 ); @@ -56,8 +63,8 @@ public: SfxMapUnit ePresMetric, OUString &rText, const IntlWrapper * = 0 ) const; - const XOBitmap& GetBitmapValue() const; // GetValue -> GetBitmapValue - void SetBitmapValue( const XOBitmap& rNew ) { aXOBitmap = rNew; Detach(); } // SetValue -> SetBitmapValue + const GraphicObject& GetGraphicObject() const; + void SetGraphicObject(const GraphicObject& rGraphicObject); static sal_Bool CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 ); XFillBitmapItem* checkForUniqueItem( SdrModel* pModel ) const; diff --git a/svx/inc/svx/xenum.hxx b/svx/inc/svx/xenum.hxx index 8e14e5829dee..1f483273894d 100644 --- a/svx/inc/svx/xenum.hxx +++ b/svx/inc/svx/xenum.hxx @@ -45,9 +45,6 @@ enum XFormTextStdForm { XFTFORM_NONE = 0, XFTFORM_TOPCIRC, XFTFORM_BOTCIRC, XFTFORM_BOTARC, XFTFORM_LFTARC, XFTFORM_RGTARC, XFTFORM_BUTTON1, XFTFORM_BUTTON2, XFTFORM_BUTTON3, XFTFORM_BUTTON4}; -enum XBitmapStyle { XBITMAP_TILE, XBITMAP_STRETCH }; -enum XBitmapType { XBITMAP_IMPORT, XBITMAP_8X8, XBITMAP_NONE, - XBITMAP_16X16 }; #endif // _XENUM_HXX diff --git a/svx/inc/svx/xfillit.hxx b/svx/inc/svx/xfillit.hxx index 056647a1b67c..b0270a9d3aa9 100644 --- a/svx/inc/svx/xfillit.hxx +++ b/svx/inc/svx/xfillit.hxx @@ -31,7 +31,6 @@ #include <svx/xsflclit.hxx> #include <svx/xflgrit.hxx> #include <svx/xflhtit.hxx> -#include <svx/xbitmap.hxx> #include <svx/xbtmpit.hxx> #include <svx/xflftrit.hxx> diff --git a/svx/inc/svx/xtable.hxx b/svx/inc/svx/xtable.hxx index af184fc46835..7ccf526b6e66 100644 --- a/svx/inc/svx/xtable.hxx +++ b/svx/inc/svx/xtable.hxx @@ -24,7 +24,6 @@ #include <svx/xdash.hxx> #include <svx/xhatch.hxx> #include <svx/xgrad.hxx> -#include <svx/xbitmap.hxx> #include <svx/xflasit.hxx> #include <svx/xlnasit.hxx> @@ -38,6 +37,7 @@ #include <com/sun/star/embed/XStorage.hpp> #include <basegfx/polygon/b2dpolypolygon.hxx> #include <com/sun/star/container/XNameContainer.hpp> +#include <svtools/grfmgr.hxx> class Color; class Bitmap; @@ -170,14 +170,31 @@ public: class XBitmapEntry : public XPropertyEntry { - XOBitmap aXOBitmap; +private: + GraphicObject maGraphicObject; public: - XBitmapEntry( const XOBitmap& rXOBitmap, const String& rName ): - XPropertyEntry( rName ), aXOBitmap( rXOBitmap ) {} + XBitmapEntry(const GraphicObject& rGraphicObject, const String& rName) + : XPropertyEntry(rName), + maGraphicObject(rGraphicObject) + { + } + + XBitmapEntry(const XBitmapEntry& rOther) + : XPropertyEntry(rOther), + maGraphicObject(rOther.maGraphicObject) + { + } + + const GraphicObject& GetGraphicObject() const + { + return maGraphicObject; + } - void SetXBitmap(const XOBitmap& rXOBitmap) { aXOBitmap = rXOBitmap; } - XOBitmap& GetXBitmap() { return aXOBitmap; } + void SetGraphicObject(const GraphicObject& rGraphicObject) + { + maGraphicObject = rGraphicObject; + } }; // -------------------- diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx index e83a1838eb92..41c963b22beb 100644 --- a/svx/source/customshapes/EnhancedCustomShape2d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx @@ -43,7 +43,6 @@ #include <svx/xflhtit.hxx> #include <svx/xbtmpit.hxx> #include <svx/xgrad.hxx> -#include <svx/xbitmap.hxx> #include <svx/xhatch.hxx> #include <com/sun/star/awt/Size.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp> @@ -2108,15 +2107,17 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& rC } case XFILL_BITMAP: { - Bitmap aBitmap(((const XFillBitmapItem&)rObj.GetMergedItem(XATTR_FILLBITMAP)).GetBitmapValue().GetBitmap()); if ( nColorCount || rObj.GetBrightness() != 1.0 ) { + Bitmap aBitmap(((const XFillBitmapItem&)rObj.GetMergedItem(XATTR_FILLBITMAP)).GetGraphicObject().GetGraphic().GetBitmapEx().GetBitmap()); + aBitmap.Adjust( static_cast< short > ( GetLuminanceChange( std::min(nColorIndex, nColorCount-1)))); + + rObj.SetMergedItem(XFillBitmapItem(String(), Graphic(aBitmap))); } - rObj.SetMergedItem( XFillBitmapItem( String(), aBitmap ) ); break; } } diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx b/svx/source/customshapes/EnhancedCustomShape3d.cxx index f1dc1d1d68ce..e6885a39166b 100644 --- a/svx/source/customshapes/EnhancedCustomShape3d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx @@ -405,13 +405,12 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( const SdrObject* pShape2d, con aPlaceholderObjectList.push_back( p3DObj ); else if ( bUseTwoFillStyles ) { - Bitmap aFillBmp; + BitmapEx aFillBmp; sal_Bool bFillBmpTile = ((XFillBmpTileItem&)p3DObj->GetMergedItem( XATTR_FILLBMP_TILE )).GetValue(); if ( bFillBmpTile ) { - const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem( XATTR_FILLBITMAP ); - const XOBitmap& rXOBmp = rBmpItm.GetBitmapValue(); - aFillBmp = rXOBmp.GetBitmap(); + const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem(XATTR_FILLBITMAP); + aFillBmp = rBmpItm.GetGraphicObject().GetGraphic().GetBitmapEx(); Size aLogicalSize = aFillBmp.GetPrefSize(); if ( aFillBmp.GetPrefMapMode() == MAP_PIXEL ) aLogicalSize = Application::GetDefaultDevice()->PixelToLogic( aLogicalSize, MAP_100TH_MM ); @@ -421,15 +420,14 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( const SdrObject* pShape2d, con aLogicalSize.Height() *= 5; aFillBmp.SetPrefSize( aLogicalSize ); aFillBmp.SetPrefMapMode( MAP_100TH_MM ); - p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) ); + p3DObj->SetMergedItem(XFillBitmapItem(String(), Graphic(aFillBmp))); } else { if ( aSnapRect != aBoundRect ) { - const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem( XATTR_FILLBITMAP ); - const XOBitmap& rXOBmp = rBmpItm.GetBitmapValue(); - aFillBmp = rXOBmp.GetBitmap(); + const XFillBitmapItem& rBmpItm = (XFillBitmapItem&)p3DObj->GetMergedItem(XATTR_FILLBITMAP); + aFillBmp = rBmpItm.GetGraphicObject().GetGraphic().GetBitmapEx(); Size aBmpSize( aFillBmp.GetSizePixel() ); double fXScale = (double)aBoundRect.GetWidth() / (double)aSnapRect.GetWidth(); double fYScale = (double)aBoundRect.GetHeight() / (double)aSnapRect.GetHeight(); @@ -440,7 +438,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( const SdrObject* pShape2d, con (sal_Int32)( aBmpSize.Height() * fYScale ) ); Rectangle aCropRect( aPt, aSize ); aFillBmp.Crop( aCropRect ); - p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) ); + p3DObj->SetMergedItem(XFillBitmapItem(String(), Graphic(aFillBmp))); } } pScene->Insert3DObj( p3DObj ); @@ -462,7 +460,9 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( const SdrObject* pShape2d, con p3DObj->NbcSetTransform( aFrontTransform ); if ( ( eFillStyle == XFILL_BITMAP ) && !aFillBmp.IsEmpty() ) - p3DObj->SetMergedItem( XFillBitmapItem( String(), aFillBmp ) ); + { + p3DObj->SetMergedItem(XFillBitmapItem(String(), Graphic(aFillBmp))); + } } else if ( eFillStyle == XFILL_NONE ) { diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx index cbb2a1f86fa8..e35724641dee 100644 --- a/svx/source/dialog/dlgctrl.cxx +++ b/svx/source/dialog/dlgctrl.cxx @@ -23,9 +23,8 @@ #include <svx/xtable.hxx> #include <svx/xpool.hxx> - #include <svx/dialogs.hrc> -#include "accessibility.hrc" +#include <accessibility.hrc> #include <svx/dlgctrl.hxx> #include <svx/dialmgr.hxx> #include <tools/poly.hxx> @@ -33,18 +32,18 @@ #include <vcl/gradient.hxx> #include <vcl/hatch.hxx> #include <svtools/colorcfg.hxx> - -#include "svxrectctaccessiblecontext.hxx" +#include <svxrectctaccessiblecontext.hxx> #include <com/sun/star/lang/XUnoTunnel.hpp> #include <basegfx/point/b2dpoint.hxx> #include <basegfx/polygon/b2dpolygon.hxx> #include <svx/svdorect.hxx> - #include <svx/svdmodel.hxx> #include <svx/svdopath.hxx> #include <svx/sdr/contact/objectcontactofobjlistpainter.hxx> #include <svx/sdr/contact/displayinfo.hxx> -#include "linectrl.hrc" +#include <linectrl.hrc> +#include <vcl/bmpacc.hxx> +#include <svx/xbtmpit.hxx> #define OUTPUT_DRAWMODE_COLOR (DRAWMODE_DEFAULT) #define OUTPUT_DRAWMODE_CONTRAST (DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT) @@ -847,17 +846,34 @@ void SvxPixelCtl::Paint( const Rectangle& ) } } -void SvxPixelCtl::SetXBitmap( const XOBitmap& rXBmp ) +void SvxPixelCtl::SetXBitmap( const BitmapEx& rBitmapEx ) { - if( rXBmp.GetBitmapType() == XBITMAP_8X8 ) + BitmapColor aBack; + BitmapColor aFront; + + if(isHistorical8x8(rBitmapEx, aBack, aFront)) { - aPixelColor = rXBmp.GetPixelColor(); - aBackgroundColor = rXBmp.GetBackgroundColor(); + Bitmap aBitmap(rBitmapEx.GetBitmap()); + BitmapReadAccess* pRead = aBitmap.AcquireReadAccess(); + + aBackgroundColor = aBack; + aPixelColor = aFront; + + for(sal_uInt16 i(0); i < nSquares; i++) + { + const BitmapColor aColor(pRead->GetColor(i/8, i%8)); - sal_uInt16* pArray = rXBmp.GetPixelArray(); + if(aColor == aBack) + { + *( pPixel + i ) = 0; + } + else + { + *( pPixel + i ) = 1; + } + } - for( sal_uInt16 i = 0; i < nSquares; i++ ) - *( pPixel + i ) = *( pArray + i ); + aBitmap.ReleaseAccess(pRead); } } @@ -883,11 +899,11 @@ SvxBitmapCtl::~SvxBitmapCtl() // BitmapCtl: Returns the Bitmap -XOBitmap SvxBitmapCtl::GetXBitmap() +BitmapEx SvxBitmapCtl::GetBitmapEx() { - XOBitmap aXOBitmap( pBmpArray, aPixelColor, aBackgroundColor ); + const Bitmap aRetval(createHistorical8x8FromArray(pBmpArray, aPixelColor, aBackgroundColor)); - return( aXOBitmap ); + return BitmapEx(aRetval); } extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeColorLB(Window *pParent, VclBuilder::stringmap &) @@ -1236,34 +1252,35 @@ void FillAttrLB::Fill( const XGradientListRef &pList ) // BitmapLB Constructor -BitmapLB::BitmapLB( Window* pParent, ResId Id, sal_Bool bUserDraw /*= sal_True*/ ) -: ListBox( pParent, Id ), - mpList( NULL ), - mbUserDraw( bUserDraw ) +BitmapLB::BitmapLB(Window* pParent, ResId Id, bool bUserDraw /*= false*/ ) +: ListBox(pParent, Id), + maVD(), + maBitmapEx(), + mpList(NULL), + mbUserDraw(bUserDraw) { - aVD.SetOutputSizePixel( Size( 32, 16 ) ); - EnableUserDraw( mbUserDraw ); + maVD.SetOutputSizePixel(Size(32, 16)); + EnableUserDraw(mbUserDraw); } /************************************************************************/ void BitmapLB::SetVirtualDevice() { - if( aBitmap.GetSizePixel().Width() > 8 || - aBitmap.GetSizePixel().Height() > 8 ) + if(maBitmapEx.GetSizePixel().Width() > 8 || maBitmapEx.GetSizePixel().Height() > 8) { - aVD.DrawBitmap( Point( 0, 0 ), Size( 32, 16 ), aBitmap ); + maVD.DrawBitmapEx(Point(0, 0), Size(32, 16), maBitmapEx); } else { - aVD.DrawBitmap( Point( 0, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 8, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 16, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 24, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 0, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 8, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 16, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 24, 8 ), aBitmap ); + maVD.DrawBitmapEx(Point(0, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(8, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(16, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(24, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(0, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(8, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(16, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(24, 8), maBitmapEx); } } @@ -1273,135 +1290,133 @@ void BitmapLB::Fill( const XBitmapListRef &pList ) { mpList = pList; XBitmapEntry* pEntry; - long nCount = pList->Count(); + const long nCount(pList->Count()); - SetUpdateMode( sal_False ); + SetUpdateMode(false); - if( mbUserDraw ) + if(mbUserDraw) { - for( long i = 0; i < nCount; i++ ) - InsertEntry( pList->GetBitmap( i )->GetName() ); + for(long i(0); i < nCount; i++) + { + InsertEntry(pList->GetBitmap(i)->GetName()); + } } else { - for( long i = 0; i < nCount; i++ ) + for(long i(0); i < nCount; i++) { - pEntry = pList->GetBitmap( i ); - aBitmap = pEntry->GetXBitmap().GetBitmap(); - + pEntry = pList->GetBitmap(i); + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); SetVirtualDevice(); - - InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); + InsertEntry(pEntry->GetName(), maVD.GetBitmap(Point(0, 2), Size(32, 12))); } } - SetUpdateMode( sal_True ); + SetUpdateMode(true); } -void BitmapLB::UserDraw( const UserDrawEvent& rUDEvt ) +void BitmapLB::UserDraw(const UserDrawEvent& rUDEvt) { - if( mpList != NULL ) + if (mpList != NULL) { // Draw bitmap const Rectangle& rDrawRect = rUDEvt.GetRect(); - Rectangle aRect( rDrawRect.Left()+1, rDrawRect.Top()+1, rDrawRect.Left()+33, rDrawRect.Bottom()-1 ); + const Rectangle aRect(rDrawRect.Left() + 1, rDrawRect.Top() + 1, rDrawRect.Left() + 33, rDrawRect.Bottom() - 1); + const sal_Int32 nId(rUDEvt.GetItemId()); - sal_Int32 nId = rUDEvt.GetItemId(); - if( nId >= 0 && nId <= mpList->Count() ) + if(nId >= 0 && nId <= mpList->Count()) { - Rectangle aClipRect( rDrawRect.Left()+1, rDrawRect.Top()+1, rDrawRect.Right()-1, rDrawRect.Bottom()-1 ); - + const Rectangle aClipRect(rDrawRect.Left() + 1, rDrawRect.Top() + 1, rDrawRect.Right() - 1, rDrawRect.Bottom() - 1); OutputDevice* pDevice = rUDEvt.GetDevice(); - pDevice->SetClipRegion( Region( aClipRect ) ); - - aBitmap = mpList->GetBitmap( nId )->GetXBitmap().GetBitmap(); - + pDevice->SetClipRegion(Region(aClipRect)); + maBitmapEx = mpList->GetBitmap(nId)->GetGraphicObject().GetGraphic().GetBitmapEx(); long nPosBaseX = aRect.Left(); long nPosBaseY = aRect.Top(); - if( aBitmap.GetSizePixel().Width() > 8 || - aBitmap.GetSizePixel().Height() > 8 ) + if(maBitmapEx.GetSizePixel().Width() > 8 || maBitmapEx.GetSizePixel().Height() > 8) { - pDevice->DrawBitmap( Point( nPosBaseX, nPosBaseY ), Size( 32, 16 ), aBitmap ); + pDevice->DrawBitmapEx(Point(nPosBaseX, nPosBaseY), Size(32, 16), maBitmapEx); } else { - pDevice->DrawBitmap( Point( nPosBaseX+ 0, nPosBaseY+0 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+ 8, nPosBaseY+0 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+16, nPosBaseY+0 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+24, nPosBaseY+0 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+ 0, nPosBaseY+8 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+ 8, nPosBaseY+8 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+16, nPosBaseY+8 ), aBitmap ); - pDevice->DrawBitmap( Point( nPosBaseX+24, nPosBaseY+8 ), aBitmap ); + pDevice->DrawBitmapEx(Point(nPosBaseX+ 0, nPosBaseY+0 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+ 8, nPosBaseY+0 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+16, nPosBaseY+0 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+24, nPosBaseY+0 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+ 0, nPosBaseY+8 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+ 8, nPosBaseY+8 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+16, nPosBaseY+8 ), maBitmapEx); + pDevice->DrawBitmapEx(Point(nPosBaseX+24, nPosBaseY+8 ), maBitmapEx); } pDevice->SetClipRegion(); // Draw name - pDevice->DrawText( Point( aRect.Right()+7, aRect.Top()-1 ), mpList->GetBitmap( nId )->GetName() ); + pDevice->DrawText(Point(aRect.Right() + 7, aRect.Top() - 1), mpList->GetBitmap(nId)->GetName()); } } } /************************************************************************/ -void BitmapLB::Append( XBitmapEntry* pEntry, Bitmap* pBmp ) +void BitmapLB::Append(XBitmapEntry* pEntry, BitmapEx* pBmpEx) { - if( pBmp ) + if(pBmpEx) { - aBitmap = pEntry->GetXBitmap().GetBitmap(); + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); SetVirtualDevice(); - InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); + InsertEntry(pEntry->GetName(), maVD.GetBitmap(Point(0, 2), Size(32, 12))); } else - InsertEntry( pEntry->GetName() ); + { + InsertEntry(pEntry->GetName()); + } } /************************************************************************/ -void BitmapLB::Modify( XBitmapEntry* pEntry, sal_uInt16 nPos, Bitmap* pBmp ) +void BitmapLB::Modify(XBitmapEntry* pEntry, sal_uInt16 nPos, BitmapEx* pBmpEx) { - RemoveEntry( nPos ); + RemoveEntry(nPos); - if( pBmp ) + if(pBmpEx) { - aBitmap = pEntry->GetXBitmap().GetBitmap(); + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); SetVirtualDevice(); - - InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ), nPos ); + InsertEntry(pEntry->GetName(), maVD.GetBitmap(Point(0, 2), Size(32, 12)), nPos); } else - InsertEntry( pEntry->GetName() ); + { + InsertEntry(pEntry->GetName()); + } } -// FillAttrLB Constructor - -FillAttrLB::FillAttrLB( Window* pParent, WinBits aWB ) : - ColorListBox( pParent, aWB ) +FillAttrLB::FillAttrLB(Window* pParent, WinBits aWB) +: ColorListBox(pParent, aWB) { - aVD.SetOutputSizePixel( Size( 32, 16 ) ); + maVD.SetOutputSizePixel(Size(32, 16)); } /************************************************************************/ void FillAttrLB::SetVirtualDevice() { - if( aBitmap.GetSizePixel().Width() > 8 || - aBitmap.GetSizePixel().Height() > 8 ) + maVD.Erase(); + + if(maBitmapEx.GetSizePixel().Width() > 8 || maBitmapEx.GetSizePixel().Height() > 8) { - aVD.DrawBitmap( Point( 0, 0 ), Size( 32, 16 ), aBitmap ); + maVD.DrawBitmapEx(Point(0, 0), Size(32, 16), maBitmapEx); } else { - aVD.DrawBitmap( Point( 0, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 8, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 16, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 24, 0 ), aBitmap ); - aVD.DrawBitmap( Point( 0, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 8, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 16, 8 ), aBitmap ); - aVD.DrawBitmap( Point( 24, 8 ), aBitmap ); + maVD.DrawBitmapEx(Point(0, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(8, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(16, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(24, 0), maBitmapEx); + maVD.DrawBitmapEx(Point(0, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(8, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(16, 8), maBitmapEx); + maVD.DrawBitmapEx(Point(24, 8), maBitmapEx); } } @@ -1409,23 +1424,21 @@ void FillAttrLB::SetVirtualDevice() void FillAttrLB::Fill( const XBitmapListRef &pList ) { - long nCount = pList->Count(); + const long nCount(pList->Count()); XBitmapEntry* pEntry; - ListBox::SetUpdateMode( sal_False ); - for( long i = 0; i < nCount; i++ ) + ListBox::SetUpdateMode(false); + + for(long i(0); i < nCount; i++) { pEntry = pList->GetBitmap( i ); - aBitmap = pEntry->GetXBitmap().GetBitmap(); - + maBitmapEx = pEntry->GetGraphicObject().GetGraphic().GetBitmapEx(); SetVirtualDevice(); - - ListBox::InsertEntry( pEntry->GetName(), aVD.GetBitmap( Point( 0, 2 ), Size( 32, 12 ) ) ); + ListBox::InsertEntry(pEntry->GetName(), maVD.GetBitmap(Point(0, 2), Size(32, 12))); } - ListBox::SetUpdateMode( sal_True ); -} -// Fills the listbox (provisional) with strings + ListBox::SetUpdateMode(true); +} void FillTypeLB::Fill() { diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx index 3fd7b44fc8ca..273db74e60c7 100644 --- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx +++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx @@ -586,42 +586,42 @@ namespace drawinglayer attribute::SdrFillBitmapAttribute createNewSdrFillBitmapAttribute(const SfxItemSet& rSet) { - Bitmap aBitmap((((const XFillBitmapItem&)(rSet.Get(XATTR_FILLBITMAP))).GetBitmapValue()).GetBitmap()); + BitmapEx aBitmapEx(((const XFillBitmapItem&)(rSet.Get(XATTR_FILLBITMAP))).GetGraphicObject().GetGraphic().GetBitmapEx()); // make sure it's not empty, use default instead - if(aBitmap.IsEmpty()) + if(aBitmapEx.IsEmpty()) { // #i118485# Add PrefMapMode and PrefSize to avoid mini-tiling and // expensive primitive processing in this case. Use 10x10 cm - aBitmap = Bitmap(Size(4,4), 8); - aBitmap.SetPrefMapMode(MapMode(MAP_100TH_MM)); - aBitmap.SetPrefSize(Size(10000.0, 10000.0)); + aBitmapEx = Bitmap(Size(4,4), 8); + aBitmapEx.SetPrefMapMode(MapMode(MAP_100TH_MM)); + aBitmapEx.SetPrefSize(Size(10000.0, 10000.0)); } // if there is no logical size, create a size from pixel size and set MapMode accordingly - if(0L == aBitmap.GetPrefSize().Width() || 0L == aBitmap.GetPrefSize().Height()) + if(0L == aBitmapEx.GetPrefSize().Width() || 0L == aBitmapEx.GetPrefSize().Height()) { - aBitmap.SetPrefSize(aBitmap.GetSizePixel()); - aBitmap.SetPrefMapMode(MAP_PIXEL); + aBitmapEx.SetPrefSize(aBitmapEx.GetSizePixel()); + aBitmapEx.SetPrefMapMode(MAP_PIXEL); } // convert size and MapMode to destination logical size and MapMode. The created // bitmap must have a valid logical size (PrefSize) const MapUnit aDestinationMapUnit((MapUnit)rSet.GetPool()->GetMetric(0)); - if(aBitmap.GetPrefMapMode() != aDestinationMapUnit) + if(aBitmapEx.GetPrefMapMode() != aDestinationMapUnit) { // #i100360# for MAP_PIXEL, LogicToLogic will not work properly, // so fallback to Application::GetDefaultDevice() - if(MAP_PIXEL == aBitmap.GetPrefMapMode().GetMapUnit()) + if(MAP_PIXEL == aBitmapEx.GetPrefMapMode().GetMapUnit()) { - aBitmap.SetPrefSize(Application::GetDefaultDevice()->PixelToLogic( - aBitmap.GetPrefSize(), aDestinationMapUnit)); + aBitmapEx.SetPrefSize(Application::GetDefaultDevice()->PixelToLogic( + aBitmapEx.GetPrefSize(), aDestinationMapUnit)); } else { - aBitmap.SetPrefSize(OutputDevice::LogicToLogic( - aBitmap.GetPrefSize(), aBitmap.GetPrefMapMode(), aDestinationMapUnit)); + aBitmapEx.SetPrefSize(OutputDevice::LogicToLogic( + aBitmapEx.GetPrefSize(), aBitmapEx.GetPrefMapMode(), aDestinationMapUnit)); } } @@ -637,7 +637,7 @@ namespace drawinglayer (double)((const SfxUInt16Item&) (rSet.Get(XATTR_FILLBMP_POSOFFSETY))).GetValue()); return attribute::SdrFillBitmapAttribute( - aBitmap, + aBitmapEx, aSize, aOffset, aOffsetPosition, diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx index 5d184ebdb81e..9fd5624086ec 100644 --- a/svx/source/svdraw/svdetc.cxx +++ b/svx/source/svdraw/svdetc.cxx @@ -321,11 +321,10 @@ bool GetDraftFillColor(const SfxItemSet& rSet, Color& rCol) } case XFILL_BITMAP: { - const Bitmap& rBitmap = ((XFillBitmapItem&)rSet.Get(XATTR_FILLBITMAP)).GetBitmapValue().GetBitmap(); - const Size aSize(rBitmap.GetSizePixel()); + Bitmap aBitmap(((XFillBitmapItem&)rSet.Get(XATTR_FILLBITMAP)).GetGraphicObject().GetGraphic().GetBitmapEx().GetBitmap()); + const Size aSize(aBitmap.GetSizePixel()); const sal_uInt32 nWidth = aSize.Width(); const sal_uInt32 nHeight = aSize.Height(); - Bitmap aBitmap(rBitmap); BitmapReadAccess* pAccess = aBitmap.AcquireReadAccess(); if(pAccess && nWidth > 0 && nHeight > 0) diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx index 1d9b94840f31..93c2f32ded3d 100644 --- a/svx/source/svdraw/svdfmtf.cxx +++ b/svx/source/svdraw/svdfmtf.cxx @@ -442,7 +442,7 @@ void ImpSdrGDIMetaFileImport::InsertObj(SdrObject* pObj, sal_Bool bScale) Size(ceil(aPixel.getWidth()), ceil(aPixel.getHeight()))); pObj->SetMergedItem(XFillStyleItem(XFILL_BITMAP)); - pObj->SetMergedItem(XFillBitmapItem(String(), aClippedBitmap.GetBitmap())); + pObj->SetMergedItem(XFillBitmapItem(String(), Graphic(aClippedBitmap))); } } } diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 380a0db6f194..078108167e69 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -343,15 +343,17 @@ SdrObject* ImpCreateShadowObjectClone(const SdrObject& rOriginal, const SfxItemS // bitmap and transparency like shadow if(bBitmapFillUsed) { - XOBitmap aFillBitmap(((XFillBitmapItem&)(rOriginalSet.Get(XATTR_FILLBITMAP))).GetBitmapValue()); - Bitmap aSourceBitmap(aFillBitmap.GetBitmap()); - BitmapReadAccess* pReadAccess = aSourceBitmap.AcquireReadAccess(); + GraphicObject aGraphicObject(((XFillBitmapItem&)(rOriginalSet.Get(XATTR_FILLBITMAP))).GetGraphicObject()); + const BitmapEx aBitmapEx(aGraphicObject.GetGraphic().GetBitmapEx()); + Bitmap aBitmap(aBitmapEx.GetBitmap()); - if(!aSourceBitmap.IsEmpty()) + if(!aBitmap.IsEmpty()) { + BitmapReadAccess* pReadAccess = aBitmap.AcquireReadAccess(); + if(pReadAccess) { - Bitmap aDestBitmap(aSourceBitmap.GetSizePixel(), 24L); + Bitmap aDestBitmap(aBitmap.GetSizePixel(), 24L); BitmapWriteAccess* pWriteAccess = aDestBitmap.AcquireWriteAccess(); if(pWriteAccess) @@ -370,14 +372,29 @@ SdrObject* ImpCreateShadowObjectClone(const SdrObject& rOriginal, const SfxItemS } aDestBitmap.ReleaseAccess(pWriteAccess); - aFillBitmap.SetBitmap(aDestBitmap); } - aSourceBitmap.ReleaseAccess(pReadAccess); + aBitmap.ReleaseAccess(pReadAccess); + + if(aBitmapEx.IsTransparent()) + { + if(aBitmapEx.IsAlpha()) + { + aGraphicObject.SetGraphic(Graphic(BitmapEx(aDestBitmap, aBitmapEx.GetAlpha()))); + } + else + { + aGraphicObject.SetGraphic(Graphic(BitmapEx(aDestBitmap, aBitmapEx.GetMask()))); + } + } + else + { + aGraphicObject.SetGraphic(Graphic(aDestBitmap)); + } } } - aTempSet.Put(XFillBitmapItem(aTempSet.GetPool(), aFillBitmap)); + aTempSet.Put(XFillBitmapItem(aTempSet.GetPool(), aGraphicObject)); aTempSet.Put(XFillTransparenceItem(nShadowTransparence)); } diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx index 91775be362f4..abf9f860a51e 100644 --- a/svx/source/svdraw/svdograf.cxx +++ b/svx/source/svdraw/svdograf.cxx @@ -47,7 +47,6 @@ #include <svx/svdview.hxx> #include <svx/svdograf.hxx> #include <svx/svdogrp.hxx> -#include <svx/xbitmap.hxx> #include <svx/xbtmpit.hxx> #include <svx/xflbmtit.hxx> #include <svx/svdundo.hxx> @@ -1216,9 +1215,8 @@ SdrObject* SdrGrafObj::DoConvertToPolyObj(sal_Bool bBezier, bool bAddText ) cons SfxItemSet aSet(GetObjectItemSet()); aSet.Put(XFillStyleItem(XFILL_BITMAP)); - Bitmap aBitmap( GetTransformedGraphic().GetBitmap() ); - XOBitmap aXBmp(aBitmap, XBITMAP_STRETCH); - aSet.Put(XFillBitmapItem(String(), aXBmp)); + const BitmapEx aBitmapEx(GetTransformedGraphic().GetBitmapEx()); + aSet.Put(XFillBitmapItem(OUString(), Graphic(aBitmapEx))); aSet.Put(XFillBmpTileItem(false)); pRetval->SetMergedItemSet(aSet); diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx index 98bd1ec64116..d3b409025d61 100644 --- a/svx/source/svdraw/svdoole2.cxx +++ b/svx/source/svdraw/svdoole2.cxx @@ -1338,7 +1338,7 @@ SdrObject* SdrOle2Obj::createSdrGrafObjReplacement(bool bAddText, bool /* bUseHC // bitmap fill pClone->SetMergedItem(XFillStyleItem(XFILL_BITMAP)); - pClone->SetMergedItem(XFillBitmapItem(String(), GetEmtyOLEReplacementBitmap())); + pClone->SetMergedItem(XFillBitmapItem(String(), Graphic(GetEmtyOLEReplacementBitmap()))); pClone->SetMergedItem(XFillBmpTileItem(false)); pClone->SetMergedItem(XFillBmpStretchItem(false)); diff --git a/svx/source/tbxctrls/fillctrl.cxx b/svx/source/tbxctrls/fillctrl.cxx index 9403c103fe16..877958250369 100644 --- a/svx/source/tbxctrls/fillctrl.cxx +++ b/svx/source/tbxctrls/fillctrl.cxx @@ -413,7 +413,7 @@ void SvxFillToolBoxControl::Update( const SfxPoolItem* pState ) aTmpStr += aString; aTmpStr += TMP_STR_END; - XBitmapEntry* pEntry = new XBitmapEntry( pBitmapItem->GetBitmapValue(), aTmpStr ); + XBitmapEntry* pEntry = new XBitmapEntry(pBitmapItem->GetGraphicObject(), aTmpStr); XBitmapListRef xBitmapList = XPropertyList::CreatePropertyList(XBITMAP_LIST, rtl::OUString("TmpList"))->AsBitmapList(); @@ -766,14 +766,13 @@ IMPL_LINK( FillControl, SelectFillAttrHdl, ListBox *, pBox ) if ( nPos < aItem.GetBitmapList()->Count() ) // kein temp. Eintrag ? { - XOBitmap aXOBitmap = aItem.GetBitmapList()->GetBitmap( nPos )->GetXBitmap(); - XFillBitmapItem aXFillBitmapItem( pLbFillAttr->GetSelectEntry(), aXOBitmap ); + const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos); + const XFillBitmapItem aXFillBitmapItem(pLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject()); aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FillBitmap" )); aXFillBitmapItem.QueryValue( a ); aArgs[0].Value = a; - ((SvxFillToolBoxControl*)GetData())->Dispatch( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:FillBitmap" )), - aArgs ); + ((SvxFillToolBoxControl*)GetData())->Dispatch(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:FillBitmap")), aArgs); } } } diff --git a/svx/source/unodraw/XPropertyTable.cxx b/svx/source/unodraw/XPropertyTable.cxx index d64271462faf..c6b9063930b4 100644 --- a/svx/source/unodraw/XPropertyTable.cxx +++ b/svx/source/unodraw/XPropertyTable.cxx @@ -669,9 +669,8 @@ uno::Reference< uno::XInterface > SAL_CALL SvxUnoXBitmapTable_createInstance( XP uno::Any SvxUnoXBitmapTable::getAny( const XPropertyEntry* pEntry ) const throw() { OUString aURL( RTL_CONSTASCII_USTRINGPARAM(UNO_NAME_GRAPHOBJ_URLPREFIX)); - aURL += OStringToOUString( - ((XBitmapEntry*)pEntry)->GetXBitmap().GetGraphicObject().GetUniqueID(), - RTL_TEXTENCODING_ASCII_US); + const GraphicObject& rGraphicObject(((XBitmapEntry*)pEntry)->GetGraphicObject()); + aURL += OStringToOUString(rGraphicObject.GetUniqueID(), RTL_TEXTENCODING_ASCII_US); uno::Any aAny; aAny <<= aURL; @@ -684,11 +683,10 @@ XPropertyEntry* SvxUnoXBitmapTable::getEntry( const OUString& rName, const uno:: if(!(rAny >>= aURL)) return NULL; - GraphicObject aGrafObj( GraphicObject::CreateGraphicObjectFromURL( aURL ) ); - XOBitmap aBMP( aGrafObj ); + const GraphicObject aGrafObj(GraphicObject::CreateGraphicObjectFromURL(aURL)); + const String aName(rName); - const String aName( rName ); - return new XBitmapEntry( aBMP, aName ); + return new XBitmapEntry(aGrafObj, aName); } // XElementAccess diff --git a/svx/source/unodraw/unobtabl.cxx b/svx/source/unodraw/unobtabl.cxx index 7051d1bc5331..bc8e7dff52ff 100644 --- a/svx/source/unodraw/unobtabl.cxx +++ b/svx/source/unodraw/unobtabl.cxx @@ -69,7 +69,8 @@ bool SvxUnoBitmapTable::isValid( const NameOrIndex* pItem ) const const XFillBitmapItem* pBitmapItem = dynamic_cast< const XFillBitmapItem* >( pItem ); if( pBitmapItem ) { - const GraphicObject& rGraphic = pBitmapItem->GetBitmapValue().GetGraphicObject(); + const Graphic& rGraphic = pBitmapItem->GetGraphicObject().GetGraphic(); + return rGraphic.GetSizeBytes() > 0; } } diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index 23b9046c4fc3..1193242b98bf 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -1506,7 +1506,7 @@ sal_Bool SAL_CALL SvxShape::SetFillAttribute( sal_Int32 nWID, const ::rtl::OUStr XFillBitmapItem aBmpItem; aBmpItem.SetWhich( XATTR_FILLBITMAP ); aBmpItem.SetName( rName ); - aBmpItem.SetBitmapValue( pEntry->GetXBitmap() ); + aBmpItem.SetGraphicObject(pEntry->GetGraphicObject()); rSet.Put( aBmpItem ); break; } diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index 26bc642aaaca..9a607cb01884 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -241,9 +241,13 @@ String NameOrIndex::CheckNamedItem( const NameOrIndex* pCheckItem, const sal_uIn switch( nWhich ) { case XATTR_FILLBITMAP: - bFound = (((XFillBitmapItem*)pCheckItem)->GetBitmapValue().GetGraphicObject().GetUniqueID() == - ((XBitmapEntry*)pEntry)->GetXBitmap().GetGraphicObject().GetUniqueID()); + { + const GraphicObject& rGraphicObjectA(((XFillBitmapItem*)pCheckItem)->GetGraphicObject()); + const GraphicObject& rGraphicObjectB(((XBitmapEntry*)pEntry)->GetGraphicObject()); + + bFound = (rGraphicObjectA == rGraphicObjectB); break; + } case XATTR_LINEDASH: bFound = (((XLineDashItem*)pCheckItem)->GetDashValue() == ((XDashEntry*)pEntry) ->GetDash()); break; diff --git a/svx/source/xoutdev/xattrbmp.cxx b/svx/source/xoutdev/xattrbmp.cxx index ad524bbe7b37..27a3dd238365 100644 --- a/svx/source/xoutdev/xattrbmp.cxx +++ b/svx/source/xoutdev/xattrbmp.cxx @@ -26,567 +26,250 @@ #include <toolkit/unohlp.hxx> #include <svl/style.hxx> #include <editeng/memberids.hrc> - #include <svx/dialogs.hrc> #include "svx/xattr.hxx" #include <svx/xtable.hxx> #include <svx/xdef.hxx> #include <svx/unomid.hxx> #include <editeng/unoprnms.hxx> - -#include "svx/unoapi.hxx" +#include <svx/unoapi.hxx> #include <svx/svdmodel.hxx> #include <com/sun/star/beans/PropertyValue.hpp> +#include <vcl/salbtype.hxx> +#include <vcl/bmpacc.hxx> using namespace ::com::sun::star; -// --------------- -// class XOBitmap -// --------------- - -/************************************************************************* -|* -|* XOBitmap::XOBitmap() -|* -*************************************************************************/ - -XOBitmap::XOBitmap() : - eType ( XBITMAP_NONE ), - eStyle ( XBITMAP_STRETCH ), - pPixelArray ( NULL ), - bGraphicDirty ( sal_False ) -{ -} +// ----------------------- +// class XFillBitmapItem +// ----------------------- +TYPEINIT1_AUTOFACTORY(XFillBitmapItem, NameOrIndex); -/************************************************************************* -|* -|* XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE ) -|* -*************************************************************************/ - -XOBitmap::XOBitmap( const Bitmap& rBmp, XBitmapStyle eInStyle ) : - eType ( XBITMAP_IMPORT ), - eStyle ( eInStyle ), - aGraphicObject ( rBmp ), - pPixelArray ( NULL ), - bGraphicDirty ( sal_False ) -{ -} +////////////////////////////////////////////////////////////////////////////// -/************************************************************************* -|* -|* XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE ) -|* -*************************************************************************/ - -XOBitmap::XOBitmap( const GraphicObject& rGraphicObject, XBitmapStyle eInStyle ) : - eType ( XBITMAP_IMPORT ), - eStyle ( eInStyle ), - aGraphicObject ( rGraphicObject ), - pPixelArray ( NULL ), - bGraphicDirty ( sal_False ) +XFillBitmapItem::XFillBitmapItem(const XubString& rName, const GraphicObject& rGraphicObject) +: NameOrIndex(XATTR_FILLBITMAP, rName), + maGraphicObject(rGraphicObject) { } -/************************************************************************* -|* -|* XOBitmap::XOBitmap( sal_uInt16* pArray, const Color& aPixelColor, -|* const Color& aBckgrColor, const Size& rSize = Size( 8, 8 ), -|* XBitmapStyle eStyle = XBITMAP_TILE ) -|* -*************************************************************************/ - -XOBitmap::XOBitmap( const sal_uInt16* pArray, const Color& rPixelColor, - const Color& rBckgrColor, const Size& rSize, - XBitmapStyle eInStyle ) : - eStyle ( eInStyle ), - pPixelArray ( NULL ), - aArraySize ( rSize ), - aPixelColor ( rPixelColor ), - aBckgrColor ( rBckgrColor ), - bGraphicDirty ( sal_True ) +////////////////////////////////////////////////////////////////////////////// +XFillBitmapItem::XFillBitmapItem(const XFillBitmapItem& rItem) +: NameOrIndex(rItem), + maGraphicObject(rItem.maGraphicObject) { - if( aArraySize.Width() == 8 && aArraySize.Height() == 8 ) - { - eType = XBITMAP_8X8; - pPixelArray = new sal_uInt16[ 64 ]; - - for( sal_uInt16 i = 0; i < 64; i++ ) - *( pPixelArray + i ) = *( pArray + i ); - } - else - { - DBG_ASSERT( 0, "Nicht unterstuetzte Bitmapgroesse" ); - } } -/************************************************************************* -|* -|* XOBitmap::XOBitmap( const XOBitmap& rXBmp ) -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// -XOBitmap::XOBitmap( const XOBitmap& rXBmp ) : - pPixelArray ( NULL ) +Bitmap createHistorical8x8FromArray(const sal_uInt16* pArray, Color aColorPix, Color aColorBack) { - eType = rXBmp.eType; - eStyle = rXBmp.eStyle; - aGraphicObject = rXBmp.aGraphicObject; - aArraySize = rXBmp.aArraySize; - aPixelColor = rXBmp.aPixelColor; - aBckgrColor = rXBmp.aBckgrColor; - bGraphicDirty = rXBmp.bGraphicDirty; - - if( rXBmp.pPixelArray ) - { - if( eType == XBITMAP_8X8 ) - { - pPixelArray = new sal_uInt16[ 64 ]; + BitmapPalette aPalette(2); - for( sal_uInt16 i = 0; i < 64; i++ ) - *( pPixelArray + i ) = *( rXBmp.pPixelArray + i ); - } - } -} + aPalette[0] = BitmapColor(aColorBack); + aPalette[1] = BitmapColor(aColorPix); -/************************************************************************* -|* -|* XOBitmap::XOBitmap( Bitmap aBitmap, XBitmapStyle eStyle = XBITMAP_TILE ) -|* -*************************************************************************/ + Bitmap aBitmap(Size(8, 8), 1, &aPalette); + BitmapWriteAccess* pContent = aBitmap.AcquireWriteAccess(); -XOBitmap::~XOBitmap() -{ - if( pPixelArray ) - delete []pPixelArray; -} - -/************************************************************************* -|* -|* XOBitmap& XOBitmap::operator=( const XOBitmap& rXBmp ) -|* -*************************************************************************/ - -XOBitmap& XOBitmap::operator=( const XOBitmap& rXBmp ) -{ - eType = rXBmp.eType; - eStyle = rXBmp.eStyle; - aGraphicObject = rXBmp.aGraphicObject; - aArraySize = rXBmp.aArraySize; - aPixelColor = rXBmp.aPixelColor; - aBckgrColor = rXBmp.aBckgrColor; - bGraphicDirty = rXBmp.bGraphicDirty; - - if( rXBmp.pPixelArray ) + if(pContent) { - if( eType == XBITMAP_8X8 ) + for(sal_uInt16 a(0); a < 8; a++) { - pPixelArray = new sal_uInt16[ 64 ]; - - for( sal_uInt16 i = 0; i < 64; i++ ) - *( pPixelArray + i ) = *( rXBmp.pPixelArray + i ); + for(sal_uInt16 b(0); b < 8; b++) + { + if(pArray[(a * 8) + b]) + { + pContent->SetPixel(b, a, sal_uInt8(1)); + } + else + { + pContent->SetPixel(b, a, sal_uInt8(0)); + } + } } - } - return( *this ); -} - -/************************************************************************* -|* -|* int XOBitmap::operator==( const XOBitmap& rXOBitmap ) const -|* -*************************************************************************/ -int XOBitmap::operator==( const XOBitmap& rXOBitmap ) const -{ - if( eType != rXOBitmap.eType || - eStyle != rXOBitmap.eStyle || - aGraphicObject != rXOBitmap.aGraphicObject || - aArraySize != rXOBitmap.aArraySize || - aPixelColor != rXOBitmap.aPixelColor || - aBckgrColor != rXOBitmap.aBckgrColor || - bGraphicDirty != rXOBitmap.bGraphicDirty ) - { - return( sal_False ); + aBitmap.ReleaseAccess(pContent); } - if( pPixelArray && rXOBitmap.pPixelArray ) - { - sal_uInt16 nCount = (sal_uInt16) ( aArraySize.Width() * aArraySize.Height() ); - for( sal_uInt16 i = 0; i < nCount; i++ ) - { - if( *( pPixelArray + i ) != *( rXOBitmap.pPixelArray + i ) ) - return( sal_False ); - } - } - return( sal_True ); + return aBitmap; } -/************************************************************************* -|* -|* void SetPixelArray( const sal_uInt16* pArray ) -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// -void XOBitmap::SetPixelArray( const sal_uInt16* pArray ) +bool SVX_DLLPUBLIC isHistorical8x8(const BitmapEx& rBitmapEx, BitmapColor& o_rBack, BitmapColor& o_rFront) { - if( eType == XBITMAP_8X8 ) + if(!rBitmapEx.IsTransparent()) { - if( pPixelArray ) - delete []pPixelArray; - - pPixelArray = new sal_uInt16[ 64 ]; - - for( sal_uInt16 i = 0; i < 64; i++ ) - *( pPixelArray + i ) = *( pArray + i ); - - bGraphicDirty = sal_True; - } - else - { - DBG_ASSERT( 0, "Nicht unterstuetzter Bitmaptyp" ); - } -} + Bitmap aBitmap(rBitmapEx.GetBitmap()); -/************************************************************************* -|* -|* Bitmap XOBitmap::GetBitmap() -|* -*************************************************************************/ - -Bitmap XOBitmap::GetBitmap() const -{ - return GetGraphicObject().GetGraphic().GetBitmap(); -} - -/************************************************************************* -|* -|* Bitmap XOBitmap::GetGraphicObject() -|* -*************************************************************************/ - -const GraphicObject& XOBitmap::GetGraphicObject() const -{ - if( bGraphicDirty ) - ( (XOBitmap*) this )->Array2Bitmap(); - - return aGraphicObject; -} - -/************************************************************************* -|* -|* void XOBitmap::Bitmap2Array() -|* -|* Beschreibung Umwandlung der Bitmap in Array, Hinter- u. -|* Vordergrundfarbe -|* -*************************************************************************/ - -void XOBitmap::Bitmap2Array() -{ - VirtualDevice aVD; - sal_Bool bPixelColor = sal_False; - const Bitmap aBitmap( GetBitmap() ); - const sal_uInt16 nLines = 8; // von Type abhaengig - - if( !pPixelArray ) - pPixelArray = new sal_uInt16[ nLines * nLines ]; - - aVD.SetOutputSizePixel( aBitmap.GetSizePixel() ); - aVD.DrawBitmap( Point(), aBitmap ); - aPixelColor = aBckgrColor = aVD.GetPixel( Point() ); - - // Aufbau des Arrays und Ermittlung der Vorder-, bzw. - // Hintergrundfarbe - for( sal_uInt16 i = 0; i < nLines; i++ ) - { - for( sal_uInt16 j = 0; j < nLines; j++ ) + if(8 == aBitmap.GetSizePixel().Width() && 8 == aBitmap.GetSizePixel().Height()) { - if ( aVD.GetPixel( Point( j, i ) ) == aBckgrColor ) - *( pPixelArray + j + i * nLines ) = 0; - else + if(2 == aBitmap.GetColorCount()) { - *( pPixelArray + j + i * nLines ) = 1; - if( !bPixelColor ) - { - aPixelColor = aVD.GetPixel( Point( j, i ) ); - bPixelColor = sal_True; - } - } - } - } -} - -/************************************************************************* -|* -|* void XOBitmap::Array2Bitmap() -|* -|* Beschreibung Umwandlung des Arrays, Hinter- u. -|* Vordergrundfarbe in eine Bitmap -|* -*************************************************************************/ + BitmapReadAccess* pRead = aBitmap.AcquireReadAccess(); -void XOBitmap::Array2Bitmap() -{ - VirtualDevice aVD; - sal_uInt16 nLines = 8; // von Type abhaengig - - if( !pPixelArray ) - return; + if(pRead) + { + if(pRead->HasPalette() && 2 == pRead->GetPaletteEntryCount()) + { + const BitmapPalette& rPalette = pRead->GetPalette(); - aVD.SetOutputSizePixel( Size( nLines, nLines ) ); + o_rBack = rPalette[1]; + o_rFront = rPalette[0]; - // Aufbau der Bitmap - for( sal_uInt16 i = 0; i < nLines; i++ ) - { - for( sal_uInt16 j = 0; j < nLines; j++ ) - { - if( *( pPixelArray + j + i * nLines ) == 0 ) - aVD.DrawPixel( Point( j, i ), aBckgrColor ); - else - aVD.DrawPixel( Point( j, i ), aPixelColor ); + return true; + } + } + } } } - aGraphicObject = GraphicObject( aVD.GetBitmap( Point(), Size( nLines, nLines ) ) ); - bGraphicDirty = sal_False; -} - -// ----------------------- -// class XFillBitmapItem -// ----------------------- -TYPEINIT1_AUTOFACTORY(XFillBitmapItem, NameOrIndex); - -/************************************************************************* -|* -|* XFillBitmapItem::XFillBitmapItem(const XubString& rName, -|* const Bitmap& rTheBitmap) -|* -*************************************************************************/ - -XFillBitmapItem::XFillBitmapItem(const XubString& rName, - const XOBitmap& rTheBitmap) : - NameOrIndex( XATTR_FILLBITMAP, rName ), - aXOBitmap( rTheBitmap ) -{ + return false; } -/************************************************************************* -|* -|* XFillBitmapItem::XFillBitmapItem(const XFillBitmapItem& rItem) -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// -XFillBitmapItem::XFillBitmapItem(const XFillBitmapItem& rItem) : - NameOrIndex( rItem ), - aXOBitmap( rItem.aXOBitmap ) +XFillBitmapItem::XFillBitmapItem(SvStream& rIn, sal_uInt16 nVer) +: NameOrIndex(XATTR_FILLBITMAP, rIn) { -} - -/************************************************************************* -|* -|* XFillBitmapItem::XFillBitmapItem(SvStream& rIn) -|* -*************************************************************************/ - -XFillBitmapItem::XFillBitmapItem( SvStream& rIn, sal_uInt16 nVer ) : - NameOrIndex( XATTR_FILLBITMAP, rIn ) -{ - if( nVer == 0 ) + if (!IsIndex()) { - if (!IsIndex()) + if(0 == nVer) { // Behandlung der alten Bitmaps Bitmap aBmp; rIn >> aBmp; - - aXOBitmap.SetBitmap( aBmp ); - aXOBitmap.SetBitmapStyle( XBITMAP_TILE ); - - if( aBmp.GetSizePixel().Width() == 8 && - aBmp.GetSizePixel().Height() == 8 ) - { - aXOBitmap.SetBitmapType( XBITMAP_8X8 ); - aXOBitmap.Bitmap2Array(); - } - else - aXOBitmap.SetBitmapType( XBITMAP_IMPORT ); + maGraphicObject = Graphic(aBmp); } - } - else if( nVer == 1 ) - { - if (!IsIndex()) + else if(1 == nVer) { + enum XBitmapType + { + XBITMAP_IMPORT, + XBITMAP_8X8 + }; + sal_Int16 iTmp; - rIn >> iTmp; - aXOBitmap.SetBitmapStyle( (XBitmapStyle) iTmp ); - rIn >> iTmp; - aXOBitmap.SetBitmapType( (XBitmapType) iTmp ); - if( aXOBitmap.GetBitmapType() == XBITMAP_IMPORT ) + rIn >> iTmp; // former XBitmapStyle + rIn >> iTmp; // former XBitmapType + + if(XBITMAP_IMPORT == iTmp) { Bitmap aBmp; + rIn >> aBmp; - aXOBitmap.SetBitmap( aBmp ); + maGraphicObject = Graphic(aBmp); } - else if( aXOBitmap.GetBitmapType() == XBITMAP_8X8 ) + else if(XBITMAP_8X8 == iTmp) { - sal_uInt16* pArray = new sal_uInt16[ 64 ]; - Color aColor; + sal_uInt16 aArray[64]; + + for(sal_uInt16 i(0); i < 64; i++) + { + rIn >> aArray[i]; + } + + Color aColorPix; + Color aColorBack; - for( sal_uInt16 i = 0; i < 64; i++ ) - rIn >> *( pArray + i ); - aXOBitmap.SetPixelArray( pArray ); + rIn >> aColorPix; + rIn >> aColorBack; - rIn >> aColor; - aXOBitmap.SetPixelColor( aColor ); - rIn >> aColor; - aXOBitmap.SetBackgroundColor( aColor ); + const Bitmap aBitmap(createHistorical8x8FromArray(aArray, aColorPix, aColorBack)); - delete []pArray; + maGraphicObject = Graphic(aBitmap); } } - } + else if(2 == nVer) + { + BitmapEx aBmpEx; - // #81908# force bitmap to exist - aXOBitmap.GetBitmap(); + rIn >> aBmpEx; + maGraphicObject = Graphic(aBmpEx); + } + } } -//************************************************************************* +////////////////////////////////////////////////////////////////////////////// -XFillBitmapItem::XFillBitmapItem( SfxItemPool* /*pPool*/, const XOBitmap& rTheBitmap ) -: NameOrIndex( XATTR_FILLBITMAP, -1 ), - aXOBitmap( rTheBitmap ) +XFillBitmapItem::XFillBitmapItem(SfxItemPool* /*pPool*/, const GraphicObject& rGraphicObject) +: NameOrIndex( XATTR_FILLBITMAP, -1), + maGraphicObject(rGraphicObject) { } -/************************************************************************* -|* -|* XFillBitmapItem::Clone(SfxItemPool* pPool) const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// SfxPoolItem* XFillBitmapItem::Clone(SfxItemPool* /*pPool*/) const { return new XFillBitmapItem(*this); } -/************************************************************************* -|* -|* int XFillBitmapItem::operator==(const SfxPoolItem& rItem) const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// int XFillBitmapItem::operator==(const SfxPoolItem& rItem) const { - return ( NameOrIndex::operator==(rItem) && - aXOBitmap == ((const XFillBitmapItem&) rItem).aXOBitmap ); + return (NameOrIndex::operator==(rItem) + && maGraphicObject == ((const XFillBitmapItem&)rItem).maGraphicObject); } -/************************************************************************* -|* -|* SfxPoolItem* XFillBitmapItem::Create(SvStream& rIn, sal_uInt16 nVer) const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// SfxPoolItem* XFillBitmapItem::Create(SvStream& rIn, sal_uInt16 nVer) const { return new XFillBitmapItem( rIn, nVer ); } -/************************************************************************* -|* -|* SfxPoolItem* XFillBitmapItem::Store(SvStream& rOut) const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// SvStream& XFillBitmapItem::Store( SvStream& rOut, sal_uInt16 nItemVersion ) const { - NameOrIndex::Store( rOut, nItemVersion ); + NameOrIndex::Store(rOut, nItemVersion); - if (!IsIndex()) + if(!IsIndex()) { - rOut << (sal_Int16) aXOBitmap.GetBitmapStyle(); - if( !aXOBitmap.GetBitmap() ) - rOut << (sal_Int16) XBITMAP_NONE; - else - { - rOut << (sal_Int16) aXOBitmap.GetBitmapType(); - if( aXOBitmap.GetBitmapType() == XBITMAP_IMPORT ) - { - const sal_uInt16 nOldComprMode = rOut.GetCompressMode(); - sal_uInt16 nNewComprMode = nOldComprMode; - - if( rOut.GetVersion() >= SOFFICE_FILEFORMAT_50 ) - nNewComprMode |= COMPRESSMODE_ZBITMAP; - else - nNewComprMode &= ~COMPRESSMODE_ZBITMAP; - - rOut.SetCompressMode( nNewComprMode ); - rOut << aXOBitmap.GetBitmap(); - rOut.SetCompressMode( nOldComprMode ); - } - else if( aXOBitmap.GetBitmapType() == XBITMAP_8X8 ) - { - sal_uInt16* pArray = aXOBitmap.GetPixelArray(); - for( sal_uInt16 i = 0; i < 64; i++ ) - rOut << (sal_uInt16) *( pArray + i ); - - rOut << aXOBitmap.GetPixelColor(); - rOut << aXOBitmap.GetBackgroundColor(); - } - } + rOut << maGraphicObject.GetGraphic().GetBitmapEx(); } return rOut; } -/************************************************************************* -|* -|* const Bitmap& XFillBitmapItem::GetValue(const XBitmapTable* pTable) const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// -const XOBitmap& XFillBitmapItem::GetBitmapValue( -// const XBitmapTable* pTable -) const // GetValue -> GetBitmapValue +const GraphicObject& XFillBitmapItem::GetGraphicObject() const { -// Note: we never pass pTable to this method which means that it's NULL. Thus, this code would -// fail if the Item was a list. I'm guessing that it can't be an Index or the caller makes sure -// it's not an Index before calling. Either way, I'm just going to return the Bitmap to keep it -// from failing. This could use some more research. (Joe P. 2011-08-24) -// if (!IsIndex()) -// return aXOBitmap; -// else -// return pTable->GetBitmap(GetIndex())->GetXBitmap(); - return aXOBitmap; + return maGraphicObject; } +////////////////////////////////////////////////////////////////////////////// + +void XFillBitmapItem::SetGraphicObject(const GraphicObject& rGraphicObject) +{ + maGraphicObject = rGraphicObject; +} -/************************************************************************* -|* -|* sal_uInt16 XFillBitmapItem::GetVersion() const -|* -*************************************************************************/ +////////////////////////////////////////////////////////////////////////////// -sal_uInt16 XFillBitmapItem::GetVersion( sal_uInt16 /*nFileFormatVersion*/) const +sal_uInt16 XFillBitmapItem::GetVersion(sal_uInt16 /*nFileFormatVersion*/) const { - // 2. Version - return( 1 ); + // version three + return(2); } -//------------------------------------------------------------------------ +////////////////////////////////////////////////////////////////////////////// -SfxItemPresentation XFillBitmapItem::GetPresentation -( +SfxItemPresentation XFillBitmapItem::GetPresentation( SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - OUString& rText, const IntlWrapper * -) const + SfxMapUnit /*eCoreUnit*/, + SfxMapUnit /*ePresUnit*/, + OUString& rText, + const IntlWrapper*) const { - switch ( ePres ) + switch (ePres) { case SFX_ITEM_PRESENTATION_NONE: rText = OUString(); @@ -600,11 +283,10 @@ SfxItemPresentation XFillBitmapItem::GetPresentation } } -//------------------------------------------------------------------------ +////////////////////////////////////////////////////////////////////////////// -bool XFillBitmapItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const +bool XFillBitmapItem::QueryValue(::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId) const { -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); nMemberId &= ~CONVERT_TWIPS; // needed for MID_NAME @@ -627,21 +309,16 @@ bool XFillBitmapItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nM if( nMemberId == MID_GRAFURL || nMemberId == 0 ) { - XOBitmap aLocalXOBitmap( GetBitmapValue() ); aURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( UNO_NAME_GRAPHOBJ_URLPREFIX)); aURL += ::rtl::OStringToOUString( - aLocalXOBitmap.GetGraphicObject().GetUniqueID(), + GetGraphicObject().GetUniqueID(), RTL_TEXTENCODING_ASCII_US); } if( nMemberId == MID_BITMAP || nMemberId == 0 ) { - XOBitmap aLocalXOBitmap( GetBitmapValue() ); - Bitmap aBmp( aLocalXOBitmap.GetBitmap() ); - BitmapEx aBmpEx( aBmp ); - - xBmp.set( VCLUnoHelper::CreateBitmap( aBmpEx ) ); + xBmp.set(VCLUnoHelper::CreateBitmap(GetGraphicObject().GetGraphic().GetBitmapEx())); } if( nMemberId == MID_NAME ) @@ -669,11 +346,10 @@ bool XFillBitmapItem::QueryValue( ::com::sun::star::uno::Any& rVal, sal_uInt8 nM return true; } -//------------------------------------------------------------------------ +////////////////////////////////////////////////////////////////////////////// bool XFillBitmapItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) { -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); nMemberId &= ~CONVERT_TWIPS; ::rtl::OUString aName; @@ -719,47 +395,35 @@ bool XFillBitmapItem::PutValue( const ::com::sun::star::uno::Any& rVal, sal_uInt } if( bSetURL ) { - GraphicObject aGrafObj( GraphicObject::CreateGraphicObjectFromURL( aURL ) ); - XOBitmap aBMP( aGrafObj ); - SetBitmapValue( aBMP ); + maGraphicObject = GraphicObject::CreateGraphicObjectFromURL(aURL); } if( bSetBitmap ) { - Bitmap aInput; - if ( xBmp.is() ) - { - BitmapEx aInputEx( VCLUnoHelper::GetBitmap( xBmp ) ); - aInput = aInputEx.GetBitmap(); - } - else if ( xGraphic.is() ) + if(xBmp.is()) { - Graphic aGraphic( xGraphic ); - aInput = aGraphic.GetBitmap(); + maGraphicObject = Graphic(VCLUnoHelper::GetBitmap(xBmp)); } - - // note: aXOBitmap is the member bitmap - aXOBitmap.SetBitmap( aInput ); - aXOBitmap.SetBitmapType(XBITMAP_IMPORT); - - if(aInput.GetSizePixel().Width() == 8 - && aInput.GetSizePixel().Height() == 8 - && aInput.GetColorCount() == 2) + else if(xGraphic.is()) { - aXOBitmap.Bitmap2Array(); - aXOBitmap.SetBitmapType(XBITMAP_8X8); - aXOBitmap.SetPixelSize(aInput.GetSizePixel()); + maGraphicObject = Graphic(xGraphic); } } return (bSetName || bSetURL || bSetBitmap); } +////////////////////////////////////////////////////////////////////////////// + sal_Bool XFillBitmapItem::CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 ) { - return ((XFillBitmapItem*)p1)->GetBitmapValue().GetGraphicObject().GetUniqueID() == - ((XFillBitmapItem*)p2)->GetBitmapValue().GetGraphicObject().GetUniqueID(); + const GraphicObject& aGraphicObjectA(((XFillBitmapItem*)p1)->GetGraphicObject()); + const GraphicObject& aGraphicObjectB(((XFillBitmapItem*)p2)->GetGraphicObject()); + + return aGraphicObjectA == aGraphicObjectB; } +////////////////////////////////////////////////////////////////////////////// + XFillBitmapItem* XFillBitmapItem::checkForUniqueItem( SdrModel* pModel ) const { if( pModel ) @@ -772,7 +436,9 @@ XFillBitmapItem* XFillBitmapItem::checkForUniqueItem( SdrModel* pModel ) const // if the given name is not valid, replace it! if( aUniqueName != GetName() ) - return new XFillBitmapItem( aUniqueName, aXOBitmap ); + { + return new XFillBitmapItem(aUniqueName, maGraphicObject); + } } return (XFillBitmapItem*)this; diff --git a/svx/source/xoutdev/xpool.cxx b/svx/source/xoutdev/xpool.cxx index 9b577b186bfd..5a04d3c38c3c 100644 --- a/svx/source/xoutdev/xpool.cxx +++ b/svx/source/xoutdev/xpool.cxx @@ -39,7 +39,7 @@ XOutdevItemPool::XOutdevItemPool( { // prepare some defaults const XubString aNullStr; - const Bitmap aNullBmp; + const Graphic aNullGraphic; const basegfx::B2DPolyPolygon aNullPol; const Color aNullLineCol(RGB_Color(COL_BLACK)); const Color aNullFillCol(RGB_COLORDATA( 153, 204, 255 )); @@ -85,7 +85,7 @@ XOutdevItemPool::XOutdevItemPool( mppLocalPoolDefaults[XATTR_FILLCOLOR -XATTR_START] = new XFillColorItem (aNullStr,aNullFillCol); mppLocalPoolDefaults[XATTR_FILLGRADIENT -XATTR_START] = new XFillGradientItem(aNullGrad); mppLocalPoolDefaults[XATTR_FILLHATCH -XATTR_START] = new XFillHatchItem (this,aNullHatch); - mppLocalPoolDefaults[XATTR_FILLBITMAP -XATTR_START] = new XFillBitmapItem (this,aNullBmp); + mppLocalPoolDefaults[XATTR_FILLBITMAP -XATTR_START] = new XFillBitmapItem (this, aNullGraphic); mppLocalPoolDefaults[XATTR_FILLTRANSPARENCE -XATTR_START] = new XFillTransparenceItem; mppLocalPoolDefaults[XATTR_GRADIENTSTEPCOUNT -XATTR_START] = new XGradientStepCountItem; mppLocalPoolDefaults[XATTR_FILLBMP_TILE -XATTR_START] = new XFillBmpTileItem; diff --git a/svx/source/xoutdev/xtabbtmp.cxx b/svx/source/xoutdev/xtabbtmp.cxx index 891f793eb8d5..a3657018472d 100644 --- a/svx/source/xoutdev/xtabbtmp.cxx +++ b/svx/source/xoutdev/xtabbtmp.cxx @@ -27,6 +27,7 @@ #include <svx/dialmgr.hxx> #include <svx/xtable.hxx> #include <svx/xpool.hxx> +#include <svx/xbtmpit.hxx> using namespace com::sun::star; @@ -48,7 +49,6 @@ uno::Reference< container::XNameContainer > XBitmapList::createInstance() sal_Bool XBitmapList::Create() { - // Array der Bitmap //----------------------- // 00 01 02 03 04 05 06 07 // 08 09 10 11 12 13 14 15 @@ -58,31 +58,38 @@ sal_Bool XBitmapList::Create() // 40 41 42 43 44 45 46 47 // 48 49 50 51 52 53 54 55 // 56 57 58 59 60 61 62 63 + String aStr(SVX_RES(RID_SVXSTR_BITMAP)); + sal_uInt16 aArray[64]; + Bitmap aBitmap; + const xub_StrLen nLen(aStr.Len() - 1); - String aStr( SVX_RES( RID_SVXSTR_BITMAP ) ); - Color aColWhite( RGB_Color( COL_WHITE ) ); - xub_StrLen nLen; - sal_uInt16 aArray[64]; + memset(aArray, 0, sizeof(aArray)); - memset( aArray, 0, sizeof( aArray ) ); + // white/white bitmap aStr.AppendAscii(" 1"); - nLen = aStr.Len() - 1; - Insert( new XBitmapEntry( XOBitmap( aArray, aColWhite, aColWhite ), aStr ) ); + aBitmap = createHistorical8x8FromArray(aArray, RGB_Color(COL_WHITE), RGB_Color(COL_WHITE)); + Insert(new XBitmapEntry(Graphic(aBitmap), aStr)); + // black/white bitmap aArray[ 0] = 1; aArray[ 9] = 1; aArray[18] = 1; aArray[27] = 1; aArray[36] = 1; aArray[45] = 1; aArray[54] = 1; aArray[63] = 1; aStr.SetChar(nLen, sal_Unicode('2')); - Insert( new XBitmapEntry( XOBitmap( aArray, RGB_Color( COL_BLACK ), aColWhite ), aStr ) ); + aBitmap = createHistorical8x8FromArray(aArray, RGB_Color(COL_BLACK), RGB_Color(COL_WHITE)); + Insert(new XBitmapEntry(Graphic(aBitmap), aStr)); + // lightred/white bitmap aArray[ 7] = 1; aArray[14] = 1; aArray[21] = 1; aArray[28] = 1; aArray[35] = 1; aArray[42] = 1; aArray[49] = 1; aArray[56] = 1; aStr.SetChar(nLen, sal_Unicode('3')); - Insert( new XBitmapEntry( XOBitmap( aArray, RGB_Color( COL_LIGHTRED ), aColWhite ), aStr ) ); + aBitmap = createHistorical8x8FromArray(aArray, RGB_Color(COL_LIGHTRED), RGB_Color(COL_WHITE)); + Insert(new XBitmapEntry(Graphic(aBitmap), aStr)); + // lightblue/white bitmap aArray[24] = 1; aArray[25] = 1; aArray[26] = 1; aArray[29] = 1; aArray[30] = 1; aArray[31] = 1; aStr.SetChar(nLen, sal_Unicode('4')); - Insert( new XBitmapEntry( XOBitmap( aArray, RGB_Color( COL_LIGHTBLUE ), aColWhite ), aStr ) ); + aBitmap = createHistorical8x8FromArray(aArray, RGB_Color(COL_LIGHTBLUE), RGB_Color(COL_WHITE)); + Insert(new XBitmapEntry(Graphic(aBitmap), aStr)); return sal_True; } diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx index 48bb0f8f6bdd..0bedb7389015 100644 --- a/sw/source/core/frmedt/fecopy.cxx +++ b/sw/source/core/frmedt/fecopy.cxx @@ -1524,11 +1524,11 @@ sal_Bool SwFEShell::Paste( const Graphic &rGrf ) if( bRet ) { - XOBitmap aXOBitmap( rGrf.GetBitmap() ); - SfxItemSet aSet( GetAttrPool(), XATTR_FILLSTYLE, XATTR_FILLBITMAP ); - aSet.Put( XFillStyleItem( XFILL_BITMAP )); - aSet.Put( XFillBitmapItem( aEmptyStr, aXOBitmap )); - pView->SetAttributes( aSet, sal_False ); + SfxItemSet aSet(GetAttrPool(), XATTR_FILLSTYLE, XATTR_FILLBITMAP); + + aSet.Put(XFillStyleItem(XFILL_BITMAP)); + aSet.Put(XFillBitmapItem(aEmptyStr, rGrf)); + pView->SetAttributes(aSet, false); } return bRet; } diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx index 599b1acf3dd7..21b705875c8d 100644 --- a/sw/source/filter/ww8/ww8graf.cxx +++ b/sw/source/filter/ww8/ww8graf.cxx @@ -1803,28 +1803,19 @@ void SwWW8ImplReader::MatchSdrItemsIntoFlySet( SdrObject* pSdrObj, break; case XFILL_BITMAP: { - const Graphic aGraphic( - static_cast< XFillBitmapItem const & >( - rOldSet.Get(XATTR_FILLBITMAP)). - GetBitmapValue().GetBitmap()); - bool bTile = WW8ITEMVALUE(rOldSet, XATTR_FILLBMP_TILE, - SfxBoolItem) ? true: false; - GraphicObject aGrfObj(aGraphic); + GraphicObject aGrfObj(static_cast< XFillBitmapItem const & >(rOldSet.Get(XATTR_FILLBITMAP)).GetGraphicObject()); + const bool bTile(WW8ITEMVALUE(rOldSet, XATTR_FILLBMP_TILE, SfxBoolItem) ? true: false); - aBrushItem.SetGraphicObject(aGrfObj); - - if (bBrushItemOk) //has trans + if(bBrushItemOk) //has trans { - GraphicObject *pGraphicObject = - const_cast<GraphicObject *> - (aBrushItem.GetGraphicObject()); - GraphicAttr aAttr(pGraphicObject->GetAttr()); + GraphicAttr aAttr(aGrfObj.GetAttr()); + aAttr.SetTransparency(nTrans); - pGraphicObject->SetAttr(aAttr); + aGrfObj.SetAttr(aAttr); } + aBrushItem.SetGraphicObject(aGrfObj); aBrushItem.SetGraphicPos(bTile ? GPOS_TILED : GPOS_AREA); - bBrushItemOk = true; } break; |