1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: swcss1.hxx,v $
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 ************************************************************************/
34 #include "poolfmt.hxx"
36 #include "svxcss1.hxx"
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
55 ULONG aFontHeights
[7];
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();
84 virtual BOOL
StyleParsed( const CSS1Selector
*pSelector
,
86 SvxCSS1PropertyInfo
& rPropInfo
);
88 using CSS1Parser::ParseStyleSheet
;
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
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
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
)
220 inline void SwCSS1Parser::SetDelayedStyles()