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