Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * The Contents of this file are made available subject to the terms of
5 : : * either of the following licenses
6 : : *
7 : : * - GNU Lesser General Public License Version 2.1
8 : : * - Sun Industry Standards Source License Version 1.1
9 : : *
10 : : * Sun Microsystems Inc., October, 2000
11 : : *
12 : : * GNU Lesser General Public License Version 2.1
13 : : * =============================================
14 : : * Copyright 2000 by Sun Microsystems, Inc.
15 : : * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 : : *
17 : : * This library is free software; you can redistribute it and/or
18 : : * modify it under the terms of the GNU Lesser General Public
19 : : * License version 2.1, as published by the Free Software Foundation.
20 : : *
21 : : * This library is distributed in the hope that it will be useful,
22 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : : * Lesser General Public License for more details.
25 : : *
26 : : * You should have received a copy of the GNU Lesser General Public
27 : : * License along with this library; if not, write to the Free Software
28 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
29 : : * MA 02111-1307 USA
30 : : *
31 : : *
32 : : * Sun Industry Standards Source License Version 1.1
33 : : * =================================================
34 : : * The contents of this file are subject to the Sun Industry Standards
35 : : * Source License Version 1.1 (the "License"); You may not use this file
36 : : * except in compliance with the License. You may obtain a copy of the
37 : : * License at http://www.openoffice.org/license.html.
38 : : *
39 : : * Software provided under this License is provided on an "AS IS" basis,
40 : : * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
41 : : * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
42 : : * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
43 : : * See the License for the specific provisions governing your rights and
44 : : * obligations concerning the Software.
45 : : *
46 : : * The Initial Developer of the Original Code is: IBM Corporation
47 : : *
48 : : * Copyright: 2008 by IBM Corporation
49 : : *
50 : : * All Rights Reserved.
51 : : *
52 : : * Contributor(s): _______________________________________
53 : : *
54 : : *
55 : : ************************************************************************/
56 : : /**
57 : : * @file
58 : : * footnote
59 : : */
60 : : /*************************************************************************
61 : : * Change History
62 : : Mar 2005 Created
63 : : ************************************************************************/
64 : : #ifndef _LWPFRIBFOOTNOTE_HXX_
65 : : #define _LWPFRIBFOOTNOTE_HXX_
66 : :
67 : : #include "lwpfrib.hxx"
68 : : #include "lwpobj.hxx"
69 : : #include "lwpsection.hxx"
70 : : #include "lwpborderstuff.hxx"
71 : :
72 : : // Footnote types are built up from these numbers
73 : : #define FN_MASK_ENDNOTE 0x80
74 : : #define FN_MASK_SEPARATE 0x40
75 : : #define FN_MASK_DEACTIVATED 0x20
76 : : #define FN_MASK_BASE (0x0f | FN_MASK_ENDNOTE)
77 : : #define FN_BASE_DONTCARE 0
78 : : #define FN_BASE_FOOTNOTE 1
79 : : #define FN_BASE_DIVISION (2 | FN_MASK_ENDNOTE)
80 : : #define FN_BASE_DIVISIONGROUP (3 | FN_MASK_ENDNOTE)
81 : : #define FN_BASE_DOCUMENT (4 | FN_MASK_ENDNOTE)
82 : :
83 : : // Here are the real footnote types
84 : : #define FN_DONTCARE (FN_BASE_DONTCARE)
85 : : #define FN_FOOTNOTE (FN_BASE_FOOTNOTE)
86 : : #define FN_DIVISION (FN_BASE_DIVISION)
87 : : #define FN_DIVISION_SEPARATE (FN_BASE_DIVISION | FN_MASK_SEPARATE)
88 : : #define FN_DIVISIONGROUP (FN_BASE_DIVISIONGROUP)
89 : : #define FN_DIVISIONGROUP_SEPARATE (FN_BASE_DIVISIONGROUP | FN_MASK_SEPARATE)
90 : : #define FN_DOCUMENT (FN_BASE_DOCUMENT)
91 : : #define FN_DOCUMENT_SEPARATE (FN_BASE_DOCUMENT | FN_MASK_SEPARATE)
92 : : #define STRID_FOOTCONTINUEDFROM "Continued from previous page..."
93 : : #define STRID_FOOTCONTINUEDON "Continued on next page..."
94 : : //Footnote table types, the string may have to do with local language
95 : : #define STR_DivisionFootnote "DivisionFootnote"
96 : : #define STR_DivisionEndnote "DivisionEndnote"
97 : : #define STR_DivisionGroupEndnote "DivisionGroupEndnote"
98 : : #define STR_DocumentEndnote "DocumentEndnote"
99 : :
100 : : /**
101 : : * @brief Footnote frib object
102 : : */
103 : : class LwpFootnote;
104 : : class LwpFribFootnote: public LwpFrib
105 : : {
106 : :
107 : : public:
108 : : LwpFribFootnote(LwpPara* pPara );
109 [ - + ]: 6 : ~LwpFribFootnote(){}
110 : : void Read(LwpObjectStream* pObjStrm, sal_uInt16 len);
111 : : void RegisterNewStyle();
112 : : void XFConvert(XFContentContainer* pCont);
113 : : LwpFootnote* GetFootnote();
114 : :
115 : : private:
116 : : LwpObjectID m_Footnote;
117 : : };
118 : :
119 : : /**
120 : : * @brief VO_FOOTNOTE object
121 : : */
122 : : class LwpEnSuperTableLayout;
123 : : class LwpCellLayout;
124 : : class LwpDocument;
125 : : class LwpTable;
126 : : class LwpFootnote : public LwpOrderedObject
127 : : {
128 : : public:
129 : : LwpFootnote(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
130 : : ~LwpFootnote();
131 : : void RegisterStyle();
132 : : void XFConvert(XFContentContainer * pCont);
133 : : protected:
134 : : void Read();
135 : : private:
136 : : sal_uInt16 m_nType;
137 : : sal_uInt16 m_nRow;
138 : : LwpObjectID m_Content;
139 : : public:
140 : 3 : sal_uInt16 GetType(){ return m_nType;}
141 : : private:
142 : : LwpCellLayout* GetCellLayout();
143 : : LwpDocument* GetFootnoteTableDivision();
144 : : LwpDocument* GetEndnoteDivision(LwpDocument* pPossible);
145 : : LwpEnSuperTableLayout* FindFootnoteTableLayout();
146 : : LwpContent* FindFootnoteContent();
147 : : OUString GetTableClass();
148 : : };
149 : :
150 : : /**
151 : : * @brief VO_FOOTNOTETABLE object
152 : : */
153 : : #include "lwptable.hxx"
154 : : class LwpFootnoteTable : public LwpTable
155 : : {
156 : : public:
157 : : LwpFootnoteTable(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
158 [ - + ]: 6 : ~LwpFootnoteTable(){}
159 : : protected:
160 : : void Read();
161 : : };
162 : :
163 : : /**
164 : : * @brief footnote number options information
165 : : */
166 : : class LwpFootnoteNumberOptions
167 : : {
168 : : public:
169 [ + - ]: 48 : LwpFootnoteNumberOptions(){}
170 [ + - ]: 48 : ~LwpFootnoteNumberOptions(){}
171 : : void Read(LwpObjectStream* pObjStrm);
172 : : private:
173 : : sal_uInt16 m_nFlag;
174 : : sal_uInt16 m_nStartingNumber;
175 : : LwpAtomHolder m_LeadingText;
176 : : LwpAtomHolder m_TrailingText;
177 : : public:
178 : : enum // for flag
179 : : {
180 : : RESET_DOCUMENT = 0x00, // i.e., never reset the numbering
181 : : RESET_PAGE = 0x01,
182 : : RESET_DIVISION = 0x02,
183 : : RESET_DIVISIONGROUP = 0x04,
184 : : RESET_MASK = (RESET_PAGE | RESET_DIVISION | RESET_DIVISIONGROUP |
185 : : RESET_DOCUMENT),
186 : : SUPERSCRIPT_REFERENCE = 0x10
187 : : };
188 : : public:
189 : 24 : sal_uInt16 GetStartingNumber(){ return m_nStartingNumber;}
190 : 24 : OUString GetLeadingText(){ return m_LeadingText.str();}
191 : 24 : OUString GetTrailingText(){ return m_TrailingText.str();}
192 : 24 : sal_uInt16 GetReset(){ return static_cast<sal_uInt16>(m_nFlag & RESET_MASK);}
193 : : };
194 : :
195 : : /**
196 : : * @brief footnote separator options information
197 : : */
198 : : class LwpFootnoteSeparatorOptions
199 : : {
200 : : public:
201 : 24 : LwpFootnoteSeparatorOptions(){}
202 : 24 : ~LwpFootnoteSeparatorOptions(){}
203 : : void Read(LwpObjectStream* pObjStrm);
204 : : private:
205 : : sal_uInt16 m_nFlag;
206 : : sal_uInt32 m_nLength;
207 : : sal_uInt32 m_nIndent;
208 : : sal_uInt32 m_nAbove;
209 : : sal_uInt32 m_nBelow;
210 : : LwpBorderStuff m_BorderStuff;
211 : : public:
212 : : enum // for flag
213 : : {
214 : : HAS_SEPARATOR = 0x01,
215 : : CUSTOM_LENGTH = 0x02
216 : : };
217 : : public:
218 : : sal_uInt32 GetFlag(){ return m_nFlag;}
219 : 0 : sal_uInt32 GetLength(){ return m_nLength;}
220 : 24 : sal_uInt32 GetIndent(){ return m_nIndent;}
221 : 24 : sal_uInt32 GetAbove(){ return m_nAbove;}
222 : 24 : sal_uInt32 GetBelow(){ return m_nBelow;}
223 : : LwpBorderStuff* GetBorderStuff(){ return &m_BorderStuff;}
224 : 24 : sal_Bool HasCustomLength(){ return (m_nFlag & CUSTOM_LENGTH) != 0;}
225 : 24 : sal_Bool HasSeparator(){ return (m_nFlag & HAS_SEPARATOR) != 0;}
226 : 24 : float GetTopBorderWidth(){ return m_BorderStuff.GetSideWidth(LwpBorderStuff::TOP);}
227 : 24 : LwpColor GetTopBorderColor(){ return m_BorderStuff.GetSideColor(LwpBorderStuff::TOP);}
228 : : };
229 : :
230 : : /**
231 : : * @brief VO_FOOTNOTEOPTS object
232 : : */
233 : : class LwpFootnoteOptions : public LwpObject
234 : : {
235 : : public:
236 : : LwpFootnoteOptions(LwpObjectHeader &objHdr, LwpSvStream* pStrm);
237 : : ~LwpFootnoteOptions();
238 : : void RegisterStyle();
239 : : protected:
240 : : void Read();
241 : : void RegisterFootnoteStyle();
242 : : void RegisterEndnoteStyle();
243 : : private:
244 : : sal_uInt16 m_nFlag;
245 : : LwpFootnoteNumberOptions m_FootnoteNumbering;
246 : : LwpFootnoteNumberOptions m_EndnoteDivisionNumbering;
247 : : LwpFootnoteNumberOptions m_EndnoteDivisionGroupNumbering;
248 : : LwpFootnoteNumberOptions m_EndnoteDocNumbering;
249 : : LwpFootnoteSeparatorOptions m_FootnoteSeparator;
250 : : LwpFootnoteSeparatorOptions m_FootnoteContinuedSeparator;
251 : : LwpAtomHolder m_ContinuedOnMessage;
252 : : LwpAtomHolder m_ContinuedFromMessage;
253 : : OUString m_strMasterPage;
254 : : enum
255 : : {
256 : : FO_REPEAT = 0x0001,
257 : : FO_CONTINUEFROM = 0x0002,
258 : : FO_CONTINUEON = 0x0004,
259 : : FO_ON_CENTER = 0x0008,
260 : : FO_ON_RIGHT = 0x0010,
261 : : FO_ON_ALIGNMASK = FO_ON_CENTER | FO_ON_RIGHT,
262 : : FO_FROM_CENTER = 0x0020,
263 : : FO_FROM_RIGHT = 0x0040,
264 : : FO_FROM_ALIGNMASK = FO_FROM_CENTER | FO_FROM_RIGHT
265 : : };
266 : :
267 : : public:
268 : : LwpFootnoteNumberOptions* GetFootnoteNumbering(){ return &m_FootnoteNumbering;}
269 : : LwpFootnoteNumberOptions* GetEndnoteDivisionNumbering(){ return &m_EndnoteDivisionNumbering;}
270 : : LwpFootnoteNumberOptions* GetEndnoteDivisionGroupNumbering(){ return &m_EndnoteDivisionGroupNumbering;}
271 : : LwpFootnoteNumberOptions* GetEndnoteDocNumbering(){ return &m_EndnoteDocNumbering;}
272 : 24 : LwpFootnoteSeparatorOptions* GetFootnoteSeparator(){ return &m_FootnoteSeparator;}
273 : : LwpFootnoteSeparatorOptions* GetFootnoteContinuedSeparator(){ return &m_FootnoteContinuedSeparator;}
274 : 12 : sal_Bool GetContinuedFrom(){ return ((m_nFlag & FO_CONTINUEFROM) != 0);}
275 : 12 : sal_Bool GetContinuedOn(){ return ((m_nFlag & FO_CONTINUEON) != 0);}
276 : : OUString GetContinuedOnMessage();
277 : : OUString GetContinuedFromMessage();
278 : 12 : void SetMasterPage(OUString strMasterPage){ m_strMasterPage = strMasterPage;}
279 : : };
280 : :
281 : : #endif
282 : :
283 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|