xref: /trunk/main/sw/inc/fmtfsize.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef _FMTFSIZE_HXX
28 #define _FMTFSIZE_HXX
29 
30 #include <tools/gen.hxx>
31 #include <svl/poolitem.hxx>
32 #include "swdllapi.h"
33 #include <hintids.hxx>
34 #include <swtypes.hxx>
35 #include <format.hxx>
36 
37 class IntlWrapper;
38 
39 //Die Framesize ---------------------------------
40 
41 enum SwFrmSize
42 {
43     ATT_VAR_SIZE,       //Frm ist in der Var-Richtung variabel
44     ATT_FIX_SIZE,       //Frm ist in der Var-Richtung unbeweglich
45     ATT_MIN_SIZE        //Der Wert in der Var-Richtung beschreibt eine
46                         //Minimalgroesse, die nicht unter- wohl aber
47                         //ueberschritten werden kann.
48 };
49 
50 class SW_DLLPUBLIC SwFmtFrmSize: public SfxPoolItem
51 {
52     Size      aSize;
53     SwFrmSize eFrmHeightType;
54     SwFrmSize eFrmWidthType;
55     sal_uInt8     nWidthPercent;    //Fuer Tabellen kann die Breite in Prozent
56     sal_uInt8     nHeightPercent;   //angegeben sein.
57                                 //Fuer Rahmen koennen Hoehe und/oder Breite
58                                 //in Prozent angegeben sein. Wenn nur eine
59                                 //der Angaben in Prozent angeben ist, kann
60                                 //durch den ausgezeichneten Wert 0xFF in der
61                                 //anderen Prozentangabe bestimmt werden, das
62                                 //sich diese Richtung proportional zur anderen
63                                 //verhaelt. Basis fuer die Umrechnung sind fuer
64                                 //diesen Fall die Angaben in der Size.
65                                 //Die Prozentwerte beziehen sich immer auf die
66                                 //Umgebung in der das Objekt steht (PrtArea)
67                                 //Auf die Bildschirmbreite abzueglich Raender
68                                 //in der BrowseView wenn die Umgebung die Seite
69                                 //ist.
70 public:
71     SwFmtFrmSize( SwFrmSize eSize = ATT_VAR_SIZE,
72                   SwTwips nWidth = 0, SwTwips nHeight = 0 );
73     SwFmtFrmSize& operator=( const SwFmtFrmSize& rCpy );
74 
75     // "pure virtual Methoden" vom SfxPoolItem
76     virtual int             operator==( const SfxPoolItem& ) const;
77     virtual SfxPoolItem*    Clone( SfxItemPool *pPool = 0 ) const;
78     virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
79                                     SfxMapUnit eCoreMetric,
80                                     SfxMapUnit ePresMetric,
81                                     String &rText,
82                                     const IntlWrapper*    pIntl = 0 ) const;
83     virtual sal_Bool             QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const;
84     virtual sal_Bool             PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 );
85 
86     SwFrmSize GetHeightSizeType() const { return eFrmHeightType; }
87     void SetHeightSizeType( SwFrmSize eSize ) { eFrmHeightType = eSize; }
88 
89     SwFrmSize GetWidthSizeType() const { return eFrmWidthType; }
90     void SetWidthSizeType( SwFrmSize eSize ) { eFrmWidthType = eSize; }
91 
92     const Size& GetSize() const { return aSize; }
93           void  SetSize( const Size &rNew ) { aSize = rNew; }
94 
95     SwTwips GetHeight() const { return aSize.Height(); }
96     SwTwips GetWidth()  const { return aSize.Width();  }
97     void    SetHeight( const SwTwips nNew ) { aSize.Height() = nNew; }
98     void    SetWidth ( const SwTwips nNew ) { aSize.Width()  = nNew; }
99 
100     sal_uInt8    GetHeightPercent() const{ return nHeightPercent; }
101     sal_uInt8   GetWidthPercent() const { return nWidthPercent;  }
102     void    SetHeightPercent( sal_uInt8 n ) { nHeightPercent = n; }
103     void    SetWidthPercent ( sal_uInt8 n ) { nWidthPercent  = n; }
104 };
105 
106 inline const SwFmtFrmSize &SwAttrSet::GetFrmSize(sal_Bool bInP) const
107     { return (const SwFmtFrmSize&)Get( RES_FRM_SIZE,bInP); }
108 
109 inline const SwFmtFrmSize &SwFmt::GetFrmSize(sal_Bool bInP) const
110     { return aSet.GetFrmSize(bInP); }
111 
112 #endif
113 
114