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 _TABCOL_HXX 28 #define _TABCOL_HXX 29 30 #ifndef _SVSTDARR_HXX 31 #define _SVSTDARR_LONGS 32 #define _SVSTDARR_BOOLS 33 #include <svl/svstdarr.hxx> 34 #endif 35 36 #ifndef INCLUDED_VECTOR 37 #include <vector> 38 #define INCLUDED_VECTOR 39 #endif 40 #include "swdllapi.h" 41 42 struct SwTabColsEntry 43 { 44 long nPos; 45 long nMin; 46 long nMax; 47 sal_Bool bHidden; //Fuer jeden Eintrag ein Flag, Hidden oder nicht. 48 //Wenn das Flag Hidden sal_True ist liegt der Spalten- 49 //trenner nicht in der aktuellen Zeile; er muss 50 //mit gepflegt werden, darf aber nicht angezeigt 51 //werden. 52 }; 53 54 typedef std::vector< SwTabColsEntry > SwTabColsEntries; 55 56 class SW_DLLPUBLIC SwTabCols 57 { 58 long nLeftMin, //Linker aeusserer Rand (Bezugspunkt) in 59 //Dokumentkordinaten. 60 //Alle anderen Werte relativ zu diesem Punkt! 61 nLeft, //Linker Rand der Tabelle. 62 nRight, //Rechter Rand der Tabelle. 63 nRightMax; //Maximaler rechter Rand der Tabelle. 64 65 bool bLastRowAllowedToChange; // if the last row of the table frame 66 // is split across pages, it may not 67 // change its size 68 69 SwTabColsEntries aData; 70 71 //fuer den CopyCTor 72 const SwTabColsEntries& GetData() const { return aData; } 73 74 public: 75 SwTabCols( sal_uInt16 nSize = 0 ); 76 SwTabCols( const SwTabCols& ); 77 SwTabCols &operator=( const SwTabCols& ); 78 sal_Bool operator==( const SwTabCols& rCmp ) const; 79 long& operator[]( sal_uInt16 nPos ) { return aData[nPos].nPos; } 80 long operator[]( sal_uInt16 nPos ) const { return aData[nPos].nPos; } 81 sal_uInt16 Count() const { return sal::static_int_cast< sal_uInt16 >(aData.size()); } 82 83 sal_Bool IsHidden( sal_uInt16 nPos ) const { return aData[nPos].bHidden; } 84 void SetHidden( sal_uInt16 nPos, sal_Bool bValue ) { aData[nPos].bHidden = bValue; } 85 86 void Insert( long nValue, sal_Bool bValue, sal_uInt16 nPos ); 87 void Insert( long nValue, long nMin, long nMax, sal_Bool bValue, sal_uInt16 nPos ); 88 void Remove( sal_uInt16 nPos, sal_uInt16 nAnz = 1 ); 89 90 const SwTabColsEntry& GetEntry( sal_uInt16 nPos ) const { return aData[nPos]; } 91 SwTabColsEntry& GetEntry( sal_uInt16 nPos ) { return aData[nPos]; } 92 93 long GetLeftMin() const { return nLeftMin; } 94 long GetLeft() const { return nLeft; } 95 long GetRight() const { return nRight; } 96 long GetRightMax()const { return nRightMax;} 97 98 void SetLeftMin ( long nNew ) { nLeftMin = nNew; } 99 void SetLeft ( long nNew ) { nLeft = nNew; } 100 void SetRight ( long nNew ) { nRight = nNew; } 101 void SetRightMax( long nNew ) { nRightMax = nNew;} 102 103 bool IsLastRowAllowedToChange() const { return bLastRowAllowedToChange; } 104 void SetLastRowAllowedToChange( bool bNew ) { bLastRowAllowedToChange = bNew; } 105 }; 106 107 #endif //_TABCOL_HXX 108