diff options
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; |