389 lines
15 KiB
C++
389 lines
15 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 _POOLFMT_HXX
|
|
#define _POOLFMT_HXX
|
|
|
|
#include <limits.h>
|
|
#include <tools/solar.h>
|
|
#include <editeng/frmdir.hxx>
|
|
|
|
// POOLCOLL-IDs:
|
|
// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
// !User! Range ! 0 ! Offset !
|
|
// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
//
|
|
// Range: 1 - text
|
|
// 2 - lists
|
|
// 3 - special ranges
|
|
// 4 - indices
|
|
// 5 - chapter / document
|
|
// 6 - HTML-styles.
|
|
|
|
// Other IDs:
|
|
// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
// !User! Range ! 1 ! Offset !
|
|
// +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
|
// Range: 0 - character styles
|
|
// 1 - frame styles
|
|
// 2 - page styles
|
|
// 3 - paragraph styles (?)
|
|
// 4 - graphics styles (?)
|
|
|
|
// For all IDs we have:
|
|
// Origin: 0 -pool
|
|
// 1 -user
|
|
// Offset: within the group
|
|
|
|
|
|
// Attention: New IDs can only be added to the ends of the groups.
|
|
// These IDs are read and written by the Reader/Writer.
|
|
// They are only aware of the Offset to Start.
|
|
|
|
// Mask for recognition of COLLPOOL-IDs:
|
|
|
|
const sal_uInt16 POOLGRP_NOCOLLID = (1 << 10);
|
|
|
|
// POLLCOLL-groups:
|
|
|
|
const sal_uInt16 USER_FMT = (1 << 15);
|
|
const sal_uInt16 POOL_FMT = (0 << 15);
|
|
|
|
const sal_uInt16 COLL_TEXT_BITS = (1 << 11);
|
|
const sal_uInt16 COLL_LISTS_BITS = (2 << 11);
|
|
const sal_uInt16 COLL_EXTRA_BITS = (3 << 11);
|
|
const sal_uInt16 COLL_REGISTER_BITS = (4 << 11);
|
|
const sal_uInt16 COLL_DOC_BITS = (5 << 11);
|
|
const sal_uInt16 COLL_HTML_BITS = (6 << 11);
|
|
const sal_uInt16 COLL_GET_RANGE_BITS = (15 << 11);
|
|
|
|
// Other groups:
|
|
|
|
const sal_uInt16 POOLGRP_CHARFMT = (0 << 11) + POOLGRP_NOCOLLID;
|
|
const sal_uInt16 POOLGRP_FRAMEFMT = (1 << 11) + POOLGRP_NOCOLLID;
|
|
const sal_uInt16 POOLGRP_PAGEDESC = (2 << 11) + POOLGRP_NOCOLLID;
|
|
const sal_uInt16 POOLGRP_NUMRULE = (3 << 11) + POOLGRP_NOCOLLID;
|
|
|
|
// Recognize whether it's a user defined style or not:
|
|
const sal_uInt16 POOL_IDUSER_FMT =
|
|
USHRT_MAX & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID);
|
|
|
|
inline sal_Bool IsPoolUserFmt( sal_uInt16 nId )
|
|
{
|
|
return POOL_IDUSER_FMT ==
|
|
(nId & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID))
|
|
? sal_True : sal_False;
|
|
}
|
|
|
|
|
|
|
|
// IDs for the ranges.
|
|
enum RES_POOLFMT
|
|
{
|
|
RES_POOLFMT_BEGIN = 1,
|
|
RES_POOL_CHRFMT = RES_POOLFMT_BEGIN,
|
|
RES_POOL_FRMFMT,
|
|
RES_POOL_TXTCOLL,
|
|
RES_POOL_PAGEFMT,
|
|
|
|
RES_POOL_PARFMT,
|
|
RES_POOL_GRFFMT,
|
|
RES_POOLFMT_END
|
|
};
|
|
|
|
// Ranges for the IDs of the formats.
|
|
|
|
// IDs for character styles.
|
|
enum RES_POOL_CHRFMT_TYPE
|
|
{
|
|
RES_POOLCHR_BEGIN = POOLGRP_CHARFMT,
|
|
RES_POOLCHR_NORMAL_BEGIN = POOLGRP_CHARFMT,
|
|
|
|
RES_POOLCHR_FOOTNOTE = RES_POOLCHR_NORMAL_BEGIN, // Footnote.
|
|
RES_POOLCHR_PAGENO, // Pages/field.
|
|
RES_POOLCHR_LABEL, // Label.
|
|
RES_POOLCHR_DROPCAPS, // Dropcaps.
|
|
RES_POOLCHR_NUM_LEVEL, // Numbering symbols
|
|
RES_POOLCHR_BUL_LEVEL, // Bullets.
|
|
|
|
RES_POOLCHR_INET_NORMAL, // Internet normal.
|
|
RES_POOLCHR_INET_VISIT, // Internet visited.
|
|
RES_POOLCHR_JUMPEDIT, // Placeholder.
|
|
RES_POOLCHR_TOXJUMP, // Jump from index.
|
|
RES_POOLCHR_ENDNOTE, // Endnote.
|
|
RES_POOLCHR_LINENUM, // Line numbering.
|
|
RES_POOLCHR_IDX_MAIN_ENTRY, // Main entry in indices.
|
|
RES_POOLCHR_FOOTNOTE_ANCHOR, // Footnote anchor.
|
|
RES_POOLCHR_ENDNOTE_ANCHOR, // Endnote anchor.
|
|
RES_POOLCHR_RUBYTEXT, // Rubytext.
|
|
RES_POOLCHR_VERT_NUM, // Vertical numbering symbols.
|
|
|
|
RES_POOLCHR_NORMAL_END,
|
|
|
|
RES_POOLCHR_HTML_BEGIN = RES_POOLCHR_BEGIN + 50, // HTML-styles.
|
|
RES_POOLCHR_HTML_EMPHASIS= RES_POOLCHR_HTML_BEGIN,
|
|
RES_POOLCHR_HTML_CITIATION,
|
|
RES_POOLCHR_HTML_STRONG,
|
|
RES_POOLCHR_HTML_CODE,
|
|
RES_POOLCHR_HTML_SAMPLE,
|
|
RES_POOLCHR_HTML_KEYBOARD,
|
|
RES_POOLCHR_HTML_VARIABLE,
|
|
RES_POOLCHR_HTML_DEFINSTANCE,
|
|
RES_POOLCHR_HTML_TELETYPE,
|
|
RES_POOLCHR_HTML_END,
|
|
|
|
RES_POOLCHR_END = RES_POOLCHR_HTML_END
|
|
};
|
|
|
|
|
|
// IDs for frame styles.
|
|
enum RES_POOL_FRMFMT_TYPE
|
|
{
|
|
RES_POOLFRM_BEGIN = POOLGRP_FRAMEFMT,
|
|
|
|
RES_POOLFRM_FRAME = RES_POOLFRM_BEGIN, // Frame.
|
|
RES_POOLFRM_GRAPHIC, // Graphics.
|
|
RES_POOLFRM_OLE, // OLE.
|
|
RES_POOLFRM_FORMEL, // Formula.
|
|
RES_POOLFRM_MARGINAL, // Marginalia.
|
|
RES_POOLFRM_WATERSIGN, // Watermark.
|
|
RES_POOLFRM_LABEL, // Labels.
|
|
|
|
RES_POOLFRM_END
|
|
};
|
|
|
|
// IDs for page styles.
|
|
enum RES_POOL_PAGEFMT_TYPE
|
|
{
|
|
RES_POOLPAGE_BEGIN = POOLGRP_PAGEDESC,
|
|
|
|
RES_POOLPAGE_STANDARD = RES_POOLPAGE_BEGIN, // Standard page.
|
|
RES_POOLPAGE_FIRST, // First page.
|
|
RES_POOLPAGE_LEFT, // Left page.
|
|
RES_POOLPAGE_RIGHT, // Right page.
|
|
RES_POOLPAGE_JAKET, // Envelope.
|
|
RES_POOLPAGE_REGISTER, // Index.
|
|
RES_POOLPAGE_HTML, // HTML.
|
|
RES_POOLPAGE_FOOTNOTE, // Footnote at end of document.
|
|
RES_POOLPAGE_ENDNOTE, // Endnote page.
|
|
RES_POOLPAGE_LANDSCAPE, // Landscape page style.
|
|
|
|
RES_POOLPAGE_END
|
|
};
|
|
|
|
// IDs for list styles.
|
|
enum RES_POOL_NUMRULE_TYPE
|
|
{
|
|
RES_POOLNUMRULE_BEGIN = POOLGRP_NUMRULE,
|
|
RES_POOLNUMRULE_NUM1 = RES_POOLNUMRULE_BEGIN, // NumRule Numbering 1.
|
|
RES_POOLNUMRULE_NUM2, // NumRule Numbering 2.
|
|
RES_POOLNUMRULE_NUM3, // NumRule Numbering 3.
|
|
RES_POOLNUMRULE_NUM4, // NumRule Numbering 4.
|
|
RES_POOLNUMRULE_NUM5, // NumRule Numbering 5.
|
|
RES_POOLNUMRULE_BUL1, // NumRule Bullets 1.
|
|
RES_POOLNUMRULE_BUL2, // NumRule Bullets 2.
|
|
RES_POOLNUMRULE_BUL3, // NumRule Bullets 3.
|
|
RES_POOLNUMRULE_BUL4, // NumRule Bullets 4.
|
|
RES_POOLNUMRULE_BUL5, // NumRule Bullets 5.
|
|
RES_POOLNUMRULE_END
|
|
};
|
|
|
|
// IDs for paragraph styles.
|
|
enum RES_POOL_COLLFMT_TYPE
|
|
{
|
|
// Group text.
|
|
RES_POOLCOLL_TEXT_BEGIN = COLL_TEXT_BITS,
|
|
|
|
RES_POOLCOLL_STANDARD = RES_POOLCOLL_TEXT_BEGIN, // Standard.
|
|
RES_POOLCOLL_TEXT, // Text body.
|
|
RES_POOLCOLL_TEXT_IDENT, // Text body first line indent.
|
|
RES_POOLCOLL_TEXT_NEGIDENT, // Text body hanging indent.
|
|
RES_POOLCOLL_TEXT_MOVE, // Text body indent.
|
|
RES_POOLCOLL_GREETING, // Complimentary close.
|
|
RES_POOLCOLL_SIGNATURE, // Signature.
|
|
RES_POOLCOLL_CONFRONTATION, // List indent.
|
|
RES_POOLCOLL_MARGINAL, // Marginalia.
|
|
|
|
// Subgroup headings.
|
|
RES_POOLCOLL_HEADLINE_BASE, // Base heading.
|
|
RES_POOLCOLL_HEADLINE1, // Heading 1.
|
|
RES_POOLCOLL_HEADLINE2, // Heading 2.
|
|
RES_POOLCOLL_HEADLINE3, // Heading 3.
|
|
RES_POOLCOLL_HEADLINE4, // Heading 4.
|
|
RES_POOLCOLL_HEADLINE5, // Heading 5.
|
|
RES_POOLCOLL_HEADLINE6, // Heading 6.
|
|
RES_POOLCOLL_HEADLINE7, // Heading 7.
|
|
RES_POOLCOLL_HEADLINE8, // Heading 8.
|
|
RES_POOLCOLL_HEADLINE9, // Heading 9.
|
|
RES_POOLCOLL_HEADLINE10, // Heading 10.
|
|
|
|
RES_POOLCOLL_TEXT_END,
|
|
|
|
|
|
// Group lists.
|
|
RES_POOLCOLL_LISTS_BEGIN = COLL_LISTS_BITS,
|
|
|
|
RES_POOLCOLL_NUMBUL_BASE = RES_POOLCOLL_LISTS_BEGIN, // Base list.
|
|
RES_POOLCOLL_LISTS_END,
|
|
|
|
|
|
// Special ranges.
|
|
RES_POOLCOLL_EXTRA_BEGIN = COLL_EXTRA_BITS,
|
|
|
|
// Subgroup header.
|
|
RES_POOLCOLL_HEADER = RES_POOLCOLL_EXTRA_BEGIN, // Header Left&Right.
|
|
RES_POOLCOLL_HEADERL, // Header Left.
|
|
RES_POOLCOLL_HEADERR, // Header Right.
|
|
|
|
// Subgroup footer.
|
|
RES_POOLCOLL_FOOTER, // Footer Left&Right.
|
|
RES_POOLCOLL_FOOTERL, // Footer Left.
|
|
RES_POOLCOLL_FOOTERR, // Footer Right.
|
|
|
|
// Subgroup table.
|
|
RES_POOLCOLL_TABLE, // Table of Contents.
|
|
RES_POOLCOLL_TABLE_HDLN, // Table of Contents - heading.
|
|
|
|
|
|
// Subgroup labels.
|
|
RES_POOLCOLL_LABEL, // Base labels.
|
|
RES_POOLCOLL_LABEL_ABB, // Label illustration.
|
|
RES_POOLCOLL_LABEL_TABLE, // Label table.
|
|
RES_POOLCOLL_LABEL_FRAME, // Label frame.
|
|
|
|
// Other stuff.
|
|
RES_POOLCOLL_FRAME, // Frames.
|
|
RES_POOLCOLL_FOOTNOTE, // Footnotes.
|
|
RES_POOLCOLL_JAKETADRESS, // Addressee.
|
|
RES_POOLCOLL_SENDADRESS, // Sender.
|
|
RES_POOLCOLL_ENDNOTE, // Endnotes.
|
|
|
|
RES_POOLCOLL_LABEL_DRAWING, // Label drawing objects.
|
|
RES_POOLCOLL_EXTRA_END,
|
|
|
|
|
|
// Group indices.
|
|
RES_POOLCOLL_REGISTER_BEGIN = COLL_REGISTER_BITS,
|
|
|
|
RES_POOLCOLL_REGISTER_BASE = RES_POOLCOLL_REGISTER_BEGIN, // Base index.
|
|
|
|
// Subgroup index tables.
|
|
RES_POOLCOLL_TOX_IDXH, // Header.
|
|
RES_POOLCOLL_TOX_IDX1, // 1st level.
|
|
RES_POOLCOLL_TOX_IDX2, // 2nd level.
|
|
RES_POOLCOLL_TOX_IDX3, // 3rd level.
|
|
RES_POOLCOLL_TOX_IDXBREAK, // Separator.
|
|
|
|
// Subgroup table of contents.
|
|
RES_POOLCOLL_TOX_CNTNTH, // Header.
|
|
RES_POOLCOLL_TOX_CNTNT1, // Content 1st level.
|
|
RES_POOLCOLL_TOX_CNTNT2, // Content 2nd level.
|
|
RES_POOLCOLL_TOX_CNTNT3, // Content 3rd level.
|
|
RES_POOLCOLL_TOX_CNTNT4, // Content 4th level.
|
|
RES_POOLCOLL_TOX_CNTNT5, // Content 5th level.
|
|
|
|
|
|
// Subgroup user indices.
|
|
RES_POOLCOLL_TOX_USERH, // Header.
|
|
RES_POOLCOLL_TOX_USER1, // 1st level.
|
|
RES_POOLCOLL_TOX_USER2, // 2nd level.
|
|
RES_POOLCOLL_TOX_USER3, // 3rd level.
|
|
RES_POOLCOLL_TOX_USER4, // 4th level.
|
|
RES_POOLCOLL_TOX_USER5, // 5th level.
|
|
|
|
|
|
RES_POOLCOLL_TOX_CNTNT6, // Content 6th level.
|
|
RES_POOLCOLL_TOX_CNTNT7, // Content 7th level.
|
|
RES_POOLCOLL_TOX_CNTNT8, // Content 8th level.
|
|
RES_POOLCOLL_TOX_CNTNT9, // Content 9th level.
|
|
RES_POOLCOLL_TOX_CNTNT10, // Content 10th level.
|
|
|
|
// illustrations index.
|
|
RES_POOLCOLL_TOX_ILLUSH, // Illustrations header.
|
|
RES_POOLCOLL_TOX_ILLUS1, // Illustrations all levels.
|
|
|
|
// object index.
|
|
RES_POOLCOLL_TOX_OBJECTH, // Objects header.
|
|
RES_POOLCOLL_TOX_OBJECT1, // Objects all levels.
|
|
|
|
// tables index.
|
|
RES_POOLCOLL_TOX_TABLESH, // Tables header.
|
|
RES_POOLCOLL_TOX_TABLES1, // Tables all levels.
|
|
|
|
// index of authorities.
|
|
RES_POOLCOLL_TOX_AUTHORITIESH, // Authorities header.
|
|
RES_POOLCOLL_TOX_AUTHORITIES1, // Authorities all levels.
|
|
|
|
// user index 6..10.
|
|
RES_POOLCOLL_TOX_USER6, // 6th level.
|
|
RES_POOLCOLL_TOX_USER7, // 7th level.
|
|
RES_POOLCOLL_TOX_USER8, // 8th level.
|
|
RES_POOLCOLL_TOX_USER9, // 9th level.
|
|
RES_POOLCOLL_TOX_USER10, // 10th level.
|
|
|
|
RES_POOLCOLL_REGISTER_END,
|
|
|
|
|
|
// Group chapter / document.
|
|
RES_POOLCOLL_DOC_BEGIN = COLL_DOC_BITS,
|
|
|
|
RES_POOLCOLL_DOC_TITEL = RES_POOLCOLL_DOC_BEGIN, // Doc. titel.
|
|
RES_POOLCOLL_DOC_SUBTITEL, // Doc. subtitel.
|
|
|
|
RES_POOLCOLL_DOC_END,
|
|
|
|
// Group HTML-styles.
|
|
RES_POOLCOLL_HTML_BEGIN = COLL_HTML_BITS,
|
|
|
|
RES_POOLCOLL_HTML_BLOCKQUOTE = RES_POOLCOLL_HTML_BEGIN,
|
|
RES_POOLCOLL_HTML_PRE,
|
|
RES_POOLCOLL_HTML_HR,
|
|
RES_POOLCOLL_HTML_DD,
|
|
RES_POOLCOLL_HTML_DT,
|
|
|
|
RES_POOLCOLL_HTML_END
|
|
|
|
// End of text styles collection.
|
|
};
|
|
|
|
|
|
// Query defined parent of a POOL-ID
|
|
// Returns 0 if standard
|
|
// USHRT_MAX if no parent
|
|
// the parent in all other cases.
|
|
sal_uInt16 GetPoolParent( sal_uInt16 nId );
|
|
|
|
SvxFrameDirection GetDefaultFrameDirection(sal_uLong nLanguage);
|
|
|
|
inline sal_Bool IsConditionalByPoolId(sal_uInt16 nId)
|
|
{
|
|
return RES_POOLCOLL_TEXT == nId;
|
|
}
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|