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
23 #ifndef _FMTFSIZE_HXX
24 #define _FMTFSIZE_HXX
25
26 #include <tools/gen.hxx>
27 #include <svl/poolitem.hxx>
28 #include "swdllapi.h"
29 #include <hintids.hxx>
30 #include <swtypes.hxx>
31 #include <format.hxx>
32
33 class IntlWrapper;
34
35 //Die Framesize ---------------------------------
36
37 enum SwFrmSize
38 {
39 ATT_VAR_SIZE, //Frm ist in der Var-Richtung variabel
40 ATT_FIX_SIZE, //Frm ist in der Var-Richtung unbeweglich
41 ATT_MIN_SIZE //Der Wert in der Var-Richtung beschreibt eine
42 //Minimalgroesse, die nicht unter- wohl aber
43 //ueberschritten werden kann.
44 };
45
46 class SW_DLLPUBLIC SwFmtFrmSize: public SfxPoolItem
47 {
48 Size aSize;
49 SwFrmSize eFrmHeightType;
50 SwFrmSize eFrmWidthType;
51 sal_uInt8 nWidthPercent; //Fuer Tabellen kann die Breite in Prozent
52 sal_uInt8 nHeightPercent; //angegeben sein.
53 //Fuer Rahmen koennen Hoehe und/oder Breite
54 //in Prozent angegeben sein. Wenn nur eine
55 //der Angaben in Prozent angeben ist, kann
56 //durch den ausgezeichneten Wert 0xFF in der
57 //anderen Prozentangabe bestimmt werden, das
58 //sich diese Richtung proportional zur anderen
59 //verhaelt. Basis fuer die Umrechnung sind fuer
60 //diesen Fall die Angaben in der Size.
61 //Die Prozentwerte beziehen sich immer auf die
62 //Umgebung in der das Objekt steht (PrtArea)
63 //Auf die Bildschirmbreite abzueglich Raender
64 //in der BrowseView wenn die Umgebung die Seite
65 //ist.
66 public:
67 SwFmtFrmSize( SwFrmSize eSize = ATT_VAR_SIZE,
68 SwTwips nWidth = 0, SwTwips nHeight = 0 );
69 SwFmtFrmSize& operator=( const SwFmtFrmSize& rCpy );
70
71 // "pure virtual Methoden" vom SfxPoolItem
72 virtual int operator==( const SfxPoolItem& ) const;
73 virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
74 virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
75 SfxMapUnit eCoreMetric,
76 SfxMapUnit ePresMetric,
77 String &rText,
78 const IntlWrapper* pIntl = 0 ) const;
79 virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const;
80 virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 );
81
GetHeightSizeType() const82 SwFrmSize GetHeightSizeType() const { return eFrmHeightType; }
SetHeightSizeType(SwFrmSize eSize)83 void SetHeightSizeType( SwFrmSize eSize ) { eFrmHeightType = eSize; }
84
GetWidthSizeType() const85 SwFrmSize GetWidthSizeType() const { return eFrmWidthType; }
SetWidthSizeType(SwFrmSize eSize)86 void SetWidthSizeType( SwFrmSize eSize ) { eFrmWidthType = eSize; }
87
GetSize() const88 const Size& GetSize() const { return aSize; }
SetSize(const Size & rNew)89 void SetSize( const Size &rNew ) { aSize = rNew; }
90
GetHeight() const91 SwTwips GetHeight() const { return aSize.Height(); }
GetWidth() const92 SwTwips GetWidth() const { return aSize.Width(); }
SetHeight(const SwTwips nNew)93 void SetHeight( const SwTwips nNew ) { aSize.Height() = nNew; }
SetWidth(const SwTwips nNew)94 void SetWidth ( const SwTwips nNew ) { aSize.Width() = nNew; }
95
GetHeightPercent() const96 sal_uInt8 GetHeightPercent() const{ return nHeightPercent; }
GetWidthPercent() const97 sal_uInt8 GetWidthPercent() const { return nWidthPercent; }
SetHeightPercent(sal_uInt8 n)98 void SetHeightPercent( sal_uInt8 n ) { nHeightPercent = n; }
SetWidthPercent(sal_uInt8 n)99 void SetWidthPercent ( sal_uInt8 n ) { nWidthPercent = n; }
100 };
101
GetFrmSize(sal_Bool bInP) const102 inline const SwFmtFrmSize &SwAttrSet::GetFrmSize(sal_Bool bInP) const
103 { return (const SwFmtFrmSize&)Get( RES_FRM_SIZE,bInP); }
104
GetFrmSize(sal_Bool bInP) const105 inline const SwFmtFrmSize &SwFmt::GetFrmSize(sal_Bool bInP) const
106 { return aSet.GetFrmSize(bInP); }
107
108 #endif
109
110