diff options
Diffstat (limited to 'lotuswordpro/source/filter/lwplayout.hxx')
-rw-r--r-- | lotuswordpro/source/filter/lwplayout.hxx | 461 |
1 files changed, 461 insertions, 0 deletions
diff --git a/lotuswordpro/source/filter/lwplayout.hxx b/lotuswordpro/source/filter/lwplayout.hxx new file mode 100644 index 000000000000..722274c9b016 --- /dev/null +++ b/lotuswordpro/source/filter/lwplayout.hxx @@ -0,0 +1,461 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * 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. + * + * 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. + * + * 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 + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: IBM Corporation + * + * Copyright: 2008 by IBM Corporation + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +/************************************************************************* + * @file + * For LWP filter architecture prototype + ************************************************************************/ +/************************************************************************* + * Change History + Jan 2005 Created + ************************************************************************/ + +#ifndef _LWPLAYOUT_HXX +#define _LWPLAYOUT_HXX + +#include "lwpheader.hxx" +#include "lwpobj.hxx" +#include "lwpobjhdr.hxx" +#include "lwpobjstrm.hxx" +#include "lwpobjid.hxx" +#include "lwpdlvlist.hxx" +#include "lwpfilehdr.hxx" + +#include "lwplayoutdef.hxx" +#include "xfilter/xfdefs.hxx" +#include "xfilter/xfpagemaster.hxx" +#include "xfilter/xfcolumns.hxx" +#include "xfilter/xfborders.hxx" +#include "xfilter/xfframestyle.hxx" +#include "xfilter/xfframe.hxx" +#include "xfilter/xfbgimage.hxx" +#include "lwpusewhen.hxx" + +#define ANCHOR_HEIGHT 0x120000 +#define FIRST_LAYOUTPAGENO 0x0001 +#define LAST_LAYOUTPAGENO 0xffff + +#define LAY_BUOYFLOAT 0x01 +#define LAY_BUOYNEUTRAL 0x02 +#define LAY_BUOYSINK 0x03 +#define LAY_BUOYLAYER 0x80 + +class LwpPara; +class LwpVirtualLayout : public LwpDLNFPVList +{ +public: + LwpVirtualLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpVirtualLayout(){} + virtual sal_Bool MarginsSameAsParent(); + inline virtual sal_uInt16 GetNumCols(){return 1;} + virtual double GetColWidth(sal_uInt16 nIndex); + virtual double GetColGap(sal_uInt16 nIndex); + virtual double GetMarginsValue(const sal_uInt8& /*nWhichSide*/){return 0;} + virtual double GetExtMarginsValue(const sal_uInt8& /*nWhichSide*/){return 0;} + virtual sal_Bool IsAutoGrow(){ return sal_False;} + virtual sal_Bool IsAutoGrowUp(){ return sal_False;} + virtual sal_Bool IsAutoGrowDown(){ return sal_False;} + virtual sal_Bool IsAutoGrowLeft(){ return sal_False;} + virtual sal_Bool IsAutoGrowRight(){ return sal_False;} + virtual sal_Bool IsFitGraphic(); + virtual sal_Bool IsAutoGrowWidth(); + virtual sal_Bool IsInlineToMargin(); + virtual sal_uInt8 GetContentOrientation(){ return TEXT_ORIENT_LRTB;} + virtual sal_Bool HonorProtection(); + virtual sal_Bool IsProtected(); + virtual sal_Bool HasProtection(); + virtual OUString GetStyleName(){ return m_StyleName;} + virtual sal_Bool IsComplex(); + virtual sal_Bool IsAnchorPage(){ return sal_False;} + virtual sal_Bool IsAnchorFrame(){ return sal_False;} + virtual sal_Bool IsAnchorCell(){ return sal_False;} + virtual sal_Bool IsPage(); + virtual sal_Bool IsHeader(); + virtual sal_Bool IsFooter(); + virtual sal_Bool IsFrame(); + virtual sal_Bool IsCell(); + virtual sal_Bool IsSuperTable(); + virtual sal_Bool IsGroupHead(); + virtual sal_uInt8 GetRelativeType(); + virtual sal_Bool IsRelativeAnchored(); + virtual LwpUseWhen* GetUseWhen(); + virtual LwpUseWhen* VirtualGetUseWhen(){ return NULL;} + virtual sal_Bool IsUseOnAllPages(){ return sal_False;} + virtual sal_Bool IsUseOnAllEvenPages(){ return sal_False;} + virtual sal_Bool IsUseOnAllOddPages(){ return sal_False;} + virtual sal_Bool IsUseOnPage(){ return sal_False;} + virtual sal_Int32 GetPageNumber(sal_uInt16 /*nLayoutNumber*/ = 0){ return -1;} + virtual sal_Bool IsMinimumHeight(); + virtual sal_Bool IsForWaterMark(){ return sal_False;} + virtual LwpPara* GetLastParaOfPreviousStory() { return NULL; } + virtual LwpVirtualLayout* GetParentLayout(); + virtual LwpVirtualLayout* GetContainerLayout(){ return NULL;} + virtual void RegisterChildStyle(); + virtual sal_Bool NoContentReference(); + virtual sal_Bool IsStyleLayout(); + virtual enumXFAlignType GetVerticalAlignmentType() + { + if (m_nAttributes & STYLE_CENTEREDVERTICALLY) + { + return enumXFAlignMiddle; + } + else if (m_nAttributes & STYLE_BOTTOMALIGNED) + { + return enumXFAlignBottom; + } + return enumXFAlignTop; + }; + virtual void SetStyleName(const OUString & str){ m_StyleName = str;} + virtual double GetWidth(){return -1;} + + //Check whether there are contents in the layout + virtual sal_Bool HasContent(){return sal_False;} + //End by +protected: + void Read(); +protected: + sal_uInt32 m_nAttributes; + sal_uInt32 m_nAttributes2; + sal_uInt32 m_nAttributes3; + sal_uInt32 m_nOverrideFlag; + sal_uInt16 m_nDirection; + sal_uInt16 m_nEditorID; + LwpObjectID m_NextEnumerated; + LwpObjectID m_PreviousEnumerated; + OUString m_StyleName; + enum LWP_LAYOUT_TYPE + { + LWP_VIRTUAL_LAYOUT, + LWP_HEAD_LAYOUT, + LWP_PAGE_LAYOUT, + LWP_HEADER_LAYOUT, + LWP_FOOTER_LAYOUT, + LWP_FRAME_LAYOUT, + LWP_SUPERTABLE_LAYOUT, + LWP_TABLE_LAYOUT, + LWP_ROW_LAYOUT, + LWP_COLUMN_LAYOUT, + LWP_CELL_LAYOUT, + LWP_CONNECTED_CELL_LAYOUT, + LWP_HIDDEN_CELL_LAYOUT, + LWP_TABLE_HEADING_LAYOUT, + LWP_ROW_HEADING_LAYOUT, + LWP_DROPCAP_LAYOUT, + LWP_GROUP_LAYOUT, + LWP_TOC_SUPERTABLE_LAYOUT, + LWP_FOOTNOTE_LAYOUT, + LWP_FOOTNOTE_ROW_LAYOUT, + LWP_FOOTNOTE_CELL_LAYOUT, + LWP_ENDNOTE_LAYOUT, + LWP_ENDNOTE_SUPERTABLE_LAYOUT, + LWP_FOOTNOTE_SUPERTABLE_LAYOUT, + LWP_NOTE_LAYOUT, + LWP_NOTEHEADER_LAYOUT, + LWP_NOTETEXT_LAYOUT, + LWP_VIEWPORT_LAYOUT + }; + enum LayoutDirection + { + LAY_USEDIRECTION = 0x01, + LAY_AUTOGROW = 0x02, + LAY_AUTOSIZE = 0x04, + LAY_TOCONTAINER = 0x08, + LAY_DIRALLBITS = 0x0f + }; + enum {SHIFT_UP = 0, SHIFT_DOWN = 4, SHIFT_LEFT = 8, SHIFT_RIGHT =12}; +public: + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_VIRTUAL_LAYOUT;} + virtual LwpVirtualLayout* FindChildByType(LWP_LAYOUT_TYPE eType); +}; + +class LwpAssociatedLayouts +{ +public: + LwpAssociatedLayouts(){} + //LwpAssociatedLayouts(LwpObjectStream* pStrm){Read(pStrm);} +public: + void Read(LwpObjectStream* pStrm); + LwpObjectID* GetOnlyLayout(){return &m_OnlyLayout;} + LwpDLVListHeadTail* GetLayouts(){return &m_Layouts;} + LwpVirtualLayout* GetLayout(LwpVirtualLayout* pStartLayout); +protected: + LwpObjectID m_OnlyLayout; //LwpVirtualLayout + LwpDLVListHeadTail m_Layouts; +}; + +class LwpHeadLayout : public LwpVirtualLayout +{ +public: + LwpHeadLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm); + virtual ~LwpHeadLayout(){} + void RegisterStyle(); + LwpVirtualLayout* FindEnSuperTableLayout(); +protected: + void Read(); + virtual LWP_LAYOUT_TYPE GetLayoutType () { return LWP_HEAD_LAYOUT;} +}; + +//add by , 01/20/2005 +class LwpLayoutStyle +{ +public: + LwpLayoutStyle(); + virtual ~LwpLayoutStyle(); + void Read(LwpObjectStream* pStrm); +private: + sal_uInt32 m_nStyleDefinition; + LwpAtomHolder* m_pDescription; + sal_uInt16 m_nKey; +}; + +class LwpLayoutMisc +{ +public: + LwpLayoutMisc(); + virtual ~LwpLayoutMisc(); + void Read(LwpObjectStream* pStrm); +private: + sal_Int32 m_nGridDistance; + sal_uInt16 m_nGridType; + LwpAtomHolder* m_pContentStyle; +}; +//end add + +#include "lwplaypiece.hxx" + +class LwpMiddleLayout : public LwpVirtualLayout +{ +public: + LwpMiddleLayout( LwpObjectHeader &objHdr, LwpSvStream* pStrm ); + virtual ~LwpMiddleLayout(); + virtual BOOL MarginsSameAsParent(); + virtual double GetMarginsValue(const sal_uInt8& nWhichSide); + virtual double GetExtMarginsValue(const sal_uInt8& nWhichSide); + LwpLayoutGeometry* GetGeometry(); + double GetGeometryHeight(); + double GetGeometryWidth(); + LwpBorderStuff* GetBorderStuff(); + LwpBackgroundStuff* GetBackgroundStuff(); + enumXFTextDir GetTextDirection(); + XFBorders* GetXFBorders(); + LwpColor* GetBackColor(); + virtual sal_Bool IsAutoGrow(); + virtual sal_Bool IsAutoGrowUp(); + virtual sal_Bool IsAutoGrowDown(); + virtual sal_Bool IsAutoGrowLeft(); + virtual sal_Bool IsAutoGrowRight(); + virtual sal_uInt8 GetContentOrientation(); + virtual sal_Bool HonorProtection(); + virtual sal_Bool IsProtected(); + virtual LwpVirtualLayout* GetWaterMarkLayout(); + XFBGImage* GetXFBGImage(); + virtual sal_Bool GetUsePrinterSettings(); + + LwpLayoutScale* GetLayoutScale(){return static_cast<LwpLayoutScale*>(m_LayScale.obj());} + sal_uInt16 GetScaleMode(void); + void SetScaleMode(sal_uInt16 nVal); + sal_uInt16 GetScaleTile(void); + void SetScaleTile(sal_uInt16 nVal); + sal_uInt16 GetScaleCenter(void); + void SetScaleCenter(sal_uInt16 nVal); + sal_uInt32 GetScalePercentage(void); + void SetScalePercentage(sal_uInt32 nVal); + double GetScaleWidth(void); + void SetScaleWidth(double fVal); + double GetScaleHeight(void); + void SetScaleHeight(double fVal); + + sal_Bool CanSizeRight(void); + virtual double GetWidth(); + virtual sal_Int32 GetMinimumWidth(); + sal_Bool IsSizeRightToContent(void); + sal_Bool IsSizeRightToContainer(void); + sal_Int32 DetermineWidth(); + virtual double GetHeight(); + virtual LwpPoint GetOrigin(); + + // added by , 06/01/2004 + sal_Bool IsPatternFill(); + XFBGImage* GetFillPattern(); + // end add + + + //Check whether there are contents in the layout + virtual sal_Bool HasContent(); + //End by + +protected: + void Read(); +protected: + enum + { + DISK_GOT_STYLE_STUFF = 0x01, + DISK_GOT_MISC_STUFF = 0x02 + }; + + LwpObjectID m_Content; + LwpObjectID m_BasedOnStyle; + + // 01/20/2005 + LwpObjectID m_TabPiece; + LwpLayoutStyle* m_pStyleStuff; + LwpLayoutMisc* m_pMiscStuff; + LwpObjectID m_LayGeometry; + LwpObjectID m_LayScale; + LwpObjectID m_LayMargins; + LwpObjectID m_LayBorderStuff; + LwpObjectID m_LayBackgroundStuff; + LwpObjectID m_LayExtBorderStuff; + //end +public: + LwpObjectID* GetContent(){return &m_Content;} + LwpTabOverride* GetTabOverride(); +}; + +class LwpLayout : public LwpMiddleLayout +{ +public: + LwpLayout( LwpObjectHeader &objHdr, LwpSvStream* pStrm ); + virtual ~LwpLayout(); + XFColumns* GetXFColumns(); + XFColumnSep* GetColumnSep(); + LwpShadow* GetShadow(); + XFShadow* GetXFShadow(); +protected: + void Read(); +protected: + // 01/20/2005 + LwpUseWhen* m_pUseWhen; + LwpObjectID m_Positon; + LwpObjectID m_LayColumns; + LwpObjectID m_LayGutterStuff; + LwpObjectID m_LayJoinStuff; + LwpObjectID m_LayShadow; + LwpObjectID m_LayExtJoinStuff; + //end + +public: + LwpUseWhen* VirtualGetUseWhen(); + virtual sal_uInt16 GetNumCols(); + virtual double GetColWidth(sal_uInt16 nIndex); + virtual double GetColGap(sal_uInt16 nIndex); + virtual sal_uInt16 GetUsePage(); +public: + enum UseWhenType + { + StartWithinColume, + StartWithinPage, + StartOnNextPage, + StartOnOddPage, + StartOnEvenPage + }; +public: + virtual UseWhenType GetUseWhenType(); + virtual sal_Bool IsUseOnAllPages(); + virtual sal_Bool IsUseOnAllEvenPages(); + virtual sal_Bool IsUseOnAllOddPages(); + virtual sal_Bool IsUseOnPage(); + LwpObjectID* GetPosition(){ return &m_Positon;} + virtual LwpVirtualLayout* GetContainerLayout(); +}; + +class XFFont; +class LwpPlacableLayout : public LwpLayout +{ +public: + LwpPlacableLayout( LwpObjectHeader &objHdr, LwpSvStream* pStrm ); + virtual ~LwpPlacableLayout(); + virtual sal_uInt8 GetWrapType(); + virtual LwpLayoutRelativity* GetRelativityPiece(); + virtual sal_uInt8 GetRelativeType(); + sal_uInt8 GetRelativeFromWhere(); + LwpPoint GetRelativeDistance(); + sal_uInt8 GetTetherType(); + sal_uInt8 GetTetherWhere(); + virtual sal_Int32 GetBaseLineOffset(); + virtual sal_Bool IsAnchorPage(); + virtual sal_Bool IsAnchorFrame(); + virtual sal_Bool IsAnchorCell(); + virtual void XFConvertFrame(XFContentContainer* /*pCont*/, sal_Int32 /*nStart*/ = 0, sal_Int32 /*nEnd*/ = 0, sal_Bool /*bAll*/ = sal_False) {} + XFFont* GetFont(); + void SetFont(XFFont* pFont); + enum WrapType + { + LAY_WRAP_AROUND = 1, + LAY_NO_WRAP_BESIDE, + LAY_NO_WRAP_AROUND, + LAY_WRAP_LEFT, + LAY_WRAP_RIGHT, + //OLD_LAY_WRAP_RIGHT, + LAY_WRAP_BOTH, + LAY_WRAP_IRREG_BOTH, + LAY_WRAP_IRREG_LEFT, + LAY_WRAP_IRREG_RIGHT, + LAY_WRAP_IRREG_BIGGEST + }; +protected: + void Read(); +protected: + sal_uInt8 m_nWrapType; + sal_uInt8 m_nBuoyancy; + sal_Int32 m_nBaseLineOffset; + LwpAtomHolder m_Script; + LwpObjectID m_LayRelativity; + sal_uInt16 m_nPageNumber;//for frame anchored to page + XFFont* m_pFont;//for frame position +}; +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |