Files
libreoffice/sc/inc/attrib.hxx

435 lines
16 KiB
C++
Raw Normal View History

2000-09-18 16:07:07 +00:00
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 16:07:07 +00:00
*
* $RCSfile: attrib.hxx,v $
2000-09-18 16:07:07 +00:00
*
* $Revision: 1.7 $
2000-09-18 16:07:07 +00:00
*
* last change: $Author: rt $ $Date: 2005-09-08 17:23:08 $
2000-09-18 16:07:07 +00:00
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
2000-09-18 16:07:07 +00:00
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
2000-09-18 16:07:07 +00:00
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
2000-09-18 16:07:07 +00:00
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
2000-09-18 16:07:07 +00:00
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
2000-09-18 16:07:07 +00:00
*
************************************************************************/
#ifndef SC_SCATTR_HXX
#define SC_SCATTR_HXX
#ifndef _SFXPOOLITEM_HXX //autogen
#include <svtools/poolitem.hxx>
#endif
#ifndef _SFXINTITEM_HXX //autogen
#include <svtools/intitem.hxx>
#endif
#ifndef _SFXENUMITEM_HXX //autogen
#include <svtools/eitem.hxx>
#endif
#ifndef INCLUDED_SCDLLAPI_H
#include "scdllapi.h"
#endif
2000-09-18 16:07:07 +00:00
#ifndef SC_SCGLOB_HXX
#include "global.hxx"
#endif
#ifndef SC_ADDRESS_HXX
#include "address.hxx"
#endif
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
// Flags fuer durch Merge verdeckte Zellen
// und Control fuer Auto-Filter
#define SC_MF_HOR 1
#define SC_MF_VER 2
#define SC_MF_AUTO 4
#define SC_MF_BUTTON 8
#define SC_MF_SCENARIO 16
#define SC_MF_ALL 31
class EditTextObject;
class SvxBorderLine;
BOOL HasPriority( const SvxBorderLine* pThis, const SvxBorderLine* pOther );
//------------------------------------------------------------------------
class ScMergeAttr: public SfxPoolItem
{
SCsCOL nColMerge;
SCsROW nRowMerge;
2000-09-18 16:07:07 +00:00
public:
TYPEINFO();
ScMergeAttr();
ScMergeAttr( SCsCOL nCol, SCsROW nRow = 0);
2000-09-18 16:07:07 +00:00
ScMergeAttr( const ScMergeAttr& );
~ScMergeAttr();
virtual String GetValueText() const;
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
SCsCOL GetColMerge() const {return nColMerge; }
SCsROW GetRowMerge() const {return nRowMerge; }
2000-09-18 16:07:07 +00:00
BOOL IsMerged() const { return nColMerge>1 || nRowMerge>1; }
inline ScMergeAttr& operator=(const ScMergeAttr& rMerge)
{
nColMerge = rMerge.nColMerge;
nRowMerge = rMerge.nRowMerge;
return *this;
}
};
//------------------------------------------------------------------------
class ScMergeFlagAttr: public SfxInt16Item
{
public:
ScMergeFlagAttr();
ScMergeFlagAttr(INT16 nFlags);
~ScMergeFlagAttr();
BOOL IsHorOverlapped() const { return ( GetValue() & SC_MF_HOR ) != 0; }
BOOL IsVerOverlapped() const { return ( GetValue() & SC_MF_VER ) != 0; }
BOOL IsOverlapped() const { return ( GetValue() & ( SC_MF_HOR | SC_MF_VER ) ) != 0; }
BOOL HasAutoFilter() const { return ( GetValue() & SC_MF_AUTO ) != 0; }
BOOL HasButton() const { return ( GetValue() & SC_MF_BUTTON ) != 0; }
BOOL IsScenario() const { return ( GetValue() & SC_MF_SCENARIO ) != 0; }
};
//------------------------------------------------------------------------
class SC_DLLPUBLIC ScProtectionAttr: public SfxPoolItem
2000-09-18 16:07:07 +00:00
{
BOOL bProtection; // Zelle schuetzen
BOOL bHideFormula; // Formel nicht Anzeigen
BOOL bHideCell; // Zelle nicht Anzeigen
BOOL bHidePrint; // Zelle nicht Ausdrucken
public:
TYPEINFO();
ScProtectionAttr();
ScProtectionAttr( BOOL bProtect,
BOOL bHFormula = FALSE,
BOOL bHCell = FALSE,
BOOL bHPrint = FALSE);
ScProtectionAttr( const ScProtectionAttr& );
~ScProtectionAttr();
virtual String GetValueText() const;
virtual SfxItemPresentation GetPresentation(
SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
SfxMapUnit ePresMetric,
String& rText,
const IntlWrapper* pIntl = 0 ) const;
2000-09-18 16:07:07 +00:00
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
BOOL GetProtection() const { return bProtection; }
BOOL SetProtection( BOOL bProtect);
BOOL GetHideFormula() const { return bHideFormula; }
BOOL SetHideFormula( BOOL bHFormula);
BOOL GetHideCell() const { return bHideCell; }
BOOL SetHideCell( BOOL bHCell);
BOOL GetHidePrint() const { return bHidePrint; }
BOOL SetHidePrint( BOOL bHPrint);
inline ScProtectionAttr& operator=(const ScProtectionAttr& rProtection)
{
bProtection = rProtection.bProtection;
bHideFormula = rProtection.bHideFormula;
bHideCell = rProtection.bHideCell;
bHidePrint = rProtection.bHidePrint;
return *this;
}
};
//----------------------------------------------------------------------------
// ScRangeItem: verwaltet einen Tabellenbereich
#define SCR_INVALID 0x01
#define SCR_ALLTABS 0x02
#define SCR_TONEWTAB 0x04
class ScRangeItem : public SfxPoolItem
{
public:
TYPEINFO();
inline ScRangeItem( const USHORT nWhich );
inline ScRangeItem( const USHORT nWhich,
const ScRange& rRange,
const USHORT nNewFlags = 0 );
inline ScRangeItem( const ScRangeItem& rCpy );
inline ScRangeItem& operator=( const ScRangeItem &rCpy );
// "pure virtual Methoden" vom SfxPoolItem
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
SfxMapUnit ePresMetric,
String &rText,
const IntlWrapper* pIntl = 0 ) const;
2000-09-18 16:07:07 +00:00
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual USHORT GetVersion( USHORT nFileVersion ) const;
virtual SfxPoolItem* Create(SvStream &, USHORT) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
const ScRange& GetRange() const { return aRange; }
void SetRange( const ScRange& rNew ) { aRange = rNew; }
USHORT GetFlags() const { return nFlags; }
void SetFlags( USHORT nNew ) { nFlags = nNew; }
private:
ScRange aRange;
USHORT nFlags;
};
inline ScRangeItem::ScRangeItem( const USHORT nWhich )
: SfxPoolItem( nWhich ), nFlags( SCR_INVALID ) // == ungueltige Area
{
}
inline ScRangeItem::ScRangeItem( const USHORT nWhich,
const ScRange& rRange,
const USHORT nNew )
: SfxPoolItem( nWhich ), aRange( rRange ), nFlags( nNew )
{
}
inline ScRangeItem::ScRangeItem( const ScRangeItem& rCpy )
: SfxPoolItem( rCpy.Which() ), aRange( rCpy.aRange ), nFlags( rCpy.nFlags )
{}
inline ScRangeItem& ScRangeItem::operator=( const ScRangeItem &rCpy )
{
aRange = rCpy.aRange;
return *this;
}
//----------------------------------------------------------------------------
// ScTableListItem: verwaltet eine Liste von Tabellen
//----------------------------------------------------------------------------
class ScTableListItem : public SfxPoolItem
{
public:
TYPEINFO();
inline ScTableListItem( const USHORT nWhich );
ScTableListItem( const ScTableListItem& rCpy );
ScTableListItem( const USHORT nWhich, const List& rList );
~ScTableListItem();
ScTableListItem& operator=( const ScTableListItem &rCpy );
// "pure virtual Methoden" vom SfxPoolItem
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
SfxMapUnit ePresMetric,
String &rText,
const IntlWrapper* pIntl = 0 ) const;
2000-09-18 16:07:07 +00:00
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create(SvStream &, USHORT) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
BOOL GetTableList( List& aList ) const;
void SetTableList( const List& aList );
public:
USHORT nCount;
SCTAB* pTabArr;
2000-09-18 16:07:07 +00:00
};
inline ScTableListItem::ScTableListItem( const USHORT nWhich )
: SfxPoolItem(nWhich), nCount(0), pTabArr(NULL)
{}
//----------------------------------------------------------------------------
// Seitenformat-Item: Kopf-/Fusszeileninhalte
#define SC_HF_LEFTAREA 1
#define SC_HF_CENTERAREA 2
#define SC_HF_RIGHTAREA 3
class SC_DLLPUBLIC ScPageHFItem : public SfxPoolItem
2000-09-18 16:07:07 +00:00
{
EditTextObject* pLeftArea;
EditTextObject* pCenterArea;
EditTextObject* pRightArea;
public:
TYPEINFO();
ScPageHFItem( USHORT nWhich );
ScPageHFItem( const ScPageHFItem& rItem );
~ScPageHFItem();
virtual String GetValueText() const;
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
virtual USHORT GetVersion( USHORT nFileVersion ) const;
virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
const EditTextObject* GetLeftArea() const { return pLeftArea; }
const EditTextObject* GetCenterArea() const { return pCenterArea; }
const EditTextObject* GetRightArea() const { return pRightArea; }
void SetLeftArea( const EditTextObject& rNew );
void SetCenterArea( const EditTextObject& rNew );
void SetRightArea( const EditTextObject& rNew );
//Set mit Uebereignung der Pointer, nArea siehe defines oben
void SetArea( EditTextObject *pNew, int nArea );
};
//----------------------------------------------------------------------------
// Seitenformat-Item: Kopf-/Fusszeileninhalte
class SC_DLLPUBLIC ScViewObjectModeItem: public SfxEnumItem
2000-09-18 16:07:07 +00:00
{
public:
TYPEINFO();
ScViewObjectModeItem( USHORT nWhich );
ScViewObjectModeItem( USHORT nWhich, ScVObjMode eMode );
~ScViewObjectModeItem();
virtual USHORT GetValueCount() const;
virtual String GetValueText( USHORT nVal ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create(SvStream &, USHORT) const;
virtual USHORT GetVersion( USHORT nFileVersion ) const;
virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
SfxMapUnit ePresMetric,
String& rText,
const IntlWrapper* pIntl = 0 ) const;
2000-09-18 16:07:07 +00:00
};
//----------------------------------------------------------------------------
//
class ScDoubleItem : public SfxPoolItem
{
public:
TYPEINFO();
ScDoubleItem( USHORT nWhich, double nVal=0 );
ScDoubleItem( const ScDoubleItem& rItem );
~ScDoubleItem();
virtual String GetValueText() const;
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
double GetValue() const { return nValue; }
void SetValue( const double nVal ) { nValue = nVal;}
private:
double nValue;
};
// ============================================================================
/** Member ID for "page scale to width" value in QueryValue() and PutValue(). */
const BYTE SC_MID_PAGE_SCALETO_WIDTH = 1;
/** Member ID for "page scale to height" value in QueryValue() and PutValue(). */
const BYTE SC_MID_PAGE_SCALETO_HEIGHT = 2;
/** Contains the "scale to width/height" attribute in page styles. */
class SC_DLLPUBLIC ScPageScaleToItem : public SfxPoolItem
{
public:
TYPEINFO();
/** Default c'tor sets the width and height to 0. */
explicit ScPageScaleToItem();
explicit ScPageScaleToItem( sal_uInt16 nWidth, sal_uInt16 nHeight );
virtual ~ScPageScaleToItem();
virtual ScPageScaleToItem* Clone( SfxItemPool* = 0 ) const;
virtual int operator==( const SfxPoolItem& rCmp ) const;
inline sal_uInt16 GetWidth() const { return mnWidth; }
inline sal_uInt16 GetHeight() const { return mnHeight; }
inline bool IsValid() const { return mnWidth || mnHeight; }
inline void SetWidth( sal_uInt16 nWidth ) { mnWidth = nWidth; }
inline void SetHeight( sal_uInt16 nHeight ) { mnHeight = nHeight; }
inline void Set( sal_uInt16 nWidth, sal_uInt16 nHeight )
{ mnWidth = nWidth; mnHeight = nHeight; }
inline void SetInvalid() { mnWidth = mnHeight = 0; }
virtual SfxItemPresentation GetPresentation(
SfxItemPresentation ePresentation,
SfxMapUnit, SfxMapUnit,
XubString& rText,
const IntlWrapper* = 0 ) const;
virtual BOOL QueryValue( ::com::sun::star::uno::Any& rAny, BYTE nMemberId = 0 ) const;
virtual BOOL PutValue( const ::com::sun::star::uno::Any& rAny, BYTE nMemberId = 0 );
private:
sal_uInt16 mnWidth;
sal_uInt16 mnHeight;
};
// ============================================================================
2000-09-18 16:07:07 +00:00
#endif