1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx" 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <svx/sdr/attribute/sdrtextattribute.hxx> 27*b1cdbd2cSJim Jagielski #include <svx/sdr/attribute/sdrformtextattribute.hxx> 28*b1cdbd2cSJim Jagielski #include <svx/svdotext.hxx> 29*b1cdbd2cSJim Jagielski #include <editeng/outlobj.hxx> 30*b1cdbd2cSJim Jagielski #include <editeng/editobj.hxx> 31*b1cdbd2cSJim Jagielski #include <editeng/flditem.hxx> 32*b1cdbd2cSJim Jagielski #include <svx/sdr/properties/properties.hxx> 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////// 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski namespace drawinglayer 37*b1cdbd2cSJim Jagielski { 38*b1cdbd2cSJim Jagielski namespace attribute 39*b1cdbd2cSJim Jagielski { 40*b1cdbd2cSJim Jagielski class ImpSdrTextAttribute 41*b1cdbd2cSJim Jagielski { 42*b1cdbd2cSJim Jagielski public: 43*b1cdbd2cSJim Jagielski // refcounter 44*b1cdbd2cSJim Jagielski sal_uInt32 mnRefCount; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski // all-text attributes. The SdrText itself and a copy 47*b1cdbd2cSJim Jagielski // of te OPO 48*b1cdbd2cSJim Jagielski const SdrText* mpSdrText; 49*b1cdbd2cSJim Jagielski const OutlinerParaObject* mpOutlinerParaObject; 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski // Set when it's a FormText; contains all FormText attributes 52*b1cdbd2cSJim Jagielski SdrFormTextAttribute maSdrFormTextAttribute; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski // text distances 55*b1cdbd2cSJim Jagielski sal_Int32 maTextLeftDistance; 56*b1cdbd2cSJim Jagielski sal_Int32 maTextUpperDistance; 57*b1cdbd2cSJim Jagielski sal_Int32 maTextRightDistance; 58*b1cdbd2cSJim Jagielski sal_Int32 maTextLowerDistance; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski // #i101556# use versioning from text attributes to detect changes 61*b1cdbd2cSJim Jagielski sal_uInt32 maPropertiesVersion; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski // text alignments 64*b1cdbd2cSJim Jagielski SdrTextHorzAdjust maSdrTextHorzAdjust; 65*b1cdbd2cSJim Jagielski SdrTextVertAdjust maSdrTextVertAdjust; 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski // bitfield 68*b1cdbd2cSJim Jagielski unsigned mbContour : 1; 69*b1cdbd2cSJim Jagielski unsigned mbFitToSize : 1; 70*b1cdbd2cSJim Jagielski unsigned mbHideContour : 1; 71*b1cdbd2cSJim Jagielski unsigned mbBlink : 1; 72*b1cdbd2cSJim Jagielski unsigned mbScroll : 1; 73*b1cdbd2cSJim Jagielski unsigned mbInEditMode : 1; 74*b1cdbd2cSJim Jagielski unsigned mbFixedCellHeight : 1; 75*b1cdbd2cSJim Jagielski unsigned mbWrongSpell : 1; 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski public: ImpSdrTextAttribute(const SdrText * pSdrText,const OutlinerParaObject & rOutlinerParaObject,XFormTextStyle eFormTextStyle,sal_Int32 aTextLeftDistance,sal_Int32 aTextUpperDistance,sal_Int32 aTextRightDistance,sal_Int32 aTextLowerDistance,SdrTextHorzAdjust aSdrTextHorzAdjust,SdrTextVertAdjust aSdrTextVertAdjust,bool bContour,bool bFitToSize,bool bHideContour,bool bBlink,bool bScroll,bool bInEditMode,bool bFixedCellHeight,bool bWrongSpell)78*b1cdbd2cSJim Jagielski ImpSdrTextAttribute( 79*b1cdbd2cSJim Jagielski const SdrText* pSdrText, 80*b1cdbd2cSJim Jagielski const OutlinerParaObject& rOutlinerParaObject, 81*b1cdbd2cSJim Jagielski XFormTextStyle eFormTextStyle, 82*b1cdbd2cSJim Jagielski sal_Int32 aTextLeftDistance, 83*b1cdbd2cSJim Jagielski sal_Int32 aTextUpperDistance, 84*b1cdbd2cSJim Jagielski sal_Int32 aTextRightDistance, 85*b1cdbd2cSJim Jagielski sal_Int32 aTextLowerDistance, 86*b1cdbd2cSJim Jagielski SdrTextHorzAdjust aSdrTextHorzAdjust, 87*b1cdbd2cSJim Jagielski SdrTextVertAdjust aSdrTextVertAdjust, 88*b1cdbd2cSJim Jagielski bool bContour, 89*b1cdbd2cSJim Jagielski bool bFitToSize, 90*b1cdbd2cSJim Jagielski bool bHideContour, 91*b1cdbd2cSJim Jagielski bool bBlink, 92*b1cdbd2cSJim Jagielski bool bScroll, 93*b1cdbd2cSJim Jagielski bool bInEditMode, 94*b1cdbd2cSJim Jagielski bool bFixedCellHeight, 95*b1cdbd2cSJim Jagielski bool bWrongSpell) 96*b1cdbd2cSJim Jagielski : mnRefCount(0), 97*b1cdbd2cSJim Jagielski mpSdrText(pSdrText), 98*b1cdbd2cSJim Jagielski mpOutlinerParaObject(new OutlinerParaObject(rOutlinerParaObject)), 99*b1cdbd2cSJim Jagielski maSdrFormTextAttribute(), 100*b1cdbd2cSJim Jagielski maTextLeftDistance(aTextLeftDistance), 101*b1cdbd2cSJim Jagielski maTextUpperDistance(aTextUpperDistance), 102*b1cdbd2cSJim Jagielski maTextRightDistance(aTextRightDistance), 103*b1cdbd2cSJim Jagielski maTextLowerDistance(aTextLowerDistance), 104*b1cdbd2cSJim Jagielski maPropertiesVersion(0), 105*b1cdbd2cSJim Jagielski maSdrTextHorzAdjust(aSdrTextHorzAdjust), 106*b1cdbd2cSJim Jagielski maSdrTextVertAdjust(aSdrTextVertAdjust), 107*b1cdbd2cSJim Jagielski mbContour(bContour), 108*b1cdbd2cSJim Jagielski mbFitToSize(bFitToSize), 109*b1cdbd2cSJim Jagielski mbHideContour(bHideContour), 110*b1cdbd2cSJim Jagielski mbBlink(bBlink), 111*b1cdbd2cSJim Jagielski mbScroll(bScroll), 112*b1cdbd2cSJim Jagielski mbInEditMode(bInEditMode), 113*b1cdbd2cSJim Jagielski mbFixedCellHeight(bFixedCellHeight), 114*b1cdbd2cSJim Jagielski mbWrongSpell(bWrongSpell) 115*b1cdbd2cSJim Jagielski { 116*b1cdbd2cSJim Jagielski if(pSdrText) 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski if(XFT_NONE != eFormTextStyle) 119*b1cdbd2cSJim Jagielski { 120*b1cdbd2cSJim Jagielski // text on path. Create FormText attribute 121*b1cdbd2cSJim Jagielski const SfxItemSet& rSet = pSdrText->GetItemSet(); 122*b1cdbd2cSJim Jagielski maSdrFormTextAttribute = SdrFormTextAttribute(rSet); 123*b1cdbd2cSJim Jagielski } 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski // #i101556# init with version number to detect changes of single text 126*b1cdbd2cSJim Jagielski // attribute and/or style sheets in primitive data without having to 127*b1cdbd2cSJim Jagielski // copy that data locally (which would be better from principle) 128*b1cdbd2cSJim Jagielski maPropertiesVersion = pSdrText->GetObject().GetProperties().getVersion(); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski ImpSdrTextAttribute()132*b1cdbd2cSJim Jagielski ImpSdrTextAttribute() 133*b1cdbd2cSJim Jagielski : mnRefCount(0), 134*b1cdbd2cSJim Jagielski mpSdrText(0), 135*b1cdbd2cSJim Jagielski mpOutlinerParaObject(0), 136*b1cdbd2cSJim Jagielski maSdrFormTextAttribute(), 137*b1cdbd2cSJim Jagielski maTextLeftDistance(0), 138*b1cdbd2cSJim Jagielski maTextUpperDistance(0), 139*b1cdbd2cSJim Jagielski maTextRightDistance(0), 140*b1cdbd2cSJim Jagielski maTextLowerDistance(0), 141*b1cdbd2cSJim Jagielski maPropertiesVersion(0), 142*b1cdbd2cSJim Jagielski maSdrTextHorzAdjust(SDRTEXTHORZADJUST_LEFT), 143*b1cdbd2cSJim Jagielski maSdrTextVertAdjust(SDRTEXTVERTADJUST_TOP), 144*b1cdbd2cSJim Jagielski mbContour(false), 145*b1cdbd2cSJim Jagielski mbFitToSize(false), 146*b1cdbd2cSJim Jagielski mbHideContour(false), 147*b1cdbd2cSJim Jagielski mbBlink(false), 148*b1cdbd2cSJim Jagielski mbScroll(false), 149*b1cdbd2cSJim Jagielski mbInEditMode(false), 150*b1cdbd2cSJim Jagielski mbFixedCellHeight(false), 151*b1cdbd2cSJim Jagielski mbWrongSpell(false) 152*b1cdbd2cSJim Jagielski { 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski ~ImpSdrTextAttribute()155*b1cdbd2cSJim Jagielski ~ImpSdrTextAttribute() 156*b1cdbd2cSJim Jagielski { 157*b1cdbd2cSJim Jagielski if(mpOutlinerParaObject) 158*b1cdbd2cSJim Jagielski { 159*b1cdbd2cSJim Jagielski delete mpOutlinerParaObject; 160*b1cdbd2cSJim Jagielski } 161*b1cdbd2cSJim Jagielski } 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski // data read access getSdrText() const164*b1cdbd2cSJim Jagielski const SdrText& getSdrText() const 165*b1cdbd2cSJim Jagielski { 166*b1cdbd2cSJim Jagielski OSL_ENSURE(mpSdrText, "Access to text of default version of ImpSdrTextAttribute (!)"); 167*b1cdbd2cSJim Jagielski return *mpSdrText; 168*b1cdbd2cSJim Jagielski } getOutlinerParaObject() const169*b1cdbd2cSJim Jagielski const OutlinerParaObject& getOutlinerParaObject() const 170*b1cdbd2cSJim Jagielski { 171*b1cdbd2cSJim Jagielski OSL_ENSURE(mpOutlinerParaObject, "Access to OutlinerParaObject of default version of ImpSdrTextAttribute (!)"); 172*b1cdbd2cSJim Jagielski return *mpOutlinerParaObject; 173*b1cdbd2cSJim Jagielski } isContour() const174*b1cdbd2cSJim Jagielski bool isContour() const { return mbContour; } isFitToSize() const175*b1cdbd2cSJim Jagielski bool isFitToSize() const { return mbFitToSize; } isHideContour() const176*b1cdbd2cSJim Jagielski bool isHideContour() const { return mbHideContour; } isBlink() const177*b1cdbd2cSJim Jagielski bool isBlink() const { return mbBlink; } isScroll() const178*b1cdbd2cSJim Jagielski bool isScroll() const { return mbScroll; } isInEditMode() const179*b1cdbd2cSJim Jagielski bool isInEditMode() const { return mbInEditMode; } isFixedCellHeight() const180*b1cdbd2cSJim Jagielski bool isFixedCellHeight() const { return mbFixedCellHeight; } isWrongSpell() const181*b1cdbd2cSJim Jagielski bool isWrongSpell() const { return mbWrongSpell; } getSdrFormTextAttribute() const182*b1cdbd2cSJim Jagielski const SdrFormTextAttribute& getSdrFormTextAttribute() const { return maSdrFormTextAttribute; } getTextLeftDistance() const183*b1cdbd2cSJim Jagielski sal_Int32 getTextLeftDistance() const { return maTextLeftDistance; } getTextUpperDistance() const184*b1cdbd2cSJim Jagielski sal_Int32 getTextUpperDistance() const { return maTextUpperDistance; } getTextRightDistance() const185*b1cdbd2cSJim Jagielski sal_Int32 getTextRightDistance() const { return maTextRightDistance; } getTextLowerDistance() const186*b1cdbd2cSJim Jagielski sal_Int32 getTextLowerDistance() const { return maTextLowerDistance; } getPropertiesVersion() const187*b1cdbd2cSJim Jagielski sal_uInt32 getPropertiesVersion() const { return maPropertiesVersion; } getSdrTextHorzAdjust() const188*b1cdbd2cSJim Jagielski SdrTextHorzAdjust getSdrTextHorzAdjust() const { return maSdrTextHorzAdjust; } getSdrTextVertAdjust() const189*b1cdbd2cSJim Jagielski SdrTextVertAdjust getSdrTextVertAdjust() const { return maSdrTextVertAdjust; } 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski // compare operator operator ==(const ImpSdrTextAttribute & rCandidate) const192*b1cdbd2cSJim Jagielski bool operator==(const ImpSdrTextAttribute& rCandidate) const 193*b1cdbd2cSJim Jagielski { 194*b1cdbd2cSJim Jagielski if(mpOutlinerParaObject != rCandidate.mpOutlinerParaObject) 195*b1cdbd2cSJim Jagielski { 196*b1cdbd2cSJim Jagielski if(mpOutlinerParaObject && rCandidate.mpOutlinerParaObject) 197*b1cdbd2cSJim Jagielski { 198*b1cdbd2cSJim Jagielski // compares OPO and it's contents, but traditionally not the RedLining 199*b1cdbd2cSJim Jagielski // which is not seen as model, but as temporary information 200*b1cdbd2cSJim Jagielski if(!(getOutlinerParaObject() == rCandidate.getOutlinerParaObject())) 201*b1cdbd2cSJim Jagielski { 202*b1cdbd2cSJim Jagielski return false; 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski // #i102062# for primitive visualisation, the WrongList (SpellChecking) 206*b1cdbd2cSJim Jagielski // is important, too, so use isWrongListEqual since there is no WrongList 207*b1cdbd2cSJim Jagielski // comparison in the regular OutlinerParaObject compare (since it's 208*b1cdbd2cSJim Jagielski // not-persistent data) 209*b1cdbd2cSJim Jagielski if(!(getOutlinerParaObject().isWrongListEqual(rCandidate.getOutlinerParaObject()))) 210*b1cdbd2cSJim Jagielski { 211*b1cdbd2cSJim Jagielski return false; 212*b1cdbd2cSJim Jagielski } 213*b1cdbd2cSJim Jagielski } 214*b1cdbd2cSJim Jagielski else 215*b1cdbd2cSJim Jagielski { 216*b1cdbd2cSJim Jagielski // only one is zero; not equal 217*b1cdbd2cSJim Jagielski return false; 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski } 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski return ( 222*b1cdbd2cSJim Jagielski getSdrFormTextAttribute() == rCandidate.getSdrFormTextAttribute() 223*b1cdbd2cSJim Jagielski && getTextLeftDistance() == rCandidate.getTextLeftDistance() 224*b1cdbd2cSJim Jagielski && getTextUpperDistance() == rCandidate.getTextUpperDistance() 225*b1cdbd2cSJim Jagielski && getTextRightDistance() == rCandidate.getTextRightDistance() 226*b1cdbd2cSJim Jagielski && getTextLowerDistance() == rCandidate.getTextLowerDistance() 227*b1cdbd2cSJim Jagielski && getPropertiesVersion() == rCandidate.getPropertiesVersion() 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski && getSdrTextHorzAdjust() == rCandidate.getSdrTextHorzAdjust() 230*b1cdbd2cSJim Jagielski && getSdrTextVertAdjust() == rCandidate.getSdrTextVertAdjust() 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski && isContour() == rCandidate.isContour() 233*b1cdbd2cSJim Jagielski && isFitToSize() == rCandidate.isFitToSize() 234*b1cdbd2cSJim Jagielski && isHideContour() == rCandidate.isHideContour() 235*b1cdbd2cSJim Jagielski && isBlink() == rCandidate.isBlink() 236*b1cdbd2cSJim Jagielski && isScroll() == rCandidate.isScroll() 237*b1cdbd2cSJim Jagielski && isInEditMode() == rCandidate.isInEditMode() 238*b1cdbd2cSJim Jagielski && isFixedCellHeight() == rCandidate.isFixedCellHeight() 239*b1cdbd2cSJim Jagielski && isWrongSpell() == rCandidate.isWrongSpell()); 240*b1cdbd2cSJim Jagielski } 241*b1cdbd2cSJim Jagielski get_global_default()242*b1cdbd2cSJim Jagielski static ImpSdrTextAttribute* get_global_default() 243*b1cdbd2cSJim Jagielski { 244*b1cdbd2cSJim Jagielski static ImpSdrTextAttribute* pDefault = 0; 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski if(!pDefault) 247*b1cdbd2cSJim Jagielski { 248*b1cdbd2cSJim Jagielski // use default constructor 249*b1cdbd2cSJim Jagielski pDefault = new ImpSdrTextAttribute(); 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski // never delete; start with RefCount 1, not 0 252*b1cdbd2cSJim Jagielski pDefault->mnRefCount++; 253*b1cdbd2cSJim Jagielski } 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski return pDefault; 256*b1cdbd2cSJim Jagielski } 257*b1cdbd2cSJim Jagielski }; 258*b1cdbd2cSJim Jagielski SdrTextAttribute(const SdrText & rSdrText,const OutlinerParaObject & rOutlinerParaObject,XFormTextStyle eFormTextStyle,sal_Int32 aTextLeftDistance,sal_Int32 aTextUpperDistance,sal_Int32 aTextRightDistance,sal_Int32 aTextLowerDistance,SdrTextHorzAdjust aSdrTextHorzAdjust,SdrTextVertAdjust aSdrTextVertAdjust,bool bContour,bool bFitToSize,bool bHideContour,bool bBlink,bool bScroll,bool bInEditMode,bool bFixedCellHeight,bool bWrongSpell)259*b1cdbd2cSJim Jagielski SdrTextAttribute::SdrTextAttribute( 260*b1cdbd2cSJim Jagielski const SdrText& rSdrText, 261*b1cdbd2cSJim Jagielski const OutlinerParaObject& rOutlinerParaObject, 262*b1cdbd2cSJim Jagielski XFormTextStyle eFormTextStyle, 263*b1cdbd2cSJim Jagielski sal_Int32 aTextLeftDistance, 264*b1cdbd2cSJim Jagielski sal_Int32 aTextUpperDistance, 265*b1cdbd2cSJim Jagielski sal_Int32 aTextRightDistance, 266*b1cdbd2cSJim Jagielski sal_Int32 aTextLowerDistance, 267*b1cdbd2cSJim Jagielski SdrTextHorzAdjust aSdrTextHorzAdjust, 268*b1cdbd2cSJim Jagielski SdrTextVertAdjust aSdrTextVertAdjust, 269*b1cdbd2cSJim Jagielski bool bContour, 270*b1cdbd2cSJim Jagielski bool bFitToSize, 271*b1cdbd2cSJim Jagielski bool bHideContour, 272*b1cdbd2cSJim Jagielski bool bBlink, 273*b1cdbd2cSJim Jagielski bool bScroll, 274*b1cdbd2cSJim Jagielski bool bInEditMode, 275*b1cdbd2cSJim Jagielski bool bFixedCellHeight, 276*b1cdbd2cSJim Jagielski bool bWrongSpell) 277*b1cdbd2cSJim Jagielski : mpSdrTextAttribute(new ImpSdrTextAttribute( 278*b1cdbd2cSJim Jagielski &rSdrText, rOutlinerParaObject, eFormTextStyle, aTextLeftDistance, aTextUpperDistance, 279*b1cdbd2cSJim Jagielski aTextRightDistance, aTextLowerDistance, aSdrTextHorzAdjust, aSdrTextVertAdjust, bContour, 280*b1cdbd2cSJim Jagielski bFitToSize, bHideContour, bBlink, bScroll, bInEditMode, bFixedCellHeight, bWrongSpell)) 281*b1cdbd2cSJim Jagielski { 282*b1cdbd2cSJim Jagielski } 283*b1cdbd2cSJim Jagielski SdrTextAttribute()284*b1cdbd2cSJim Jagielski SdrTextAttribute::SdrTextAttribute() 285*b1cdbd2cSJim Jagielski : mpSdrTextAttribute(ImpSdrTextAttribute::get_global_default()) 286*b1cdbd2cSJim Jagielski { 287*b1cdbd2cSJim Jagielski mpSdrTextAttribute->mnRefCount++; 288*b1cdbd2cSJim Jagielski } 289*b1cdbd2cSJim Jagielski SdrTextAttribute(const SdrTextAttribute & rCandidate)290*b1cdbd2cSJim Jagielski SdrTextAttribute::SdrTextAttribute(const SdrTextAttribute& rCandidate) 291*b1cdbd2cSJim Jagielski : mpSdrTextAttribute(rCandidate.mpSdrTextAttribute) 292*b1cdbd2cSJim Jagielski { 293*b1cdbd2cSJim Jagielski mpSdrTextAttribute->mnRefCount++; 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski ~SdrTextAttribute()296*b1cdbd2cSJim Jagielski SdrTextAttribute::~SdrTextAttribute() 297*b1cdbd2cSJim Jagielski { 298*b1cdbd2cSJim Jagielski if(mpSdrTextAttribute->mnRefCount) 299*b1cdbd2cSJim Jagielski { 300*b1cdbd2cSJim Jagielski mpSdrTextAttribute->mnRefCount--; 301*b1cdbd2cSJim Jagielski } 302*b1cdbd2cSJim Jagielski else 303*b1cdbd2cSJim Jagielski { 304*b1cdbd2cSJim Jagielski delete mpSdrTextAttribute; 305*b1cdbd2cSJim Jagielski } 306*b1cdbd2cSJim Jagielski } 307*b1cdbd2cSJim Jagielski isDefault() const308*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isDefault() const 309*b1cdbd2cSJim Jagielski { 310*b1cdbd2cSJim Jagielski return mpSdrTextAttribute == ImpSdrTextAttribute::get_global_default(); 311*b1cdbd2cSJim Jagielski } 312*b1cdbd2cSJim Jagielski operator =(const SdrTextAttribute & rCandidate)313*b1cdbd2cSJim Jagielski SdrTextAttribute& SdrTextAttribute::operator=(const SdrTextAttribute& rCandidate) 314*b1cdbd2cSJim Jagielski { 315*b1cdbd2cSJim Jagielski if(rCandidate.mpSdrTextAttribute != mpSdrTextAttribute) 316*b1cdbd2cSJim Jagielski { 317*b1cdbd2cSJim Jagielski if(mpSdrTextAttribute->mnRefCount) 318*b1cdbd2cSJim Jagielski { 319*b1cdbd2cSJim Jagielski mpSdrTextAttribute->mnRefCount--; 320*b1cdbd2cSJim Jagielski } 321*b1cdbd2cSJim Jagielski else 322*b1cdbd2cSJim Jagielski { 323*b1cdbd2cSJim Jagielski delete mpSdrTextAttribute; 324*b1cdbd2cSJim Jagielski } 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski mpSdrTextAttribute = rCandidate.mpSdrTextAttribute; 327*b1cdbd2cSJim Jagielski mpSdrTextAttribute->mnRefCount++; 328*b1cdbd2cSJim Jagielski } 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski return *this; 331*b1cdbd2cSJim Jagielski } 332*b1cdbd2cSJim Jagielski operator ==(const SdrTextAttribute & rCandidate) const333*b1cdbd2cSJim Jagielski bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const 334*b1cdbd2cSJim Jagielski { 335*b1cdbd2cSJim Jagielski if(rCandidate.mpSdrTextAttribute == mpSdrTextAttribute) 336*b1cdbd2cSJim Jagielski { 337*b1cdbd2cSJim Jagielski return true; 338*b1cdbd2cSJim Jagielski } 339*b1cdbd2cSJim Jagielski 340*b1cdbd2cSJim Jagielski if(rCandidate.isDefault() != isDefault()) 341*b1cdbd2cSJim Jagielski { 342*b1cdbd2cSJim Jagielski return false; 343*b1cdbd2cSJim Jagielski } 344*b1cdbd2cSJim Jagielski 345*b1cdbd2cSJim Jagielski return (*rCandidate.mpSdrTextAttribute == *mpSdrTextAttribute); 346*b1cdbd2cSJim Jagielski } 347*b1cdbd2cSJim Jagielski getSdrText() const348*b1cdbd2cSJim Jagielski const SdrText& SdrTextAttribute::getSdrText() const 349*b1cdbd2cSJim Jagielski { 350*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getSdrText(); 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski getOutlinerParaObject() const353*b1cdbd2cSJim Jagielski const OutlinerParaObject& SdrTextAttribute::getOutlinerParaObject() const 354*b1cdbd2cSJim Jagielski { 355*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getOutlinerParaObject(); 356*b1cdbd2cSJim Jagielski } 357*b1cdbd2cSJim Jagielski isContour() const358*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isContour() const 359*b1cdbd2cSJim Jagielski { 360*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isContour(); 361*b1cdbd2cSJim Jagielski } 362*b1cdbd2cSJim Jagielski isFitToSize() const363*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isFitToSize() const 364*b1cdbd2cSJim Jagielski { 365*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isFitToSize(); 366*b1cdbd2cSJim Jagielski } 367*b1cdbd2cSJim Jagielski isHideContour() const368*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isHideContour() const 369*b1cdbd2cSJim Jagielski { 370*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isHideContour(); 371*b1cdbd2cSJim Jagielski } 372*b1cdbd2cSJim Jagielski isBlink() const373*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isBlink() const 374*b1cdbd2cSJim Jagielski { 375*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isBlink(); 376*b1cdbd2cSJim Jagielski } 377*b1cdbd2cSJim Jagielski isScroll() const378*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isScroll() const 379*b1cdbd2cSJim Jagielski { 380*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isScroll(); 381*b1cdbd2cSJim Jagielski } 382*b1cdbd2cSJim Jagielski isInEditMode() const383*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isInEditMode() const 384*b1cdbd2cSJim Jagielski { 385*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isInEditMode(); 386*b1cdbd2cSJim Jagielski } 387*b1cdbd2cSJim Jagielski isFixedCellHeight() const388*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isFixedCellHeight() const 389*b1cdbd2cSJim Jagielski { 390*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isFixedCellHeight(); 391*b1cdbd2cSJim Jagielski } 392*b1cdbd2cSJim Jagielski isWrongSpell() const393*b1cdbd2cSJim Jagielski bool SdrTextAttribute::isWrongSpell() const 394*b1cdbd2cSJim Jagielski { 395*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->isWrongSpell(); 396*b1cdbd2cSJim Jagielski } 397*b1cdbd2cSJim Jagielski getSdrFormTextAttribute() const398*b1cdbd2cSJim Jagielski const SdrFormTextAttribute& SdrTextAttribute::getSdrFormTextAttribute() const 399*b1cdbd2cSJim Jagielski { 400*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getSdrFormTextAttribute(); 401*b1cdbd2cSJim Jagielski } 402*b1cdbd2cSJim Jagielski getTextLeftDistance() const403*b1cdbd2cSJim Jagielski sal_Int32 SdrTextAttribute::getTextLeftDistance() const 404*b1cdbd2cSJim Jagielski { 405*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getTextLeftDistance(); 406*b1cdbd2cSJim Jagielski } 407*b1cdbd2cSJim Jagielski getTextUpperDistance() const408*b1cdbd2cSJim Jagielski sal_Int32 SdrTextAttribute::getTextUpperDistance() const 409*b1cdbd2cSJim Jagielski { 410*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getTextUpperDistance(); 411*b1cdbd2cSJim Jagielski } 412*b1cdbd2cSJim Jagielski getTextRightDistance() const413*b1cdbd2cSJim Jagielski sal_Int32 SdrTextAttribute::getTextRightDistance() const 414*b1cdbd2cSJim Jagielski { 415*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getTextRightDistance(); 416*b1cdbd2cSJim Jagielski } 417*b1cdbd2cSJim Jagielski getTextLowerDistance() const418*b1cdbd2cSJim Jagielski sal_Int32 SdrTextAttribute::getTextLowerDistance() const 419*b1cdbd2cSJim Jagielski { 420*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getTextLowerDistance(); 421*b1cdbd2cSJim Jagielski } 422*b1cdbd2cSJim Jagielski getPropertiesVersion() const423*b1cdbd2cSJim Jagielski sal_uInt32 SdrTextAttribute::getPropertiesVersion() const 424*b1cdbd2cSJim Jagielski { 425*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getPropertiesVersion(); 426*b1cdbd2cSJim Jagielski } 427*b1cdbd2cSJim Jagielski getSdrTextHorzAdjust() const428*b1cdbd2cSJim Jagielski SdrTextHorzAdjust SdrTextAttribute::getSdrTextHorzAdjust() const 429*b1cdbd2cSJim Jagielski { 430*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getSdrTextHorzAdjust(); 431*b1cdbd2cSJim Jagielski } 432*b1cdbd2cSJim Jagielski getSdrTextVertAdjust() const433*b1cdbd2cSJim Jagielski SdrTextVertAdjust SdrTextAttribute::getSdrTextVertAdjust() const 434*b1cdbd2cSJim Jagielski { 435*b1cdbd2cSJim Jagielski return mpSdrTextAttribute->getSdrTextVertAdjust(); 436*b1cdbd2cSJim Jagielski } 437*b1cdbd2cSJim Jagielski getBlinkTextTiming(drawinglayer::animation::AnimationEntryList & rAnimList) const438*b1cdbd2cSJim Jagielski void SdrTextAttribute::getBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const 439*b1cdbd2cSJim Jagielski { 440*b1cdbd2cSJim Jagielski if(isBlink()) 441*b1cdbd2cSJim Jagielski { 442*b1cdbd2cSJim Jagielski getSdrText().GetObject().impGetBlinkTextTiming(rAnimList); 443*b1cdbd2cSJim Jagielski } 444*b1cdbd2cSJim Jagielski } 445*b1cdbd2cSJim Jagielski getScrollTextTiming(drawinglayer::animation::AnimationEntryList & rAnimList,double fFrameLength,double fTextLength) const446*b1cdbd2cSJim Jagielski void SdrTextAttribute::getScrollTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList, double fFrameLength, double fTextLength) const 447*b1cdbd2cSJim Jagielski { 448*b1cdbd2cSJim Jagielski if(isScroll()) 449*b1cdbd2cSJim Jagielski { 450*b1cdbd2cSJim Jagielski getSdrText().GetObject().impGetScrollTextTiming(rAnimList, fFrameLength, fTextLength); 451*b1cdbd2cSJim Jagielski } 452*b1cdbd2cSJim Jagielski } 453*b1cdbd2cSJim Jagielski } // end of namespace attribute 454*b1cdbd2cSJim Jagielski } // end of namespace drawinglayer 455*b1cdbd2cSJim Jagielski 456*b1cdbd2cSJim Jagielski ////////////////////////////////////////////////////////////////////////////// 457*b1cdbd2cSJim Jagielski // eof 458