LibreOffice Module slideshow (master) 1
shapeattributelayer.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20
21// must be first
24
25#include <com/sun/star/awt/FontUnderline.hpp>
26#include <com/sun/star/awt/FontWeight.hpp>
27#include <com/sun/star/animations/AnimationAdditiveMode.hpp>
28
29
30using namespace ::com::sun::star;
31
32
33namespace slideshow::internal
34{
42 {
43 if( !haveChild() )
44 return;
45
46 if( mnTransformationState != mpChild->getTransformationState() )
48 if( mnClipState != mpChild->getClipState() )
50 if( mnAlphaState != mpChild->getAlphaState() )
52 if( mnPositionState != mpChild->getPositionState() )
54 if( mnContentState != mpChild->getContentState() )
56 if( mnVisibilityState != mpChild->getVisibilityState() )
58 }
59
66 template< typename T > T ShapeAttributeLayer::calcValue( const T& rCurrValue,
67 bool bThisInstanceValid,
68 bool (ShapeAttributeLayer::*pIsValid)() const,
69 T (ShapeAttributeLayer::*pGetValue)() const ) const
70 {
71 // deviated from the (*shared_ptr).*mpFuncPtr notation
72 // here, since gcc does not seem to parse that as a member
73 // function call anymore.
74 const bool bChildInstanceValueValid( haveChild() && (mpChild.get()->*pIsValid)() );
75
76 if( bThisInstanceValid )
77 {
78 if( bChildInstanceValueValid )
79 {
80 // merge with child value
81 switch( mnAdditiveMode )
82 {
83 default:
84 // FALTHROUGH intended
85 case animations::AnimationAdditiveMode::NONE:
86 // FALTHROUGH intended
87 case animations::AnimationAdditiveMode::BASE:
88 // FALTHROUGH intended
89 case animations::AnimationAdditiveMode::REPLACE:
90 // TODO(F2): reverse-engineer the semantics of these
91 // values
92
93 // currently, treat them the same and replace
94 // the child value by our own
95 return rCurrValue;
96
97 case animations::AnimationAdditiveMode::SUM:
98 return rCurrValue + ((*mpChild).*pGetValue)();
99
100 case animations::AnimationAdditiveMode::MULTIPLY:
101 return rCurrValue * ((*mpChild).*pGetValue)();
102 }
103 }
104 else
105 {
106 // this object is the only one defining
107 // the value, so take it
108 return rCurrValue;
109 }
110 }
111 else
112 {
113 return bChildInstanceValueValid ?
114 ((*mpChild).*pGetValue)() :
115 T(); // pass on child value, regardless
116 // if it's valid or not. If not, it's
117 // a default anyway
118 }
119 }
120
122 mpChild( rChildLayer ),
123
124 maSize(),
125 maPosition(),
126 maClip(),
127
128 maFontFamily(),
129
130 mnRotationAngle(),
131 mnShearXAngle(),
132 mnShearYAngle(),
133 mnAlpha(),
134 mnCharScale(),
135 mnCharWeight(),
136
137 meFillStyle( drawing::FillStyle_NONE ),
138 meLineStyle( drawing::LineStyle_NONE ),
139 meCharPosture( awt::FontSlant_NONE ),
140 mnUnderlineMode(),
141
142 maDimColor(),
143 maFillColor(),
144 maLineColor(),
145 maCharColor(),
146
147 mnTransformationState( rChildLayer ? rChildLayer->getTransformationState() : 0 ),
148 mnClipState( rChildLayer ? rChildLayer->getClipState() : 0),
149 mnAlphaState( rChildLayer ? rChildLayer->getAlphaState() : 0),
150 mnPositionState( rChildLayer ? rChildLayer->getPositionState() : 0 ),
151 mnContentState( rChildLayer ? rChildLayer->getContentState() : 0 ),
152 mnVisibilityState( rChildLayer ? rChildLayer->getVisibilityState() : 0 ),
153
154 mnAdditiveMode( animations::AnimationAdditiveMode::BASE ),
155
156 mbVisibility( false ),
157
158 mbWidthValid( false ),
159 mbHeightValid( false ),
160 mbPosXValid( false ),
161 mbPosYValid( false ),
162 mbClipValid( false ),
163
164 mbFontFamilyValid( false ),
165
166 mbRotationAngleValid( false ),
167 mbShearXAngleValid( false ),
168 mbShearYAngleValid( false ),
169
170 mbAlphaValid( false ),
171
172 mbCharScaleValid( false ),
173
174 mbDimColorValid( false ),
175 mbFillColorValid( false ),
176 mbLineColorValid( false ),
177 mbCharColorValid( false ),
178
179 mbFillStyleValid( false ),
180 mbLineStyleValid( false ),
181 mbCharWeightValid( false ),
182 mbUnderlineModeValid( false ),
183 mbCharPostureValid( false ),
184 mbVisibilityValid( false )
185 {
186 }
187
189 {
190 ENSURE_OR_RETURN_FALSE( rChildLayer,
191 "ShapeAttributeLayer::revokeChildLayer(): Will not remove NULL child" );
192
193 if( !haveChild() )
194 return false; // no children, nothing to revoke.
195
196 if( mpChild == rChildLayer )
197 {
198 // we have it - replace by removed child's sibling.
199 mpChild = rChildLayer->getChildLayer();
200
201 // if we're now the first one, defensively increment _all_
202 // state ids: possibly all underlying attributes have now
203 // changed to default
204 if( !haveChild() )
205 {
206 // TODO(P1): Check whether it pays off to check more
207 // detailed, which attributes really change
209 ++mnClipState;
210 ++mnAlphaState;
214 }
215 }
216 else
217 {
218 // we don't have it - pass on the request
219 if( !mpChild->revokeChildLayer( rChildLayer ) )
220 return false; // nobody has it - bail out
221 }
222
223 // something might have changed - update ids.
225
226 return true;
227 }
228
230 {
231 return mpChild;
232 }
233
235 {
236 if( mnAdditiveMode != nMode )
237 {
238 // TODO(P1): Check whether it pays off to check more
239 // detailed, which attributes really change
240
241 // defensively increment all states - possibly each of them
242 // will change with different additive mode
244 ++mnClipState;
245 ++mnAlphaState;
249 }
250
251 mnAdditiveMode = nMode;
252 }
253
255 {
256 return mbWidthValid || (haveChild() && mpChild->isWidthValid());
257 }
258
260 {
261 return calcValue< double >(
266 }
267
268 void ShapeAttributeLayer::setWidth( const double& rNewWidth )
269 {
270 ENSURE_OR_THROW( std::isfinite(rNewWidth),
271 "ShapeAttributeLayer::setWidth(): Invalid width" );
272
273 maSize.setWidth( rNewWidth );
274 mbWidthValid = true;
276 }
277
279 {
280 return mbHeightValid || ( haveChild() && mpChild->isHeightValid() );
281 }
282
284 {
285 return calcValue< double >(
290 }
291
292 void ShapeAttributeLayer::setHeight( const double& rNewHeight )
293 {
294 ENSURE_OR_THROW( std::isfinite(rNewHeight),
295 "ShapeAttributeLayer::setHeight(): Invalid height" );
296
297 maSize.setHeight( rNewHeight );
298 mbHeightValid = true;
300 }
301
302 void ShapeAttributeLayer::setSize( const ::basegfx::B2DSize& rNewSize )
303 {
304 ENSURE_OR_THROW( std::isfinite(rNewSize.getWidth()) &&
305 std::isfinite(rNewSize.getHeight()),
306 "ShapeAttributeLayer::setSize(): Invalid size" );
307
308 maSize = rNewSize;
311 }
312
314 {
315 return mbPosXValid || ( haveChild() && mpChild->isPosXValid() );
316 }
317
319 {
320 return calcValue< double >(
325 }
326
327 void ShapeAttributeLayer::setPosX( const double& rNewX )
328 {
329 ENSURE_OR_THROW( std::isfinite(rNewX),
330 "ShapeAttributeLayer::setPosX(): Invalid position" );
331
332 maPosition.setX( rNewX );
333 mbPosXValid = true;
335 }
336
338 {
339 return mbPosYValid || ( haveChild() && mpChild->isPosYValid() );
340 }
341
343 {
344 return calcValue< double >(
349 }
350
351 void ShapeAttributeLayer::setPosY( const double& rNewY )
352 {
353 ENSURE_OR_THROW( std::isfinite(rNewY),
354 "ShapeAttributeLayer::setPosY(): Invalid position" );
355
356 maPosition.setY( rNewY );
357 mbPosYValid = true;
359 }
360
361 void ShapeAttributeLayer::setPosition( const ::basegfx::B2DPoint& rNewPos )
362 {
363 maPosition = rNewPos;
364 mbPosXValid = mbPosYValid = true;
366 }
367
369 {
370 return mbRotationAngleValid || ( haveChild() && mpChild->isRotationAngleValid() );
371 }
372
374 {
375 return calcValue< double >(
380 }
381
382 void ShapeAttributeLayer::setRotationAngle( const double& rNewAngle )
383 {
384 ENSURE_OR_THROW( std::isfinite(rNewAngle),
385 "ShapeAttributeLayer::setRotationAngle(): Invalid angle" );
386
387 mnRotationAngle = rNewAngle;
390 }
391
393 {
394 return mbShearXAngleValid || ( haveChild() && mpChild->isShearXAngleValid() );
395 }
396
398 {
399 return calcValue( mnShearXAngle,
403 }
404
405 void ShapeAttributeLayer::setShearXAngle( const double& rNewAngle )
406 {
407 ENSURE_OR_THROW( std::isfinite(rNewAngle),
408 "ShapeAttributeLayer::setShearXAngle(): Invalid angle" );
409
410 mnShearXAngle = rNewAngle;
411 mbShearXAngleValid = true;
413 }
414
416 {
417 return mbShearYAngleValid || ( haveChild() && mpChild->isShearYAngleValid() );
418 }
419
421 {
422 return calcValue( mnShearYAngle,
426 }
427
428 void ShapeAttributeLayer::setShearYAngle( const double& rNewAngle )
429 {
430 ENSURE_OR_THROW( std::isfinite(rNewAngle),
431 "ShapeAttributeLayer::setShearYAngle(): Invalid angle" );
432
433 mnShearYAngle = rNewAngle;
434 mbShearYAngleValid = true;
436 }
437
439 {
440 return mbAlphaValid || ( haveChild() && mpChild->isAlphaValid() );
441 }
442
444 {
445 return calcValue( mnAlpha,
449 }
450
451 void ShapeAttributeLayer::setAlpha( const double& rNewValue )
452 {
453 ENSURE_OR_THROW( std::isfinite(rNewValue),
454 "ShapeAttributeLayer::setAlpha(): Invalid alpha" );
455
456 mnAlpha = rNewValue;
457 mbAlphaValid = true;
458 ++mnAlphaState;
459 }
460
462 {
463 return mbClipValid || ( haveChild() && mpChild->isClipValid() );
464 }
465
467 {
468 // TODO(F1): Implement polygon algebra for additive modes
469 if( mbClipValid )
470 return maClip;
471 else if( haveChild() )
472 return mpChild->getClip();
473 else
474 return ::basegfx::B2DPolyPolygon();
475 }
476
477 void ShapeAttributeLayer::setClip( const ::basegfx::B2DPolyPolygon& rNewClip )
478 {
479 maClip = rNewClip;
480 mbClipValid = true;
481 ++mnClipState;
482 }
483
485 {
486 return mbDimColorValid || ( haveChild() && mpChild->isDimColorValid() );
487 }
488
490 {
491 return calcValue( maDimColor,
495 }
496
498 {
499 maDimColor = nNewColor;
500 mbDimColorValid = true;
502 }
503
505 {
506 return mbFillColorValid || ( haveChild() && mpChild->isFillColorValid() );
507 }
508
510 {
511 return calcValue( maFillColor,
515 }
516
518 {
519 maFillColor = nNewColor;
520 mbFillColorValid = true;
522 }
523
525 {
526 return mbLineColorValid || ( haveChild() && mpChild->isLineColorValid() );
527 }
528
530 {
531 return calcValue( maLineColor,
535 }
536
538 {
539 maLineColor = nNewColor;
540 mbLineColorValid = true;
542 }
543
545 {
546 return mbFillStyleValid || ( haveChild() && mpChild->isFillStyleValid() );
547 }
548
550 {
551 // mnAdditiveMode is ignored, cannot combine strings in
552 // any sensible way
553 if( mbFillStyleValid )
554 return sal::static_int_cast<sal_Int16>(meFillStyle);
555 else if( haveChild() )
556 return sal::static_int_cast<sal_Int16>(mpChild->getFillStyle());
557 else
558 return sal::static_int_cast<sal_Int16>(drawing::FillStyle_SOLID);
559 }
560
561 void ShapeAttributeLayer::setFillStyle( const sal_Int16& rStyle )
562 {
563 // TODO(Q1): Check range here.
564 meFillStyle = static_cast<drawing::FillStyle>(rStyle);
565 mbFillStyleValid = true;
567 }
568
570 {
571 return mbLineStyleValid || ( haveChild() && mpChild->isLineStyleValid() );
572 }
573
575 {
576 // mnAdditiveMode is ignored, cannot combine strings in
577 // any sensible way
578 if( mbLineStyleValid )
579 return sal::static_int_cast<sal_Int16>(meLineStyle);
580 else if( haveChild() )
581 return sal::static_int_cast<sal_Int16>(mpChild->getLineStyle());
582 else
583 return sal::static_int_cast<sal_Int16>(drawing::LineStyle_SOLID);
584 }
585
586 void ShapeAttributeLayer::setLineStyle( const sal_Int16& rStyle )
587 {
588 // TODO(Q1): Check range here.
589 meLineStyle = static_cast<drawing::LineStyle>(rStyle);
590 mbLineStyleValid = true;
592 }
593
595 {
596 return mbVisibilityValid || ( haveChild() && mpChild->isVisibilityValid() );
597 }
598
600 {
601 // mnAdditiveMode is ignored, SMIL spec requires to not combine
602 // bools in any sensible way
604 return mbVisibility;
605 else if( haveChild() )
606 return mpChild->getVisibility();
607 else
608 return true; // default is always visible
609 }
610
611 void ShapeAttributeLayer::setVisibility( const bool& bVisible )
612 {
614 mbVisibilityValid = true;
616 }
617
619 {
620 return mbCharColorValid || ( haveChild() && mpChild->isCharColorValid() );
621 }
622
624 {
625 return calcValue( maCharColor,
629 }
630
632 {
633 maCharColor = nNewColor;
634 mbCharColorValid = true;
636 }
637
639 {
640 return mbCharWeightValid || ( haveChild() && mpChild->isCharWeightValid() );
641 }
642
644 {
645 // mnAdditiveMode is ignored, cannot combine strings in
646 // any sensible way
648 return mnCharWeight;
649 else if( haveChild() )
650 return mpChild->getCharWeight();
651 else
652 return awt::FontWeight::NORMAL;
653 }
654
655 void ShapeAttributeLayer::setCharWeight( const double& rValue )
656 {
657 // TODO(Q1): Check range here.
658 mnCharWeight = rValue;
659 mbCharWeightValid = true;
661 }
662
664 {
665 return mbUnderlineModeValid || ( haveChild() && mpChild->isUnderlineModeValid() );
666 }
667
669 {
670 // mnAdditiveMode is ignored, SMIL spec requires to not combine
671 // bools in any sensible way
673 return mnUnderlineMode;
674 else if( haveChild() )
675 return mpChild->getUnderlineMode();
676 else
677 return awt::FontUnderline::NONE; // default is no underline
678 }
679
680 void ShapeAttributeLayer::setUnderlineMode( const sal_Int16& rUnderlineMode )
681 {
682 // TODO(Q1): Check range here.
683 mnUnderlineMode = rUnderlineMode;
686 }
687
689 {
690 return mbFontFamilyValid || ( haveChild() && mpChild->isFontFamilyValid() );
691 }
692
694 {
695 // mnAdditiveMode is ignored, cannot combine strings in
696 // any sensible way
698 return maFontFamily;
699 else if( haveChild() )
700 return mpChild->getFontFamily();
701 else
702 return OUString();
703 }
704
705 void ShapeAttributeLayer::setFontFamily( const OUString& rName )
706 {
707 maFontFamily = rName;
708 mbFontFamilyValid = true;
710 }
711
713 {
714 return mbCharPostureValid || ( haveChild() && mpChild->isCharPostureValid() );
715 }
716
718 {
719 // mnAdditiveMode is ignored, cannot combine strings in
720 // any sensible way
722 return sal::static_int_cast<sal_Int16>(meCharPosture);
723 else if( haveChild() )
724 return sal::static_int_cast<sal_Int16>(mpChild->getCharPosture());
725 else
726 return sal::static_int_cast<sal_Int16>(awt::FontSlant_NONE);
727 }
728
729 void ShapeAttributeLayer::setCharPosture( const sal_Int16& rStyle )
730 {
731 // TODO(Q1): Check range here.
732 meCharPosture = static_cast<awt::FontSlant>(rStyle);
733 mbCharPostureValid = true;
735 }
736
738 {
739 return mbCharScaleValid || ( haveChild() && mpChild->isCharScaleValid() );
740 }
741
743 {
744 return calcValue( mnCharScale,
748 }
749
750 void ShapeAttributeLayer::setCharScale( const double& rNewHeight )
751 {
752 ENSURE_OR_THROW( std::isfinite(rNewHeight),
753 "ShapeAttributeLayer::setCharScale(): Invalid height" );
754
755 mnCharScale = rNewHeight;
756 mbCharScaleValid = true;
758 }
759
761 {
762 return haveChild() ?
763 ::std::max( mnTransformationState,
764 mpChild->getTransformationState() ) :
766 }
767
769 {
770 return haveChild() ?
771 ::std::max( mnClipState,
772 mpChild->getClipState() ) :
774 }
775
777 {
778 return haveChild() ?
779 ::std::max( mnAlphaState,
780 mpChild->getAlphaState() ) :
782 }
783
785 {
786 return haveChild() ?
787 ::std::max( mnPositionState,
788 mpChild->getPositionState() ) :
790 }
791
793 {
794 return haveChild() ?
795 ::std::max( mnContentState,
796 mpChild->getContentState() ) :
798 }
799
801 {
802 return haveChild() ?
803 ::std::max( mnVisibilityState,
804 mpChild->getVisibilityState() ) :
806 }
807
808}
809
810/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
geometry::RealPoint2D maPosition
geometry::RealSize2D maSize
void setHeight(TYPE const &rHeight)
TYPE getWidth() const
void setWidth(TYPE const &rWidth)
TYPE getHeight() const
TYPE getX() const
void setY(TYPE fY)
TYPE getY() const
void setX(TYPE fX)
RGB color space class.
Definition: rgbcolor.hxx:35
Encapsulates all modifiable attributes of a shape.
void setCharPosture(const sal_Int16 &rStyle)
Set the italic style globally for the whole shape.
bool revokeChildLayer(const ShapeAttributeLayerSharedPtr &rChildLayer)
Revoke the given layer.
void setWidth(const double &rNewWidth)
Set the new width of the shape.
OUString getFontFamily() const
Get the current text font family for the whole shape.
double getShearYAngle() const
Query the current shear angle at the y axis of the shape.
void setVisibility(const bool &bVisible)
Set the shape visibility.
void setShearYAngle(const double &rNewAngle)
Set the new shear angle at the y axis of the shape.
RGBColor getFillColor() const
Get the fill color for the whole shape.
RGBColor getDimColor() const
Get the dim color for the whole shape.
bool isUnderlineModeValid() const
Query whether the underline mode attribute is valid.
bool isShearXAngleValid() const
Query whether the shear x angle attribute is valid.
void setFontFamily(const OUString &rName)
Set the text font family name globally for the whole shape.
void setPosX(const double &rNewX)
Set the new x position of the shape.
T calcValue(const T &rCurrValue, bool bThisInstanceValid, bool(ShapeAttributeLayer::*pIsValid)() const, T(ShapeAttributeLayer::*pGetValue)() const) const
Calc attribute value.
void setLineStyle(const sal_Int16 &rStyle)
Set line style for the whole shape.
void setSize(const ::basegfx::B2DSize &rNewSize)
Set the new size of the shape.
bool isShearYAngleValid() const
Query whether the shear y angle attribute is valid.
double getCharWeight() const
Get the current char weight value for the whole shape.
void setCharWeight(const double &rStyle)
Set the char weight globally for the whole shape.
void setAlpha(const double &rNewValue)
Set the new alpha value of the shape.
bool isCharPostureValid() const
Query whether the italic mode attribute is valid.
void setPosition(const ::basegfx::B2DPoint &rNewPos)
Set the new position of the shape.
void setFillStyle(const sal_Int16 &rStyle)
Changes polygon fillings.
bool isFillColorValid() const
Query whether the fill color attribute is valid.
void setUnderlineMode(const sal_Int16 &bUnderline)
Set the underline status globally for the whole shape.
void setHeight(const double &rNewHeight)
Set the new height of the shape.
bool isLineColorValid() const
Query whether the line color attribute is valid.
bool isFontFamilyValid() const
Query whether the font family attribute is valid.
bool isVisibilityValid() const
Query whether the visibility state attribute is valid.
const ShapeAttributeLayerSharedPtr & getChildLayer() const
Query the child layer of this object.
bool isRotationAngleValid() const
Query whether the rotation angle attribute is valid.
RGBColor getCharColor() const
Get the text color for the whole shape.
double getPosY() const
Query the current y position of the shape.
void setRotationAngle(const double &rNewAngle)
Set the new rotation angle of the shape.
bool isCharColorValid() const
Query whether the char color attribute is valid.
sal_Int16 getLineStyle() const
Get the current line mode for line drawing.
void setCharColor(const RGBColor &nNewColor)
Set the text color globally for the whole shape.
bool isCharScaleValid() const
Query whether the char scaling attribute is valid.
bool isPosXValid() const
Query whether the x position attribute is valid.
bool isDimColorValid() const
Query whether the dim color attribute is valid.
double getShearXAngle() const
Query the current shear angle at the x axis of the shape.
void setAdditiveMode(sal_Int16 nMode)
Set the additive mode for possible child attributes.
ShapeAttributeLayer(const ShapeAttributeLayerSharedPtr &rChildLayer)
Create a ShapeAttributeLayer instance, with all attributes set to default.
sal_Int16 getFillStyle() const
Get the current fill mode for polygon fillings.
double getAlpha() const
Query the current alpha value of the shape.
bool isWidthValid() const
Query whether the width attribute is valid.
void setFillColor(const RGBColor &nNewColor)
Set the fill color globally for the whole shape.
void setCharScale(const double &rNewScale)
Set the new char scale globally for the shape.
bool isPosYValid() const
Query whether the y position attribute is valid.
bool isAlphaValid() const
Query whether the alpha attribute is valid.
double getRotationAngle() const
Query the current rotation angle of the shape.
void setDimColor(const RGBColor &nNewColor)
Set the dim color globally for the whole shape.
bool isLineStyleValid() const
Query whether the line mode attribute is valid.
bool isClipValid() const
Query whether the clip attribute is valid.
void setClip(const ::basegfx::B2DPolyPolygon &rNewClip)
Set the new clip polygon of the shape.
double getHeight() const
Query the current height of the shape.
double getWidth() const
Query the current width of the shape.
sal_Int16 getUnderlineMode() const
Get the current text underline status for the whole shape.
bool isFillStyleValid() const
Query whether the fill mode attribute is valid.
sal_Int16 getCharPosture() const
Get the current text italic style for the whole shape.
::basegfx::B2DPolyPolygon getClip() const
Query the current clip polygon of the shape.
bool isCharWeightValid() const
Query whether the char weight attribute is valid.
bool getVisibility() const
Get the current shape visibility.
double getPosX() const
Query the current x position of the shape.
void setShearXAngle(const double &rNewAngle)
Set the new shear angle at the x axis of the shape.
double getCharScale() const
Query the current char scaling attribute globally for the shape.
void setLineColor(const RGBColor &nNewColor)
Set the line color globally for the whole shape.
RGBColor getLineColor() const
Get the line color for the whole shape.
bool isHeightValid() const
Query whether the height attribute is valid.
void setPosY(const double &rNewY)
Set the new y position of the shape.
::std::size_t StateId
Abstract, numerically encoded state ID.
#define ENSURE_OR_RETURN_FALSE(c, m)
#define ENSURE_OR_THROW(c, m)
::std::shared_ptr< ShapeAttributeLayer > ShapeAttributeLayerSharedPtr
uno::Sequence< double > maFillColor
basegfx::B2DPolyPolygon maClip
Current clip polygon in user coordinates.
Definition: slideview.cxx:385
BASE
bool bVisible