office-gobmx/sw/inc/tblafmt.hxx
2011-04-25 20:33:33 +02:00

264 lines
11 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org 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 version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _TBLAFMT_HXX
#define _TBLAFMT_HXX
/*************************************************************************
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The structure of table auto formatting should not be changed. It is used
by different code of Writer and Calc. If a change is necessary, the
source code of both applications must be changed!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**************************************************************************/
#include <svl/svarray.hxx>
#include "hintids.hxx" // _Always_ before the solar-items!
#include <svx/algitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/fhgtitem.hxx>
#include <editeng/wghtitem.hxx>
#include <editeng/postitem.hxx>
#include <editeng/udlnitem.hxx>
#include <editeng/crsditem.hxx>
#include <editeng/cntritem.hxx>
#include <editeng/shdditem.hxx>
#include <editeng/colritem.hxx>
#include <editeng/boxitem.hxx>
#include <editeng/brshitem.hxx>
#include <editeng/adjitem.hxx>
#include <editeng/justifyitem.hxx>
#include <svx/rotmodit.hxx>
#include <svl/intitem.hxx>
#include <editeng/bolnitem.hxx>
#include "swdllapi.h"
struct SwAfVersions;
class SvNumberFormatter;
class SwBoxAutoFmt
{
// common attributes of Calc and Writer
// --- from 641 on: CJK and CTL font settings
SvxFontItem aFont;
SvxFontHeightItem aHeight;
SvxWeightItem aWeight;
SvxPostureItem aPosture;
SvxFontItem aCJKFont;
SvxFontHeightItem aCJKHeight;
SvxWeightItem aCJKWeight;
SvxPostureItem aCJKPosture;
SvxFontItem aCTLFont;
SvxFontHeightItem aCTLHeight;
SvxWeightItem aCTLWeight;
SvxPostureItem aCTLPosture;
SvxUnderlineItem aUnderline;
SvxOverlineItem aOverline;
SvxCrossedOutItem aCrossedOut;
SvxContourItem aContour;
SvxShadowedItem aShadowed;
SvxColorItem aColor;
SvxBoxItem aBox;
SvxLineItem aTLBR;
SvxLineItem aBLTR;
SvxBrushItem aBackground;
// Writer specific
SvxAdjustItem aAdjust;
// Calc specific
SvxHorJustifyItem aHorJustify;
SvxVerJustifyItem aVerJustify;
SfxBoolItem aStacked;
SvxMarginItem aMargin;
SfxBoolItem aLinebreak;
SfxInt32Item aRotateAngle;
SvxRotateModeItem aRotateMode;
// number format
String sNumFmtString;
LanguageType eSysLanguage, eNumFmtLanguage;
public:
SwBoxAutoFmt();
SwBoxAutoFmt( const SwBoxAutoFmt& rNew );
~SwBoxAutoFmt();
int operator==( const SwBoxAutoFmt& rCmp ) const;
SwBoxAutoFmt& operator=( const SwBoxAutoFmt& rNew );
// The get-methods.
const SvxFontItem &GetFont() const { return aFont; }
const SvxFontHeightItem &GetHeight() const { return aHeight; }
const SvxWeightItem &GetWeight() const { return aWeight; }
const SvxPostureItem &GetPosture() const { return aPosture; }
const SvxFontItem &GetCJKFont() const { return aCJKFont; }
const SvxFontHeightItem &GetCJKHeight() const { return aCJKHeight; }
const SvxWeightItem &GetCJKWeight() const { return aCJKWeight; }
const SvxPostureItem &GetCJKPosture() const { return aCJKPosture; }
const SvxFontItem &GetCTLFont() const { return aCTLFont; }
const SvxFontHeightItem &GetCTLHeight() const { return aCTLHeight; }
const SvxWeightItem &GetCTLWeight() const { return aCTLWeight; }
const SvxPostureItem &GetCTLPosture() const { return aCTLPosture; }
const SvxUnderlineItem &GetUnderline() const { return aUnderline; }
const SvxOverlineItem &GetOverline() const { return aOverline; }
const SvxCrossedOutItem &GetCrossedOut() const { return aCrossedOut; }
const SvxContourItem &GetContour() const { return aContour; }
const SvxShadowedItem &GetShadowed() const { return aShadowed; }
const SvxColorItem &GetColor() const { return aColor; }
const SvxAdjustItem &GetAdjust() const { return aAdjust; }
const SvxBoxItem &GetBox() const { return aBox; }
const SvxLineItem &GetTLBR() const { return aTLBR; }
const SvxLineItem &GetBLTR() const { return aBLTR; }
const SvxBrushItem &GetBackground() const { return aBackground; }
void GetValueFormat( String& rFmt, LanguageType& rLng, LanguageType& rSys ) const
{ rFmt = sNumFmtString; rLng = eNumFmtLanguage; rSys = eSysLanguage; }
// The set-methods.
void SetFont( const SvxFontItem& rNew ) { aFont = rNew; }
void SetHeight( const SvxFontHeightItem& rNew ) { aHeight = rNew; }
void SetWeight( const SvxWeightItem& rNew ) { aWeight = rNew; }
void SetPosture( const SvxPostureItem& rNew ) { aPosture = rNew; }
void SetCJKFont( const SvxFontItem& rNew ) { aCJKFont = rNew; }
void SetCJKHeight( const SvxFontHeightItem& rNew ) { aCJKHeight = rNew; }
void SetCJKWeight( const SvxWeightItem& rNew ) { aCJKWeight = rNew; }
void SetCJKPosture( const SvxPostureItem& rNew ) { aCJKPosture = rNew; }
void SetCTLFont( const SvxFontItem& rNew ) { aCTLFont = rNew; }
void SetCTLHeight( const SvxFontHeightItem& rNew ) { aCTLHeight = rNew; }
void SetCTLWeight( const SvxWeightItem& rNew ) { aCTLWeight = rNew; }
void SetCTLPosture( const SvxPostureItem& rNew ) { aCTLPosture = rNew; }
void SetUnderline( const SvxUnderlineItem& rNew ) { aUnderline = rNew; }
void SetOverline( const SvxOverlineItem& rNew ) { aOverline = rNew; }
void SetCrossedOut( const SvxCrossedOutItem& rNew ) { aCrossedOut = rNew; }
void SetContour( const SvxContourItem& rNew ) { aContour = rNew; }
void SetShadowed( const SvxShadowedItem& rNew ) { aShadowed = rNew; }
void SetColor( const SvxColorItem& rNew ) { aColor = rNew; }
void SetAdjust( const SvxAdjustItem& rNew )
{
aAdjust.SetAdjust( rNew.GetAdjust() );
aAdjust.SetOneWord( rNew.GetOneWord() );
aAdjust.SetLastBlock( rNew.GetLastBlock() );
}
void SetBox( const SvxBoxItem& rNew ) { aBox = rNew; }
void SetBackground( const SvxBrushItem& rNew ) { aBackground = rNew; }
void SetValueFormat( const String& rFmt, LanguageType eLng, LanguageType eSys )
{ sNumFmtString = rFmt; eNumFmtLanguage = eLng; eSysLanguage = eSys; }
sal_Bool Load( SvStream& rStream, const SwAfVersions& rVersions, sal_uInt16 nVer );
sal_Bool Save( SvStream& rStream ) const;
sal_Bool SaveVerionNo( SvStream& rStream ) const;
#ifdef READ_OLDVERS
// load old version.
sal_Bool LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] );
#endif
};
class SW_DLLPUBLIC SwTableAutoFmt
{
friend void _FinitCore(); // To destroy dflt. pointer.
static SwBoxAutoFmt* pDfltBoxAutoFmt;
String aName;
sal_uInt16 nStrResId;
// Common flags of Calc and Writer.
sal_Bool bInclFont : 1;
sal_Bool bInclJustify : 1;
sal_Bool bInclFrame : 1;
sal_Bool bInclBackground : 1;
sal_Bool bInclValueFormat : 1;
// Calc specific flags.
sal_Bool bInclWidthHeight : 1;
SwBoxAutoFmt* aBoxAutoFmt[ 16 ];
public:
SwTableAutoFmt( const String& rName );
SwTableAutoFmt( const SwTableAutoFmt& rNew );
~SwTableAutoFmt();
SwTableAutoFmt& operator=( const SwTableAutoFmt& rNew );
void SetBoxFmt( const SwBoxAutoFmt& rNew, sal_uInt8 nPos );
const SwBoxAutoFmt& GetBoxFmt( sal_uInt8 nPos ) const;
void SetName( const String& rNew ) { aName = rNew; nStrResId = USHRT_MAX; }
const String& GetName() const { return aName; }
enum UpdateFlags { UPDATE_CHAR = 1, UPDATE_BOX = 2, UPDATE_ALL = 3 };
SwBoxAutoFmt& UpdateFromSet( sal_uInt8 nPos, const SfxItemSet& rSet,
UpdateFlags eFlags, SvNumberFormatter* );
void UpdateToSet( sal_uInt8 nPos, SfxItemSet& rSet, UpdateFlags eFlags,
SvNumberFormatter* ) const ;
sal_Bool IsFont() const { return bInclFont; }
sal_Bool IsJustify() const { return bInclJustify; }
sal_Bool IsFrame() const { return bInclFrame; }
sal_Bool IsBackground() const { return bInclBackground; }
sal_Bool IsValueFormat() const { return bInclValueFormat; }
void SetFont( const sal_Bool bNew ) { bInclFont = bNew; }
void SetJustify( const sal_Bool bNew ) { bInclJustify = bNew; }
void SetFrame( const sal_Bool bNew ) { bInclFrame = bNew; }
void SetBackground( const sal_Bool bNew ) { bInclBackground = bNew; }
void SetValueFormat( const sal_Bool bNew ) { bInclValueFormat = bNew; }
void SetWidthHeight( const sal_Bool bNew ) { bInclWidthHeight = bNew; }
sal_Bool Load( SvStream& rStream, const SwAfVersions& );
sal_Bool Save( SvStream& rStream ) const;
#ifdef READ_OLDVERS
// Load old versions.
sal_Bool LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] );
#endif
};
typedef SwTableAutoFmt* SwTableAutoFmtPtr ;
SV_DECL_PTRARR_DEL( _SwTableAutoFmtTbl, SwTableAutoFmtPtr, 1, 5 )
class SW_DLLPUBLIC SwTableAutoFmtTbl : public _SwTableAutoFmtTbl
{
SW_DLLPRIVATE sal_Bool Load( SvStream& rStream );
SW_DLLPRIVATE sal_Bool Save( SvStream& rStream ) const;
public:
SwTableAutoFmtTbl();
sal_Bool Load();
sal_Bool Save() const;
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */