1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <svx/xtable.hxx> 32*cdf0e10cSrcweir #include "svx/xattr.hxx" 33*cdf0e10cSrcweir #include <svx/xpool.hxx> 34*cdf0e10cSrcweir #include <svx/svdattr.hxx> 35*cdf0e10cSrcweir #include <svx/svxids.hrc> 36*cdf0e10cSrcweir #include <svl/itemset.hxx> 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir /************************************************************************* 39*cdf0e10cSrcweir |* 40*cdf0e10cSrcweir |* Konstruktor 41*cdf0e10cSrcweir |* 42*cdf0e10cSrcweir \************************************************************************/ 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir XOutdevItemPool::XOutdevItemPool( 45*cdf0e10cSrcweir SfxItemPool* _pMaster, 46*cdf0e10cSrcweir sal_uInt16 nAttrStart, 47*cdf0e10cSrcweir sal_uInt16 nAttrEnd, 48*cdf0e10cSrcweir sal_Bool bLoadRefCounts) 49*cdf0e10cSrcweir : SfxItemPool(String("XOutdevItemPool", gsl_getSystemTextEncoding()), nAttrStart, nAttrEnd, 0L, 0L, bLoadRefCounts) 50*cdf0e10cSrcweir { 51*cdf0e10cSrcweir // prepare some defaults 52*cdf0e10cSrcweir const XubString aNullStr; 53*cdf0e10cSrcweir const Bitmap aNullBmp; 54*cdf0e10cSrcweir const basegfx::B2DPolyPolygon aNullPol; 55*cdf0e10cSrcweir const Color aNullLineCol(RGB_Color(COL_BLACK)); 56*cdf0e10cSrcweir const Color aNullFillCol(RGB_COLORDATA( 153, 204, 255 )); 57*cdf0e10cSrcweir const Color aNullShadowCol(RGB_Color(COL_LIGHTGRAY)); 58*cdf0e10cSrcweir const XDash aNullDash; 59*cdf0e10cSrcweir const XGradient aNullGrad(aNullLineCol, RGB_Color(COL_WHITE)); 60*cdf0e10cSrcweir const XHatch aNullHatch(aNullLineCol); 61*cdf0e10cSrcweir 62*cdf0e10cSrcweir // get master pointer, evtl. add myself to the end of the pools 63*cdf0e10cSrcweir if(!_pMaster) 64*cdf0e10cSrcweir { 65*cdf0e10cSrcweir _pMaster = this; 66*cdf0e10cSrcweir } 67*cdf0e10cSrcweir else 68*cdf0e10cSrcweir { 69*cdf0e10cSrcweir SfxItemPool* pParent = _pMaster; 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir while(pParent->GetSecondaryPool()) 72*cdf0e10cSrcweir { 73*cdf0e10cSrcweir pParent = pParent->GetSecondaryPool(); 74*cdf0e10cSrcweir } 75*cdf0e10cSrcweir 76*cdf0e10cSrcweir pParent->SetSecondaryPool(this); 77*cdf0e10cSrcweir } 78*cdf0e10cSrcweir 79*cdf0e10cSrcweir // prepare PoolDefaults 80*cdf0e10cSrcweir mppLocalPoolDefaults = new SfxPoolItem*[GetLastWhich() - GetFirstWhich() + 1]; 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINESTYLE -XATTR_START] = new XLineStyleItem; 83*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEDASH -XATTR_START] = new XLineDashItem(this,aNullDash); 84*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEWIDTH -XATTR_START] = new XLineWidthItem; 85*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINECOLOR -XATTR_START] = new XLineColorItem(aNullStr,aNullLineCol); 86*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINESTART -XATTR_START] = new XLineStartItem(this,aNullPol); 87*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEEND -XATTR_START] = new XLineEndItem (this,aNullPol); 88*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINESTARTWIDTH -XATTR_START] = new XLineStartWidthItem; 89*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEENDWIDTH -XATTR_START] = new XLineEndWidthItem; 90*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINESTARTCENTER -XATTR_START] = new XLineStartCenterItem; 91*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEENDCENTER -XATTR_START] = new XLineEndCenterItem; 92*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINETRANSPARENCE -XATTR_START] = new XLineTransparenceItem; 93*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_LINEJOINT -XATTR_START] = new XLineJointItem; 94*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLSTYLE -XATTR_START] = new XFillStyleItem; 95*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLCOLOR -XATTR_START] = new XFillColorItem (aNullStr,aNullFillCol); 96*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLGRADIENT -XATTR_START] = new XFillGradientItem(this,aNullGrad); 97*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLHATCH -XATTR_START] = new XFillHatchItem (this,aNullHatch); 98*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBITMAP -XATTR_START] = new XFillBitmapItem (this,aNullBmp); 99*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLTRANSPARENCE -XATTR_START] = new XFillTransparenceItem; 100*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_GRADIENTSTEPCOUNT -XATTR_START] = new XGradientStepCountItem; 101*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_TILE -XATTR_START] = new XFillBmpTileItem; 102*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_POS -XATTR_START] = new XFillBmpPosItem; 103*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_SIZEX -XATTR_START] = new XFillBmpSizeXItem; 104*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_SIZEY -XATTR_START] = new XFillBmpSizeYItem; 105*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_SIZELOG -XATTR_START] = new XFillBmpSizeLogItem; 106*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_TILEOFFSETX -XATTR_START] = new XFillBmpTileOffsetXItem; 107*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_TILEOFFSETY -XATTR_START] = new XFillBmpTileOffsetYItem; 108*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_STRETCH -XATTR_START] = new XFillBmpStretchItem; 109*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_POSOFFSETX -XATTR_START] = new XFillBmpPosOffsetXItem; 110*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBMP_POSOFFSETY -XATTR_START] = new XFillBmpPosOffsetYItem; 111*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLFLOATTRANSPARENCE -XATTR_START] = new XFillFloatTransparenceItem( this, aNullGrad, sal_False ); 112*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_SECONDARYFILLCOLOR -XATTR_START] = new XSecondaryFillColorItem(aNullStr, aNullFillCol); 113*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FILLBACKGROUND -XATTR_START] = new XFillBackgroundItem; 114*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSTYLE -XATTR_START] = new XFormTextStyleItem; 115*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTADJUST -XATTR_START] = new XFormTextAdjustItem; 116*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTDISTANCE -XATTR_START] = new XFormTextDistanceItem; 117*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSTART -XATTR_START] = new XFormTextStartItem; 118*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTMIRROR -XATTR_START] = new XFormTextMirrorItem; 119*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTOUTLINE -XATTR_START] = new XFormTextOutlineItem; 120*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSHADOW -XATTR_START] = new XFormTextShadowItem; 121*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSHDWCOLOR -XATTR_START] = new XFormTextShadowColorItem(aNullStr,aNullShadowCol); 122*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSHDWXVAL -XATTR_START] = new XFormTextShadowXValItem; 123*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSHDWYVAL -XATTR_START] = new XFormTextShadowYValItem; 124*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSTDFORM -XATTR_START] = new XFormTextStdFormItem; 125*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTHIDEFORM -XATTR_START] = new XFormTextHideFormItem; 126*cdf0e10cSrcweir mppLocalPoolDefaults[XATTR_FORMTXTSHDWTRANSP -XATTR_START] = new XFormTextShadowTranspItem; 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir // create SetItems 129*cdf0e10cSrcweir SfxItemSet* pSet=new SfxItemSet(*_pMaster, XATTR_LINE_FIRST, XATTR_LINE_LAST); 130*cdf0e10cSrcweir mppLocalPoolDefaults[XATTRSET_LINE - XATTR_START] = new XLineAttrSetItem(pSet); 131*cdf0e10cSrcweir pSet=new SfxItemSet(*_pMaster, XATTR_FILL_FIRST, XATTR_FILL_LAST); 132*cdf0e10cSrcweir mppLocalPoolDefaults[XATTRSET_FILL - XATTR_START] = new XFillAttrSetItem(pSet); 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir // create ItemInfos 135*cdf0e10cSrcweir mpLocalItemInfos = new SfxItemInfo[GetLastWhich() - GetFirstWhich() + 1]; 136*cdf0e10cSrcweir for(sal_uInt16 i(GetFirstWhich()); i <= GetLastWhich(); i++) 137*cdf0e10cSrcweir { 138*cdf0e10cSrcweir mpLocalItemInfos[i - XATTR_START]._nSID = 0; 139*cdf0e10cSrcweir mpLocalItemInfos[i - XATTR_START]._nFlags = SFX_ITEM_POOLABLE; 140*cdf0e10cSrcweir } 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINESTYLE -XATTR_START]._nSID = SID_ATTR_LINE_STYLE; 143*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINEDASH -XATTR_START]._nSID = SID_ATTR_LINE_DASH; 144*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINEWIDTH -XATTR_START]._nSID = SID_ATTR_LINE_WIDTH; 145*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINECOLOR -XATTR_START]._nSID = SID_ATTR_LINE_COLOR; 146*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINESTART -XATTR_START]._nSID = SID_ATTR_LINE_START; 147*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINEEND -XATTR_START]._nSID = SID_ATTR_LINE_END; 148*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINESTARTWIDTH -XATTR_START]._nSID = SID_ATTR_LINE_STARTWIDTH; 149*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINEENDWIDTH -XATTR_START]._nSID = SID_ATTR_LINE_ENDWIDTH; 150*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINESTARTCENTER -XATTR_START]._nSID = SID_ATTR_LINE_STARTCENTER; 151*cdf0e10cSrcweir mpLocalItemInfos[XATTR_LINEENDCENTER -XATTR_START]._nSID = SID_ATTR_LINE_ENDCENTER; 152*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FILLSTYLE -XATTR_START]._nSID = SID_ATTR_FILL_STYLE; 153*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FILLCOLOR -XATTR_START]._nSID = SID_ATTR_FILL_COLOR; 154*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FILLGRADIENT -XATTR_START]._nSID = SID_ATTR_FILL_GRADIENT; 155*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FILLHATCH -XATTR_START]._nSID = SID_ATTR_FILL_HATCH; 156*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FILLBITMAP -XATTR_START]._nSID = SID_ATTR_FILL_BITMAP; 157*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSTYLE -XATTR_START]._nSID = SID_FORMTEXT_STYLE; 158*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTADJUST -XATTR_START]._nSID = SID_FORMTEXT_ADJUST; 159*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTDISTANCE -XATTR_START]._nSID = SID_FORMTEXT_DISTANCE; 160*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSTART -XATTR_START]._nSID = SID_FORMTEXT_START; 161*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTMIRROR -XATTR_START]._nSID = SID_FORMTEXT_MIRROR; 162*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTOUTLINE -XATTR_START]._nSID = SID_FORMTEXT_OUTLINE; 163*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSHADOW -XATTR_START]._nSID = SID_FORMTEXT_SHADOW; 164*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSHDWCOLOR -XATTR_START]._nSID = SID_FORMTEXT_SHDWCOLOR; 165*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSHDWXVAL -XATTR_START]._nSID = SID_FORMTEXT_SHDWXVAL; 166*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSHDWYVAL -XATTR_START]._nSID = SID_FORMTEXT_SHDWYVAL; 167*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTSTDFORM -XATTR_START]._nSID = SID_FORMTEXT_STDFORM; 168*cdf0e10cSrcweir mpLocalItemInfos[XATTR_FORMTXTHIDEFORM -XATTR_START]._nSID = SID_FORMTEXT_HIDEFORM; 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir // if it's my own creation level, set Defaults and ItemInfos 171*cdf0e10cSrcweir if(XATTR_START == GetFirstWhich() && XATTR_END == GetLastWhich()) 172*cdf0e10cSrcweir { 173*cdf0e10cSrcweir SetDefaults(mppLocalPoolDefaults); 174*cdf0e10cSrcweir SetItemInfos(mpLocalItemInfos); 175*cdf0e10cSrcweir } 176*cdf0e10cSrcweir } 177*cdf0e10cSrcweir 178*cdf0e10cSrcweir /************************************************************************* 179*cdf0e10cSrcweir |* 180*cdf0e10cSrcweir |* copy ctor, sorgt dafuer, dass die static defaults gecloned werden 181*cdf0e10cSrcweir |* (Parameter 2 = sal_True) 182*cdf0e10cSrcweir |* 183*cdf0e10cSrcweir \************************************************************************/ 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir XOutdevItemPool::XOutdevItemPool(const XOutdevItemPool& rPool) 186*cdf0e10cSrcweir : SfxItemPool(rPool, sal_True), 187*cdf0e10cSrcweir mppLocalPoolDefaults(0L), 188*cdf0e10cSrcweir mpLocalItemInfos(0L) 189*cdf0e10cSrcweir { 190*cdf0e10cSrcweir } 191*cdf0e10cSrcweir 192*cdf0e10cSrcweir /************************************************************************* 193*cdf0e10cSrcweir |* 194*cdf0e10cSrcweir |* Clone() 195*cdf0e10cSrcweir |* 196*cdf0e10cSrcweir \************************************************************************/ 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir SfxItemPool* XOutdevItemPool::Clone() const 199*cdf0e10cSrcweir { 200*cdf0e10cSrcweir return new XOutdevItemPool(*this); 201*cdf0e10cSrcweir } 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir /************************************************************************* 204*cdf0e10cSrcweir |* 205*cdf0e10cSrcweir |* Destruktor 206*cdf0e10cSrcweir |* 207*cdf0e10cSrcweir \************************************************************************/ 208*cdf0e10cSrcweir 209*cdf0e10cSrcweir XOutdevItemPool::~XOutdevItemPool() 210*cdf0e10cSrcweir { 211*cdf0e10cSrcweir Delete(); 212*cdf0e10cSrcweir 213*cdf0e10cSrcweir // remove own static defaults 214*cdf0e10cSrcweir if(mppLocalPoolDefaults) 215*cdf0e10cSrcweir { 216*cdf0e10cSrcweir SfxPoolItem** ppDefaultItem = mppLocalPoolDefaults; 217*cdf0e10cSrcweir for(sal_uInt16 i(GetLastWhich() - GetFirstWhich() + 1); i; --i, ++ppDefaultItem) 218*cdf0e10cSrcweir { 219*cdf0e10cSrcweir if ( *ppDefaultItem ) //Teile schon von abgel. Klasse abgeraeumt! 220*cdf0e10cSrcweir { 221*cdf0e10cSrcweir SetRefCount( **ppDefaultItem, 0 ); 222*cdf0e10cSrcweir delete *ppDefaultItem; 223*cdf0e10cSrcweir } 224*cdf0e10cSrcweir } 225*cdf0e10cSrcweir 226*cdf0e10cSrcweir delete[] mppLocalPoolDefaults; 227*cdf0e10cSrcweir } 228*cdf0e10cSrcweir 229*cdf0e10cSrcweir if(mpLocalItemInfos) 230*cdf0e10cSrcweir { 231*cdf0e10cSrcweir delete[] mpLocalItemInfos; 232*cdf0e10cSrcweir } 233*cdf0e10cSrcweir } 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir // eof 236