| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef _SVX_LRSPITEM_HXX |
| #define _SVX_LRSPITEM_HXX |
| |
| // include --------------------------------------------------------------- |
| |
| #include <svl/poolitem.hxx> |
| #include <editeng/editengdllapi.h> |
| |
| namespace rtl |
| { |
| class OUString; |
| } |
| |
| // class SvxLRSpaceItem -------------------------------------------------- |
| |
| /* |
| [Beschreibung] |
| Linker/Rechter Rand sowie Erstzeileneinzug |
| |
| SvxLRSpaceItem bietet zwei Schnittstellen zur Befragung des linken |
| Randes und des Erstzeileneinzuges an. Die Get-Methoden liefern |
| die Member zurueck, wie sie das Layout bisher auch erwartete: |
| Der linke Rand verschiebt sich beim negativem Erstzeileneinzug |
| nach links. Die SetTxt/GetTxt-Methoden setzen voraus, dass der |
| linke Rand der 0-Punkt des Erstzeileneinzugs darstellt: |
| |
| UI UI LAYOUT UI/TEXT UI/TEXT (Wo?) |
| SetTxtLeft SetTxtFirst GetLeft GetTxtLeft GetTxtFirst (Was?) |
| 500 -500 0 500 -500 (Wieviel?) |
| 500 0 500 500 0 |
| 500 +500 500 500 +500 |
| 700 -500 200 700 -500 |
| */ |
| |
| #define LRSPACE_16_VERSION ((sal_uInt16)0x0001) |
| #define LRSPACE_TXTLEFT_VERSION ((sal_uInt16)0x0002) |
| #define LRSPACE_AUTOFIRST_VERSION ((sal_uInt16)0x0003) |
| #define LRSPACE_NEGATIVE_VERSION ((sal_uInt16)0x0004) |
| |
| class EDITENG_DLLPUBLIC SvxLRSpaceItem : public SfxPoolItem |
| { |
| short nFirstLineOfst; // Erstzeileneinzug _immer_ relativ zu nTxtLeft |
| long nTxtLeft; // wir spendieren einen sal_uInt16 |
| long nLeftMargin; // nLeft oder der neg. Erstzeileneinzug |
| long nRightMargin; // der unproblematische rechte Rand |
| |
| sal_uInt16 nPropFirstLineOfst, nPropLeftMargin, nPropRightMargin; |
| sal_Bool bAutoFirst : 1; // Automatische Berechnung der Erstzeileneinzugs |
| |
| void AdjustLeft(); // nLeftMargin und nTxtLeft werden angepasst. |
| |
| public: |
| TYPEINFO(); |
| |
| SvxLRSpaceItem( const sal_uInt16 nId ); |
| SvxLRSpaceItem( const long nLeft, const long nRight, |
| const long nTLeft /*= 0*/, const short nOfset /*= 0*/, |
| const sal_uInt16 nId ); |
| inline SvxLRSpaceItem& operator=( const SvxLRSpaceItem &rCpy ); |
| |
| // "pure virtual Methoden" vom SfxPoolItem |
| virtual int operator==( const SfxPoolItem& ) const; |
| |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ); |
| |
| virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres, |
| SfxMapUnit eCoreMetric, |
| SfxMapUnit ePresMetric, |
| String &rText, const IntlWrapper * = 0 ) const; |
| |
| virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; |
| virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const; |
| virtual SvStream& Store(SvStream &, sal_uInt16 nItemVersion ) const; |
| virtual sal_uInt16 GetVersion( sal_uInt16 nFileVersion ) const; |
| virtual int ScaleMetrics( long nMult, long nDiv ); |
| virtual int HasMetrics() const; |
| |
| // Die "Layout-Schnittstelle": |
| inline void SetLeft ( const long nL, const sal_uInt16 nProp = 100 ); |
| inline void SetRight( const long nR, const sal_uInt16 nProp = 100 ); |
| |
| // abfragen / direktes setzen der absoluten Werte |
| inline long GetLeft() const { return nLeftMargin; } |
| inline long GetRight() const { return nRightMargin;} |
| inline void SetLeftValue( const long nL ) { nTxtLeft = nLeftMargin = nL; } |
| inline void SetRightValue( const long nR ) { nRightMargin = nR; } |
| inline sal_Bool IsAutoFirst() const { return bAutoFirst; } |
| inline void SetAutoFirst( const sal_Bool bNew ) { bAutoFirst = bNew; } |
| |
| // abfragen / setzen der Prozent-Werte |
| inline void SetPropLeft( const sal_uInt16 nProp = 100 ) |
| { nPropLeftMargin = nProp; } |
| inline void SetPropRight( const sal_uInt16 nProp = 100 ) |
| { nPropRightMargin = nProp;} |
| inline sal_uInt16 GetPropLeft() const { return nPropLeftMargin; } |
| inline sal_uInt16 GetPropRight() const { return nPropRightMargin;} |
| |
| // Die "UI/Text-Schnittstelle": |
| inline void SetTxtLeft( const long nL, const sal_uInt16 nProp = 100 ); |
| inline long GetTxtLeft() const { return nTxtLeft; } |
| |
| inline void SetTxtFirstLineOfst( const short nF, const sal_uInt16 nProp = 100 ); |
| inline short GetTxtFirstLineOfst() const { return nFirstLineOfst; } |
| inline void SetPropTxtFirstLineOfst( const sal_uInt16 nProp = 100 ) |
| { nPropFirstLineOfst = nProp; } |
| inline sal_uInt16 GetPropTxtFirstLineOfst() const |
| { return nPropFirstLineOfst; } |
| inline void SetTxtFirstLineOfstValue( const short nValue ) |
| { nFirstLineOfst = nValue; } |
| }; |
| |
| inline SvxLRSpaceItem &SvxLRSpaceItem::operator=( const SvxLRSpaceItem &rCpy ) |
| { |
| nFirstLineOfst = rCpy.nFirstLineOfst; |
| nTxtLeft = rCpy.nTxtLeft; |
| nLeftMargin = rCpy.nLeftMargin; |
| nRightMargin = rCpy.nRightMargin; |
| nPropFirstLineOfst = rCpy.nPropFirstLineOfst; |
| nPropLeftMargin = rCpy.nPropLeftMargin; |
| nPropRightMargin = rCpy.nPropRightMargin; |
| bAutoFirst = rCpy.bAutoFirst; |
| return *this; |
| } |
| |
| inline void SvxLRSpaceItem::SetLeft( const long nL, const sal_uInt16 nProp ) |
| { |
| nLeftMargin = (nL * nProp) / 100; |
| nTxtLeft = nLeftMargin; |
| nPropLeftMargin = nProp; |
| } |
| inline void SvxLRSpaceItem::SetRight( const long nR, const sal_uInt16 nProp ) |
| { |
| nRightMargin = (nR * nProp) / 100; |
| nPropRightMargin = nProp; |
| } |
| inline void SvxLRSpaceItem::SetTxtFirstLineOfst( const short nF, |
| const sal_uInt16 nProp ) |
| { |
| nFirstLineOfst = short((long(nF) * nProp ) / 100); |
| nPropFirstLineOfst = nProp; |
| AdjustLeft(); |
| } |
| |
| inline void SvxLRSpaceItem::SetTxtLeft( const long nL, const sal_uInt16 nProp ) |
| { |
| nTxtLeft = (nL * nProp) / 100; |
| nPropLeftMargin = nProp; |
| AdjustLeft(); |
| } |
| |
| #endif |
| |