svgnode.cxx (0906e779) svgnode.cxx (a275c134)
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

--- 136 unchanged lines hidden (view full) ---

145 : maType(aType),
146 mrDocument(rDocument),
147 mpParent(pParent),
148 mpAlternativeParent(0),
149 maChildren(),
150 mpId(0),
151 mpClass(0),
152 maXmlSpace(XmlSpace_notset),
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

--- 136 unchanged lines hidden (view full) ---

145 : maType(aType),
146 mrDocument(rDocument),
147 mpParent(pParent),
148 mpAlternativeParent(0),
149 maChildren(),
150 mpId(0),
151 mpClass(0),
152 maXmlSpace(XmlSpace_notset),
153 maDisplay(Display_inline),
153 maCssStyleVector()
154 {
155 OSL_ENSURE(SVGTokenUnknown != maType, "SvgNode with unknown type created (!)");
156
157 if(pParent)
158 {
159 pParent->maChildren.push_back(this);
160 }

--- 65 unchanged lines hidden (view full) ---

226 }
227 else if(aContent.match(aStrPreserve))
228 {
229 setXmlSpace(XmlSpace_preserve);
230 }
231 }
232 break;
233 }
154 maCssStyleVector()
155 {
156 OSL_ENSURE(SVGTokenUnknown != maType, "SvgNode with unknown type created (!)");
157
158 if(pParent)
159 {
160 pParent->maChildren.push_back(this);
161 }

--- 65 unchanged lines hidden (view full) ---

227 }
228 else if(aContent.match(aStrPreserve))
229 {
230 setXmlSpace(XmlSpace_preserve);
231 }
232 }
233 break;
234 }
235 case SVGTokenDisplay:
236 {
237 if(aContent.getLength())
238 {
239 static rtl::OUString aStrInline(rtl::OUString::createFromAscii("inline"));
240 static rtl::OUString aStrBlock(rtl::OUString::createFromAscii("block"));
241 static rtl::OUString aStrList_item(rtl::OUString::createFromAscii("list-item"));
242 static rtl::OUString aStrRun_in(rtl::OUString::createFromAscii("run-in"));
243 static rtl::OUString aStrCompact(rtl::OUString::createFromAscii("compact"));
244 static rtl::OUString aStrMarker(rtl::OUString::createFromAscii("marker"));
245 static rtl::OUString aStrTable(rtl::OUString::createFromAscii("table"));
246 static rtl::OUString aStrInline_table(rtl::OUString::createFromAscii("inline-table"));
247 static rtl::OUString aStrTable_row_group(rtl::OUString::createFromAscii("table-row-group"));
248 static rtl::OUString aStrTable_header_group(rtl::OUString::createFromAscii("table-header-group"));
249 static rtl::OUString aStrTable_footer_group(rtl::OUString::createFromAscii("table-footer-group"));
250 static rtl::OUString aStrTable_row(rtl::OUString::createFromAscii("table-row"));
251 static rtl::OUString aStrTable_column_group(rtl::OUString::createFromAscii("table-column-group"));
252 static rtl::OUString aStrTable_column(rtl::OUString::createFromAscii("table-column"));
253 static rtl::OUString aStrTable_cell(rtl::OUString::createFromAscii("table-cell"));
254 static rtl::OUString aStrTable_caption(rtl::OUString::createFromAscii("table-caption"));
255 static rtl::OUString aStrNone(rtl::OUString::createFromAscii("none"));
256 static rtl::OUString aStrInherit(rtl::OUString::createFromAscii("inherit"));
257
258 if(aContent.match(aStrInline))
259 {
260 setDisplay(Display_inline);
261 }
262 else if(aContent.match(aStrNone))
263 {
264 setDisplay(Display_none);
265 }
266 else if(aContent.match(aStrInherit))
267 {
268 setDisplay(Display_inherit);
269 }
270 else if(aContent.match(aStrBlock))
271 {
272 setDisplay(Display_block);
273 }
274 else if(aContent.match(aStrList_item))
275 {
276 setDisplay(Display_list_item);
277 }
278 else if(aContent.match(aStrRun_in))
279 {
280 setDisplay(Display_run_in);
281 }
282 else if(aContent.match(aStrCompact))
283 {
284 setDisplay(Display_compact);
285 }
286 else if(aContent.match(aStrMarker))
287 {
288 setDisplay(Display_marker);
289 }
290 else if(aContent.match(aStrTable))
291 {
292 setDisplay(Display_table);
293 }
294 else if(aContent.match(aStrInline_table))
295 {
296 setDisplay(Display_inline_table);
297 }
298 else if(aContent.match(aStrTable_row_group))
299 {
300 setDisplay(Display_table_row_group);
301 }
302 else if(aContent.match(aStrTable_header_group))
303 {
304 setDisplay(Display_table_header_group);
305 }
306 else if(aContent.match(aStrTable_footer_group))
307 {
308 setDisplay(Display_table_footer_group);
309 }
310 else if(aContent.match(aStrTable_row))
311 {
312 setDisplay(Display_table_row);
313 }
314 else if(aContent.match(aStrTable_column_group))
315 {
316 setDisplay(Display_table_column_group);
317 }
318 else if(aContent.match(aStrTable_column))
319 {
320 setDisplay(Display_table_column);
321 }
322 else if(aContent.match(aStrTable_cell))
323 {
324 setDisplay(Display_table_cell);
325 }
326 else if(aContent.match(aStrTable_caption))
327 {
328 setDisplay(Display_table_caption);
329 }
330 }
331 break;
332 }
234 default:
235 {
236 break;
237 }
238 }
239 }
240
241 void SvgNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const
242 {
333 default:
334 {
335 break;
336 }
337 }
338 }
339
340 void SvgNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const
341 {
342 if(Display_none == getDisplay())
343 {
344 return;
345 }
346
243 if(!bReferenced)
244 {
245 if(SVGTokenDefs == getType() ||
246 SVGTokenSymbol == getType() ||
247 SVGTokenClipPathNode == getType() ||
248 SVGTokenMask == getType() ||
249 SVGTokenMarker == getType() ||
250 SVGTokenPattern == getType())
251 {
252 // do not decompose defs or symbol nodes (these hold only style-like
253 // objects which may be used by referencing them) except when doing
254 // so controlled referenced
255
256 // also do not decompose ClipPaths and Masks. These should be embedded
257 // in a defs node (which gets not decomposed by itself), but you never
258 // know
259
260 // also not directly used are Markers and Patterns, only indirecty used
261 // by reference
347 if(!bReferenced)
348 {
349 if(SVGTokenDefs == getType() ||
350 SVGTokenSymbol == getType() ||
351 SVGTokenClipPathNode == getType() ||
352 SVGTokenMask == getType() ||
353 SVGTokenMarker == getType() ||
354 SVGTokenPattern == getType())
355 {
356 // do not decompose defs or symbol nodes (these hold only style-like
357 // objects which may be used by referencing them) except when doing
358 // so controlled referenced
359
360 // also do not decompose ClipPaths and Masks. These should be embedded
361 // in a defs node (which gets not decomposed by itself), but you never
362 // know
363
364 // also not directly used are Markers and Patterns, only indirecty used
365 // by reference
366
367 // #121656# also do not decompose nodes which have display="none" set
368 // as property
262 return;
263 }
264 }
265
266 const SvgNodeVector& rChildren = getChildren();
267
268 if(!rChildren.empty())
269 {
270 const sal_uInt32 nCount(rChildren.size());
271
272 for(sal_uInt32 a(0); a < nCount; a++)
273 {
274 SvgNode* pCandidate = rChildren[a];
275
369 return;
370 }
371 }
372
373 const SvgNodeVector& rChildren = getChildren();
374
375 if(!rChildren.empty())
376 {
377 const sal_uInt32 nCount(rChildren.size());
378
379 for(sal_uInt32 a(0); a < nCount; a++)
380 {
381 SvgNode* pCandidate = rChildren[a];
382
276 if(pCandidate)
383 if(pCandidate && Display_none != pCandidate->getDisplay())
277 {
278 drawinglayer::primitive2d::Primitive2DSequence aNewTarget;
279
280 pCandidate->decomposeSvgNode(aNewTarget, bReferenced);
281
282 if(aNewTarget.hasElements())
283 {
284 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget);

--- 152 unchanged lines hidden ---
384 {
385 drawinglayer::primitive2d::Primitive2DSequence aNewTarget;
386
387 pCandidate->decomposeSvgNode(aNewTarget, bReferenced);
388
389 if(aNewTarget.hasElements())
390 {
391 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget);

--- 152 unchanged lines hidden ---