xref: /trunk/main/svx/source/xoutdev/xtable.cxx (revision c1114679)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 // MARKER(update_precomp.py): autogen include statement, do not remove
23 #include "precompiled_svx.hxx"
24 
25 #include <svx/xtable.hxx>
26 #include <svx/xpool.hxx>
27 #include <svx/svdpool.hxx>
28 
29 #define GLOBALOVERFLOW
30 
31 // reference strings
32 sal_Unicode __FAR_DATA pszStandard[] = { 's', 't', 'a', 'n', 'd', 'a', 'r', 'd', 0 };
33 
34 // Convert to real RGB colors, so that you can
35 // at last select correctly in the listboxes.
RGB_Color(ColorData nColorName)36 Color RGB_Color( ColorData nColorName )
37 {
38 	Color aColor( nColorName );
39 	Color aRGBColor( aColor.GetRed(), aColor.GetGreen(), aColor.GetBlue() );
40 	return aRGBColor;
41 }
42 
43 //////////////////////////////////////////////////////////////////////////////
44 // class XColorEntry
45 
XColorEntry(const Color & rColor,const String & rName)46 XColorEntry::XColorEntry(const Color& rColor, const String& rName)
47 :   XPropertyEntry(rName),
48     aColor(rColor)
49 {
50 }
51 
XColorEntry(const XColorEntry & rOther)52 XColorEntry::XColorEntry(const XColorEntry& rOther)
53 :   XPropertyEntry(rOther),
54 aColor(rOther.aColor)
55 {
56 }
57 
58 //////////////////////////////////////////////////////////////////////////////
59 // class XLineEndEntry
60 
XLineEndEntry(const basegfx::B2DPolyPolygon & rB2DPolyPolygon,const String & rName)61 XLineEndEntry::XLineEndEntry(const basegfx::B2DPolyPolygon& rB2DPolyPolygon, const String& rName)
62 :   XPropertyEntry(rName),
63     aB2DPolyPolygon(rB2DPolyPolygon)
64 {
65 }
66 
XLineEndEntry(const XLineEndEntry & rOther)67 XLineEndEntry::XLineEndEntry(const XLineEndEntry& rOther)
68 :   XPropertyEntry(rOther),
69     aB2DPolyPolygon(rOther.aB2DPolyPolygon)
70 {
71 }
72 
73 //////////////////////////////////////////////////////////////////////////////
74 // class XDashEntry
75 
XDashEntry(const XDash & rDash,const String & rName)76 XDashEntry::XDashEntry(const XDash& rDash, const String& rName)
77 :   XPropertyEntry(rName),
78     aDash(rDash)
79 {
80 }
81 
XDashEntry(const XDashEntry & rOther)82 XDashEntry::XDashEntry(const XDashEntry& rOther)
83 :   XPropertyEntry(rOther),
84 aDash(rOther.aDash)
85 {
86 }
87 
88 //////////////////////////////////////////////////////////////////////////////
89 // class XHatchEntry
90 
XHatchEntry(const XHatch & rHatch,const String & rName)91 XHatchEntry::XHatchEntry(const XHatch& rHatch, const String& rName)
92 :   XPropertyEntry(rName),
93     aHatch(rHatch)
94 {
95 }
96 
XHatchEntry(const XHatchEntry & rOther)97 XHatchEntry::XHatchEntry(const XHatchEntry& rOther)
98 :   XPropertyEntry(rOther),
99     aHatch(rOther.aHatch)
100 {
101 }
102 
103 //////////////////////////////////////////////////////////////////////////////
104 // class XGradientEntry
105 
XGradientEntry(const XGradient & rGradient,const String & rName)106 XGradientEntry::XGradientEntry(const XGradient& rGradient, const String& rName)
107 :   XPropertyEntry(rName),
108     aGradient(rGradient)
109 {
110 }
111 
XGradientEntry(const XGradientEntry & rOther)112 XGradientEntry::XGradientEntry(const XGradientEntry& rOther)
113 :   XPropertyEntry(rOther),
114     aGradient(rOther.aGradient)
115 {
116 }
117 
118 //////////////////////////////////////////////////////////////////////////////
119 // class XBitmapEntry
120 
XBitmapEntry(const GraphicObject & rGraphicObject,const String & rName)121 XBitmapEntry::XBitmapEntry(const GraphicObject& rGraphicObject, const String& rName)
122 :   XPropertyEntry(rName),
123     maGraphicObject(rGraphicObject)
124 {
125 }
126 
XBitmapEntry(const XBitmapEntry & rOther)127 XBitmapEntry::XBitmapEntry(const XBitmapEntry& rOther)
128 :   XPropertyEntry(rOther),
129     maGraphicObject(rOther.maGraphicObject)
130 {
131 }
132 
133 //////////////////////////////////////////////////////////////////////////////
134 // class XPropertyList
135 
XPropertyList(const String & rPath)136 XPropertyList::XPropertyList( const String& rPath ) :
137 			maName			( pszStandard, 8 ),
138 			maPath			( rPath ),
139 			maContent(),
140 			mbListDirty		(true)
141 {
142 }
143 
~XPropertyList()144 XPropertyList::~XPropertyList()
145 {
146     while(!maContent.empty())
147     {
148         delete maContent.back();
149         maContent.pop_back();
150     }
151 }
152 
Clear()153 void XPropertyList::Clear()
154 {
155     while(!maContent.empty())
156     {
157         delete maContent.back();
158         maContent.pop_back();
159     }
160 }
161 
Count() const162 long XPropertyList::Count() const
163 {
164     if( mbListDirty )
165     {
166         if(!const_cast< XPropertyList* >(this)->Load())
167         {
168             const_cast< XPropertyList* >(this)->Create();
169         }
170     }
171 
172     return maContent.size();
173 }
174 
Get(long nIndex) const175 XPropertyEntry* XPropertyList::Get( long nIndex ) const
176 {
177     if( mbListDirty )
178     {
179         if(!const_cast< XPropertyList* >(this)->Load())
180         {
181             const_cast< XPropertyList* >(this)->Create();
182         }
183     }
184 
185     const long nObjectCount(maContent.size());
186 
187     if(nIndex >= nObjectCount)
188     {
189         return 0;
190     }
191 
192     return maContent[nIndex];
193 }
194 
GetIndex(const XubString & rName) const195 long XPropertyList::GetIndex(const XubString& rName) const
196 {
197     if( mbListDirty )
198     {
199         if(!const_cast< XPropertyList* >(this)->Load())
200         {
201             const_cast< XPropertyList* >(this)->Create();
202         }
203     }
204 
205     ::std::vector< XPropertyEntry* >::const_iterator aStart(maContent.begin());
206     const ::std::vector< XPropertyEntry* >::const_iterator aEnd(maContent.end());
207 
208     for(long a(0); aStart != aEnd; a++, aStart++)
209     {
210         const XPropertyEntry* pEntry = *aStart;
211 
212         if(pEntry && pEntry->GetName() == rName)
213         {
214             return a;
215         }
216     }
217 
218     return -1;
219 }
220 
GetUiBitmap(long nIndex) const221 Bitmap XPropertyList::GetUiBitmap( long nIndex ) const
222 {
223     Bitmap aRetval;
224     XPropertyEntry* pEntry = Get(nIndex);
225 
226     if(pEntry)
227     {
228         aRetval = pEntry->GetUiBitmap();
229 
230         if(aRetval.IsEmpty())
231         {
232             aRetval = const_cast< XPropertyList* >(this)->CreateBitmapForUI(nIndex);
233             pEntry->SetUiBitmap(aRetval);
234         }
235     }
236 
237     return aRetval;
238 }
239 
Insert(XPropertyEntry * pEntry,long nIndex)240 void XPropertyList::Insert( XPropertyEntry* pEntry, long nIndex )
241 {
242     if(pEntry)
243     {
244         const long nObjectCount(maContent.size());
245 
246         if(static_cast< long >(LIST_APPEND) == nIndex || nIndex >= nObjectCount)
247         {
248             maContent.push_back(pEntry);
249         }
250         else
251         {
252             maContent.insert(maContent.begin() + nIndex, pEntry);
253         }
254     }
255 }
256 
Replace(XPropertyEntry * pEntry,long nIndex)257 XPropertyEntry* XPropertyList::Replace( XPropertyEntry* pEntry, long nIndex )
258 {
259     XPropertyEntry* pRetval = 0;
260 
261     if(pEntry)
262     {
263         const long nObjectCount(maContent.size());
264 
265         if(nIndex < nObjectCount)
266         {
267             pRetval = maContent[nIndex];
268             maContent[nIndex] = pEntry;
269         }
270     }
271 
272     return pRetval;
273 }
274 
Remove(long nIndex)275 XPropertyEntry* XPropertyList::Remove( long nIndex )
276 {
277     XPropertyEntry* pRetval = 0;
278     const long nObjectCount(maContent.size());
279 
280     if(nIndex < nObjectCount)
281     {
282         if(nIndex + 1 == nObjectCount)
283         {
284             pRetval = maContent.back();
285             maContent.pop_back();
286         }
287         else
288         {
289             pRetval = maContent[nIndex];
290             maContent.erase(maContent.begin() + nIndex);
291         }
292     }
293 
294     return pRetval;
295 }
296 
SetName(const String & rString)297 void XPropertyList::SetName( const String& rString )
298 {
299 	if(rString.Len())
300 	{
301 		maName = rString;
302 	}
303 }
304 
305 //////////////////////////////////////////////////////////////////////////////
306 
CreateSharedXColorList(const String & rPath)307 XColorListSharedPtr XPropertyListFactory::CreateSharedXColorList( const String& rPath )
308 {
309     return XColorListSharedPtr(new XColorList(rPath));
310 }
311 
CreateSharedXLineEndList(const String & rPath)312 XLineEndListSharedPtr XPropertyListFactory::CreateSharedXLineEndList( const String& rPath )
313 {
314     return XLineEndListSharedPtr(new XLineEndList(rPath));
315 }
316 
CreateSharedXDashList(const String & rPath)317 XDashListSharedPtr XPropertyListFactory::CreateSharedXDashList( const String& rPath )
318 {
319     return XDashListSharedPtr(new XDashList(rPath));
320 }
321 
CreateSharedXHatchList(const String & rPath)322 XHatchListSharedPtr XPropertyListFactory::CreateSharedXHatchList( const String& rPath )
323 {
324     return XHatchListSharedPtr(new XHatchList(rPath));
325 }
326 
CreateSharedXGradientList(const String & rPath)327 XGradientListSharedPtr XPropertyListFactory::CreateSharedXGradientList( const String& rPath )
328 {
329     return XGradientListSharedPtr(new XGradientList(rPath));
330 }
331 
CreateSharedXBitmapList(const String & rPath)332 XBitmapListSharedPtr XPropertyListFactory::CreateSharedXBitmapList( const String& rPath )
333 {
334     return XBitmapListSharedPtr(new XBitmapList(rPath));
335 }
336 
337 //////////////////////////////////////////////////////////////////////////////
338 // eof
339