Update ooo320-m1
[ooovba.git] / sw / source / filter / html / swcss1.hxx
blob490bf9e9b7c4749daaea928b3086c65bd0107319
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: swcss1.hxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef _SWCSS1_HXX
32 #define _SWCSS1_HXX
34 #include "poolfmt.hxx"
36 #include "svxcss1.hxx"
38 class SwDoc;
39 class SwFmt;
40 class SwCharFmt;
41 class SwTxtFmtColl;
42 class SvxBrushItem;
43 class SwFmtDrop;
44 class SwPageDesc;
46 // Dieser Header seiht zwar harmlos aus, included aber eben doch
47 // ganz unauffaellig das ein oder andere! Andererseits wird diese
48 // Klasse recht selten benoetigt. Deshalb ein eigener Header.
51 class SwCSS1Parser : public SvxCSS1Parser
53 SwDoc *pDoc;
55 ULONG aFontHeights[7];
57 USHORT nDropCapCnt;
59 BOOL bIsNewDoc : 1;
61 BOOL bBodyBGColorSet : 1;
62 BOOL bBodyBackgroundSet : 1;
63 BOOL bBodyTextSet : 1;
64 BOOL bBodyLinkSet : 1;
65 BOOL bBodyVLinkSet : 1;
67 BOOL bSetFirstPageDesc : 1;
68 BOOL bSetRightPageDesc : 1;
70 BOOL bTableHeaderTxtCollSet : 1;
71 BOOL bTableTxtCollSet : 1;
73 BOOL bLinkCharFmtsSet : 1;
75 // die Vorlagen fuer DL anlegen
76 SwTxtFmtColl* GetDefListTxtFmtColl( USHORT nCollId, USHORT nDeep );
78 const SwPageDesc* GetPageDesc( USHORT nPoolId, BOOL bCreate );
80 void SetTableTxtColl( BOOL bHeader );
81 void SetLinkCharFmts();
83 protected:
84 virtual BOOL StyleParsed( const CSS1Selector *pSelector,
85 SfxItemSet& rItemSet,
86 SvxCSS1PropertyInfo& rPropInfo );
88 using CSS1Parser::ParseStyleSheet;
90 public:
91 SwCSS1Parser( SwDoc *pDoc, sal_uInt32 aFHeight[7], const String& rBaseURL, BOOL bNewDoc );
92 virtual ~SwCSS1Parser();
94 virtual BOOL ParseStyleSheet( const String& rIn );
96 // Die Font-Hoehe fuer eine bestimmte Font-Groesse (0-6) ermitteln
97 virtual sal_uInt32 GetFontHeight( USHORT nSize ) const;
99 // Die aktuelle Font-Liste holen (auch 0 ist erlaubt)
100 virtual const FontList *GetFontList() const;
102 // das Zeichen-Format zu einem Token und einer ggf leeren Klasse
103 // ermitteln
104 SwCharFmt* GetChrFmt( USHORT nToken, const String& rClass ) const;
106 // eine TextFmtColl zu einer Pool-Id ermitteln
107 SwTxtFmtColl *GetTxtFmtColl( USHORT nTxtColl, const String& rClass );
109 // This methods do the same as the one of SwDoc, but change the
110 // encoding if required.
111 SwTxtFmtColl *GetTxtCollFromPool( USHORT nPoolId ) const;
112 SwCharFmt *GetCharFmtFromPool( USHORT nPoolId ) const;
114 // Die linke oder rechte Seiten-Vorlage holen. In Dokumenten mit nur
115 // einer Vorlage gibt es nur eine rechtee Seite.
116 // Ansonsten ist die rechte Seite die HTML-Poolvorlage und die linke
117 // eine Benutzter-Vorlage, die on-demand angelegt wird, wenn
118 // bCreate gesetzt ist.
119 SwPageDesc* GetMasterPageDesc();
120 inline const SwPageDesc* GetFirstPageDesc( BOOL bCreate=FALSE );
121 inline const SwPageDesc* GetRightPageDesc( BOOL bCreate=FALSE );
122 inline const SwPageDesc* GetLeftPageDesc( BOOL bCreate=FALSE );
124 // Attribute an der HTML-Seitenvorlage setzen (gesetzte Attribute
125 // werden aus dem Item-Set geloescht ). Wird fuer's BODY-Tag
126 // aufgerufen.
127 void SetPageDescAttrs( const SvxBrushItem *pBrush,
128 SfxItemSet *pItemSet=0 );
130 void ChgPageDesc( const SwPageDesc *pPageDesc,
131 const SwPageDesc& rNewPageDesc );
133 // Wird fuer @page aufgerufen.
134 void SetPageDescAttrs( const SwPageDesc *pPageDesc, SfxItemSet& rItemSet,
135 const SvxCSS1PropertyInfo& rPropInfo );
137 // Fuellen eines DropCap-Attributs
138 void FillDropCap( SwFmtDrop& rDrop, SfxItemSet& rItemSet,
139 const String *pName=0 );
141 BOOL SetFmtBreak( SfxItemSet& rItemSet,
142 const SvxCSS1PropertyInfo& rPropInfo );
145 static void AddClassName( String& rFmtName, const String& rClass );
147 static inline void AddFirstLetterExt( String& rFmtName );
149 static BOOL MayBePositioned( const SvxCSS1PropertyInfo& rPropInfo,
150 BOOL bAutoWidth=FALSE );
152 static sal_uInt16 GetScriptFromClass( String& rClass,
153 sal_Bool bSubClassOnly = sal_True );
155 BOOL IsBodyBGColorSet() const { return bBodyBGColorSet; }
156 BOOL IsBodyBackgroundSet() const { return bBodyBackgroundSet; }
157 BOOL IsBodyTextSet() const { return bBodyTextSet; }
158 BOOL IsBodyLinkSet() const { return bBodyLinkSet; }
159 BOOL IsBodyVLinkSet() const { return bBodyVLinkSet; }
161 BOOL IsSetFirstPageDesc() const { return bSetFirstPageDesc; }
162 BOOL IsSetRightPageDesc() const { return bSetRightPageDesc; }
164 void SetBodyBGColorSet() { bBodyBGColorSet = TRUE; }
165 void SetBodyBackgroundSet() { bBodyBackgroundSet = TRUE; }
166 void SetBodyTextSet() { bBodyTextSet = TRUE; }
167 void SetBodyLinkSet() { bBodyLinkSet = TRUE; }
168 void SetBodyVLinkSet() { bBodyVLinkSet = TRUE; }
170 const SvxBrushItem& GetPageDescBackground() const;
172 inline void SetTHTagStyles();
173 inline void SetTDTagStyles();
174 inline void SetATagStyles();
175 inline void SetDelayedStyles();
177 virtual void SetDfltEncoding( rtl_TextEncoding eEnc );
181 inline void SwCSS1Parser::AddFirstLetterExt( String& rFmtName )
183 rFmtName.AppendAscii( ".FL", 3 ); // first letter
186 inline const SwPageDesc* SwCSS1Parser::GetFirstPageDesc( BOOL bCreate )
188 return GetPageDesc( RES_POOLPAGE_FIRST, bCreate );
191 inline const SwPageDesc* SwCSS1Parser::GetRightPageDesc( BOOL bCreate )
193 return GetPageDesc( RES_POOLPAGE_RIGHT, bCreate );
196 inline const SwPageDesc* SwCSS1Parser::GetLeftPageDesc( BOOL bCreate )
198 return GetPageDesc( RES_POOLPAGE_LEFT, bCreate );
201 inline void SwCSS1Parser::SetTHTagStyles()
203 if( !bTableHeaderTxtCollSet )
204 SetTableTxtColl( TRUE );
207 inline void SwCSS1Parser::SetTDTagStyles()
209 if( !bTableTxtCollSet )
210 SetTableTxtColl( FALSE );
214 inline void SwCSS1Parser::SetATagStyles()
216 if( !bLinkCharFmtsSet )
217 SetLinkCharFmts();
220 inline void SwCSS1Parser::SetDelayedStyles()
222 SetTHTagStyles();
223 SetTDTagStyles();
224 SetATagStyles();
228 #endif