summaryrefslogtreecommitdiff
path: root/lotuswordpro/source/filter/lwplayout.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'lotuswordpro/source/filter/lwplayout.hxx')
-rw-r--r--lotuswordpro/source/filter/lwplayout.hxx461
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: */