Files
DocumentServer-v-9.2.0/core/MsBinaryFile/DocFile/StyleSheetDescription.h
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

463 lines
10 KiB
C++

/*
* (c) Copyright Ascensio System SIA 2010-2023
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include "TablePropertyExceptions.h"
#include "ParagraphPropertyExceptions.h"
#include "CharacterPropertyExceptions.h"
namespace DocFileFormat
{
typedef enum _StyleKind
{
paragraph_style = 1,
character_style,
table_style,
numbering_style
} StyleKind;
static const wchar_t StyleKindMap[5][10] =
{
L"0",
L"paragraph",
L"character",
L"table",
L"numbering"
};
typedef enum _StyleIdentifier
{
Normal = 0,
Heading1,
Heading2,
Heading3,
Heading4,
Heading5,
Heading6,
Heading7,
Heading8,
Heading9,
Index1,
Index2,
Index3,
Index4,
Index5,
Index6,
Index7,
Index8,
Index9,
TOC1,
TOC2,
TOC3,
TOC4,
TOC5,
TOC6,
TOC7,
TOC8,
TOC9,
NormalIndent,
FootnoteText,
AnnotationText,
Header,
Footer,
IndexHeading,
Caption,
ToCaption,
EnvelopeAddress,
EnvelopeReturn,
FootnoteReference,
AnnotationReference,
LineNumber,
PageNumber,
EndnoteReference,
EndnoteText,
TableOfAuthoring,
Macro,
TOAHeading,
List,
ListBullet,
ListNumber,
List2,
List3,
List4,
List5,
ListBullet2,
ListBullet3,
ListBullet4,
ListBullet5,
ListNumber2,
ListNumber3,
ListNumber4,
ListNumber5,
Title,
Closing,
Signature,
NormalCharacter,
BodyText,
BodyTextIndent,
ListContinue,
ListContinue2,
ListContinue3,
ListContinue4,
ListContinue5,
MessageHeader,
Subtitle,
Salutation,
Date,
BodyText1I,
BodyText1I2,
NoteHeading,
BodyText2,
BodyText3,
BodyTextIndent2,
BodyTextIndent3,
BlockQuote,
Hyperlink,
FollowedHyperlink,
Strong,
Emphasis,
NavPane,
PlainText,
AutoSignature,
FormTop,
FormBottom,
HtmlNormal,
HtmlAcronym,
HtmlAddress,
HtmlCite,
HtmlCode,
HtmlDfn,
HtmlKbd,
HtmlPre,
htmlSamp,
HtmlTt,
HtmlVar,
TableNormal,
AnnotationSubject,
NormalList,
OutlineList1,
OutlineList2,
OutlineList3,
TableSimple,
TableSimple2,
TableSimple3,
TableClassic1,
TableClassic2,
TableClassic3,
TableClassic4,
TableColorful1,
TableColorful2,
TableColorful3,
TableColumns1,
TableColumns2,
TableColumns3,
TableColumns4,
TableColumns5,
TableGrid1,
TableGrid2,
TableGrid3,
TableGrid4,
TableGrid5,
TableGrid6,
TableGrid7,
TableGrid8,
TableList1,
TableList2,
TableList3,
TableList4,
TableList5,
TableList6,
TableList7,
TableList8,
Table3DFx1,
Table3DFx2,
Table3DFx3,
TableContemporary,
TableElegant,
TableProfessional,
TableSubtle1,
tableSubtle2,
TableWeb1,
TableWeb2,
TableWeb3,
Acetate,
TableGrid,
TableTheme,
Max,
User = 4094,
Null = 4095
} StyleIdentifier;
static const wchar_t StyleIdentifierMap[159][20] =
{
L"Normal",
L"Heading1",
L"Heading2",
L"Heading3",
L"Heading4",
L"Heading5",
L"Heading6",
L"Heading7",
L"Heading8",
L"Heading9",
L"Index1",
L"Index2",
L"Index3",
L"Index4",
L"Index5",
L"Index6",
L"Index7",
L"Index8",
L"Index9",
L"TOC1",
L"TOC2",
L"TOC3",
L"TOC4",
L"TOC5",
L"TOC6",
L"TOC7",
L"TOC8",
L"TOC9",
L"NormalIndent",
L"FootnoteText",
L"AnnotationText",
L"Header",
L"Footer",
L"IndexHeading",
L"Caption",
L"ToCaption",
L"EnvelopeAddress",
L"EnvelopeReturn",
L"FootnoteReference",
L"AnnotationReference",
L"LineNumber",
L"PageNumber",
L"EndnoteReference",
L"EndnoteText",
L"TableOfAuthoring",
L"Macro",
L"TOAHeading",
L"List",
L"ListBullet",
L"ListNumber",
L"List2",
L"List3",
L"List4",
L"List5",
L"ListBullet2",
L"ListBullet3",
L"ListBullet4",
L"ListBullet5",
L"ListNumber2",
L"ListNumber3",
L"ListNumber4",
L"ListNumber5",
L"Title",
L"Closing",
L"Signature",
L"NormalCharacter",
L"BodyText",
L"BodyTextIndent",
L"ListContinue",
L"ListContinue2",
L"ListContinue3",
L"ListContinue4",
L"ListContinue5",
L"MessageHeader",
L"Subtitle",
L"Salutation",
L"Date",
L"BodyText1I",
L"BodyText1I2",
L"NoteHeading",
L"BodyText2",
L"BodyText3",
L"BodyTextIndent2",
L"BodyTextIndent3",
L"BlockQuote",
L"Hyperlink",
L"FollowedHyperlink",
L"Strong",
L"Emphasis",
L"NavPane",
L"PlainText",
L"AutoSignature",
L"FormTop",
L"FormBottom",
L"HtmlNormal",
L"HtmlAcronym",
L"HtmlAddress",
L"HtmlCite",
L"HtmlCode",
L"HtmlDfn",
L"HtmlKbd",
L"HtmlPre",
L"htmlSamp",
L"HtmlTt",
L"HtmlVar",
L"TableNormal",
L"AnnotationSubject",
L"NormalList",
L"OutlineList1",
L"OutlineList2",
L"OutlineList3",
L"TableSimple",
L"TableSimple2",
L"TableSimple3",
L"TableClassic1",
L"TableClassic2",
L"TableClassic3",
L"TableClassic4",
L"TableColorful1",
L"TableColorful2",
L"TableColorful3",
L"TableColumns1",
L"TableColumns2",
L"TableColumns3",
L"TableColumns4",
L"TableColumns5",
L"TableGrid1",
L"TableGrid2",
L"TableGrid3",
L"TableGrid4",
L"TableGrid5",
L"TableGrid6",
L"TableGrid7",
L"TableGrid8",
L"TableList1",
L"TableList2",
L"TableList3",
L"TableList4",
L"TableList5",
L"TableList6",
L"TableList7",
L"TableList8",
L"Table3DFx1",
L"Table3DFx2",
L"Table3DFx3",
L"TableContemporary",
L"TableElegant",
L"TableProfessional",
L"TableSubtle1",
L"tableSubtle2",
L"TableWeb1",
L"TableWeb2",
L"TableWeb3",
L"Acetate",
L"TableGrid",
L"TableTheme",
L"Max",
L"User",
L"Null"
};
class StyleSheetDescription
{
friend class StyleSheetMapping;
friend class CharacterPropertiesMapping;
public:
/// The name of the style
std::wstring xstzName;
/// Invariant style identifier
StyleIdentifier sti;
/// spare field for any temporary use, always reset back to zero!
bool fScratch;
/// PHEs of all text with this style are wrong
bool fInvalHeight;
/// UPEs have been generated
bool fHasUpe;
/// std has been mass-copied; if unused at save time,
/// style should be deleted
bool fMassCopy;
/// style kind
StyleKind stk;
/// base style
unsigned int istdBase;
/// number of UPXs (and UPEs)
unsigned short cupx;
/// next style
unsigned int istdNext;
/// offset to end of upx's, start of upe's
unsigned short bchUpe;
/// auto redefine style when appropriate
bool fAutoRedef;
/// hidden from UI?
bool fHidden;
/// style already has valid sprmCRgLidX_80 in it
bool f97LidsSet;
/// if f97LidsSet, says whether we copied the lid from sprmCRgLidX
/// into sprmCRgLidX_80 or whether we gotrid of sprmCRgLidX_80
bool fCopyLang;
/// HTML Threading compose style
bool fPersonalCompose;
/// HTML Threading reply style
bool fPersonalReply;
/// HTML Threading - another user's personal style
bool fPersonal;
/// Do not export this style to HTML/CSS
bool fNoHtmlExport;
/// Do not show this style in long style lists
bool fSemiHidden;
/// Locked style?
bool fLocked;
/// Style is used by a word feature, e.g. footnote
bool fInternalUse;
/// Is this style linked to another?
unsigned int istdLink;
/// Style has RevMarking history
bool fHasOriginalStyle;
/// marks during merge which doc's style changed
unsigned int rsid;
/// used temporarily during html export
unsigned int iftcHtml;
/// A StyleSheetDescription can have a PAPX.
/// If the style doesn't modify paragraph properties, papx is null.
ParagraphPropertyExceptions* papx;
/// A StyleSheetDescription can have a CHPX.
/// If the style doesn't modify character properties, chpx is null.
CharacterPropertyExceptions* chpx;
/// A StyleSheetDescription can have a TAPX.
/// If the style doesn't modify table properties, tapx is null.
TablePropertyExceptions* tapx;
bool fQFormat;
bool fUnhideWhenUsed;
unsigned int uiPriority;
/// Creates an empty STD object
StyleSheetDescription();
virtual ~StyleSheetDescription();
/// Parses the bytes to retrieve a StyleSheetDescription
StyleSheetDescription( unsigned char* bytes, int size, int cbStdBase, POLE::Stream* dataStream, int nWordVersion);
};
}