1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #include "oox/drawingml/textcharacterpropertiescontext.hxx"
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include "oox/helper/attributelist.hxx"
31*cdf0e10cSrcweir #include "oox/drawingml/drawingmltypes.hxx"
32*cdf0e10cSrcweir #include "oox/drawingml/colorchoicecontext.hxx"
33*cdf0e10cSrcweir #include "oox/drawingml/lineproperties.hxx"
34*cdf0e10cSrcweir #include "oox/drawingml/textparagraphproperties.hxx"
35*cdf0e10cSrcweir #include "oox/core/relations.hxx"
36*cdf0e10cSrcweir #include "hyperlinkcontext.hxx"
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir using ::rtl::OUString;
39*cdf0e10cSrcweir using namespace ::oox::core;
40*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
41*cdf0e10cSrcweir using namespace ::com::sun::star::xml::sax;
42*cdf0e10cSrcweir using namespace ::com::sun::star::awt;
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir namespace oox { namespace drawingml {
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir // --------------------------------------------------------------------
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir // CT_TextCharacterProperties
49*cdf0e10cSrcweir TextCharacterPropertiesContext::TextCharacterPropertiesContext(
50*cdf0e10cSrcweir         ContextHandler& rParent,
51*cdf0e10cSrcweir         const Reference< XFastAttributeList >& rXAttributes,
52*cdf0e10cSrcweir         TextCharacterProperties& rTextCharacterProperties )
53*cdf0e10cSrcweir : ContextHandler( rParent )
54*cdf0e10cSrcweir , mrTextCharacterProperties( rTextCharacterProperties )
55*cdf0e10cSrcweir {
56*cdf0e10cSrcweir     AttributeList aAttribs( rXAttributes );
57*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_lang ) )
58*cdf0e10cSrcweir 		mrTextCharacterProperties.moLang = aAttribs.getString( XML_lang );
59*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_sz ) )
60*cdf0e10cSrcweir 		mrTextCharacterProperties.moHeight = aAttribs.getInteger( XML_sz );
61*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_u ) )
62*cdf0e10cSrcweir 		mrTextCharacterProperties.moUnderline = aAttribs.getToken( XML_u );
63*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_strike ) )
64*cdf0e10cSrcweir 		mrTextCharacterProperties.moStrikeout = aAttribs.getToken( XML_strike );
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir //  mrTextCharacterProperties.moCaseMap     = aAttribs.getToken( XML_cap );
67*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_b ) )
68*cdf0e10cSrcweir 		mrTextCharacterProperties.moBold = aAttribs.getBool( XML_b );
69*cdf0e10cSrcweir 	if ( aAttribs.hasAttribute( XML_i ) )
70*cdf0e10cSrcweir 		mrTextCharacterProperties.moItalic = aAttribs.getBool( XML_i );
71*cdf0e10cSrcweir 
72*cdf0e10cSrcweir // TODO
73*cdf0e10cSrcweir /*	 todo: we need to be able to iterate over the XFastAttributes
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir   // ST_TextNonNegativePoint
76*cdf0e10cSrcweir     const OUString sCharKerning( CREATE_OUSTRING( "CharKerning" ) );
77*cdf0e10cSrcweir 	//case A_TOKEN( kern ):
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir   // ST_TextLanguageID
80*cdf0e10cSrcweir 	OUString sAltLang = rXAttributes->getOptionalValue( XML_altLang );
81*cdf0e10cSrcweir 
82*cdf0e10cSrcweir 		case A_TOKEN( kumimoji ):		// xsd:boolean
83*cdf0e10cSrcweir 			break;
84*cdf0e10cSrcweir 		case A_TOKEN( spc ):			// ST_TextPoint
85*cdf0e10cSrcweir 		case A_TOKEN( normalizeH ):		// xsd:boolean
86*cdf0e10cSrcweir 		case A_TOKEN( baseline ):		// ST_Percentage
87*cdf0e10cSrcweir 		case A_TOKEN( noProof ):		// xsd:boolean
88*cdf0e10cSrcweir 		case A_TOKEN( dirty ):			// xsd:boolean
89*cdf0e10cSrcweir 		case A_TOKEN( err ):			// xsd:boolean
90*cdf0e10cSrcweir 		case A_TOKEN( smtClean ):		// xsd:boolean
91*cdf0e10cSrcweir 		case A_TOKEN( smtId ):			// xsd:unsignedInt
92*cdf0e10cSrcweir 			break;
93*cdf0e10cSrcweir */
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir }
96*cdf0e10cSrcweir 
97*cdf0e10cSrcweir TextCharacterPropertiesContext::~TextCharacterPropertiesContext()
98*cdf0e10cSrcweir {
99*cdf0e10cSrcweir }
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir // --------------------------------------------------------------------
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir void TextCharacterPropertiesContext::endFastElement( sal_Int32 ) throw (SAXException, RuntimeException)
104*cdf0e10cSrcweir {
105*cdf0e10cSrcweir }
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir // --------------------------------------------------------------------
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir Reference< XFastContextHandler > TextCharacterPropertiesContext::createFastChildContext( sal_Int32 aElementToken, const Reference< XFastAttributeList >& xAttributes ) throw (SAXException, RuntimeException)
110*cdf0e10cSrcweir {
111*cdf0e10cSrcweir     AttributeList aAttribs( xAttributes );
112*cdf0e10cSrcweir 	Reference< XFastContextHandler > xRet;
113*cdf0e10cSrcweir 	switch( aElementToken )
114*cdf0e10cSrcweir 	{
115*cdf0e10cSrcweir // TODO unsupported yet
116*cdf0e10cSrcweir //        case A_TOKEN( ln ):         // CT_LineProperties
117*cdf0e10cSrcweir //            xRet.set( new LinePropertiesContext( getHandler(), xAttributes, maTextOutlineProperties ) );
118*cdf0e10cSrcweir //        break;
119*cdf0e10cSrcweir 
120*cdf0e10cSrcweir         case A_TOKEN( solidFill ):  // EG_FillProperties
121*cdf0e10cSrcweir             xRet.set( new ColorContext( *this, mrTextCharacterProperties.maCharColor ) );
122*cdf0e10cSrcweir         break;
123*cdf0e10cSrcweir 
124*cdf0e10cSrcweir         // EG_EffectProperties
125*cdf0e10cSrcweir         case A_TOKEN( effectDag ):  // CT_EffectContainer 5.1.10.25
126*cdf0e10cSrcweir         case A_TOKEN( effectLst ):  // CT_EffectList 5.1.10.26
127*cdf0e10cSrcweir         break;
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir         case A_TOKEN( highlight ):  // CT_Color
130*cdf0e10cSrcweir             xRet.set( new ColorContext( *this, mrTextCharacterProperties.maHighlightColor ) );
131*cdf0e10cSrcweir         break;
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir 		// EG_TextUnderlineLine
134*cdf0e10cSrcweir         case A_TOKEN( uLnTx ):      // CT_TextUnderlineLineFollowText
135*cdf0e10cSrcweir             mrTextCharacterProperties.moUnderlineLineFollowText = true;
136*cdf0e10cSrcweir         break;
137*cdf0e10cSrcweir // TODO unsupported yet
138*cdf0e10cSrcweir //        case A_TOKEN( uLn ):        // CT_LineProperties
139*cdf0e10cSrcweir //            xRet.set( new LinePropertiesContext( getHandler(), xAttributes, maUnderlineProperties ) );
140*cdf0e10cSrcweir //        break;
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir 		// EG_TextUnderlineFill
143*cdf0e10cSrcweir         case A_TOKEN( uFillTx ):    // CT_TextUnderlineFillFollowText
144*cdf0e10cSrcweir             mrTextCharacterProperties.moUnderlineFillFollowText = true;
145*cdf0e10cSrcweir         break;
146*cdf0e10cSrcweir         case A_TOKEN( uFill ):      // CT_TextUnderlineFillGroupWrapper->EG_FillProperties (not supported)
147*cdf0e10cSrcweir             xRet.set( new SimpleFillPropertiesContext( *this, mrTextCharacterProperties.maUnderlineColor ) );
148*cdf0e10cSrcweir         break;
149*cdf0e10cSrcweir 
150*cdf0e10cSrcweir 		// CT_FontCollection
151*cdf0e10cSrcweir         case A_TOKEN( latin ):      // CT_TextFont
152*cdf0e10cSrcweir             mrTextCharacterProperties.maLatinFont.setAttributes( aAttribs );
153*cdf0e10cSrcweir         break;
154*cdf0e10cSrcweir         case A_TOKEN( ea ):         // CT_TextFont
155*cdf0e10cSrcweir             mrTextCharacterProperties.maAsianFont.setAttributes( aAttribs );
156*cdf0e10cSrcweir         break;
157*cdf0e10cSrcweir         case A_TOKEN( cs ):         // CT_TextFont
158*cdf0e10cSrcweir             mrTextCharacterProperties.maComplexFont.setAttributes( aAttribs );
159*cdf0e10cSrcweir         break;
160*cdf0e10cSrcweir         case A_TOKEN( sym ):        // CT_TextFont
161*cdf0e10cSrcweir             mrTextCharacterProperties.maSymbolFont.setAttributes( aAttribs );
162*cdf0e10cSrcweir         break;
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir         case A_TOKEN( hlinkClick ):     // CT_Hyperlink
165*cdf0e10cSrcweir         case A_TOKEN( hlinkMouseOver ): // CT_Hyperlink
166*cdf0e10cSrcweir             xRet.set( new HyperLinkContext( *this, xAttributes,  mrTextCharacterProperties.maHyperlinkPropertyMap ) );
167*cdf0e10cSrcweir         break;
168*cdf0e10cSrcweir 	}
169*cdf0e10cSrcweir     if( !xRet.is() )
170*cdf0e10cSrcweir         xRet.set( this );
171*cdf0e10cSrcweir 	return xRet;
172*cdf0e10cSrcweir }
173*cdf0e10cSrcweir 
174*cdf0e10cSrcweir // --------------------------------------------------------------------
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir } }
177*cdf0e10cSrcweir 
178