xref: /AOO41X/main/xmloff/source/text/XMLTextPropertySetContext.cxx (revision 63bba73cc51e0afb45f8a8d578158724bb5afee8)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmloff.hxx"
26 #include <tools/debug.hxx>
27 #include "XMLTextPropertySetContext.hxx"
28 #include "XMLTextColumnsContext.hxx"
29 #include "XMLBackgroundImageContext.hxx"
30 #include "XMLSectionFootnoteConfigImport.hxx"
31 
32 #ifndef _XMLOFF_TXTPRMAP_HXX
33 #include <xmloff/txtprmap.hxx>
34 #endif
35 #include "xmltabi.hxx"
36 #ifndef _XMLOFF_TXTDROPI_HXX
37 #include "txtdropi.hxx"
38 #endif
39 
40 using ::rtl::OUString;
41 
42 using namespace ::com::sun::star::uno;
43 using namespace ::com::sun::star;
44 
XMLTextPropertySetContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLName,const Reference<xml::sax::XAttributeList> & xAttrList,sal_uInt32 nFamily,::std::vector<XMLPropertyState> & rProps,const UniReference<SvXMLImportPropertyMapper> & rMap,OUString & rDCTextStyleName)45 XMLTextPropertySetContext::XMLTextPropertySetContext(
46                  SvXMLImport& rImport, sal_uInt16 nPrfx,
47                  const OUString& rLName,
48                  const Reference< xml::sax::XAttributeList > & xAttrList,
49                  sal_uInt32 nFamily,
50                  ::std::vector< XMLPropertyState > &rProps,
51                  const UniReference < SvXMLImportPropertyMapper > &rMap,
52                  OUString& rDCTextStyleName ) :
53     SvXMLPropertySetContext( rImport, nPrfx, rLName, xAttrList, nFamily,
54                              rProps, rMap ),
55     rDropCapTextStyleName( rDCTextStyleName )
56 {
57 }
58 
~XMLTextPropertySetContext()59 XMLTextPropertySetContext::~XMLTextPropertySetContext()
60 {
61 }
62 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<xml::sax::XAttributeList> & xAttrList,::std::vector<XMLPropertyState> & rProperties,const XMLPropertyState & rProp)63 SvXMLImportContext *XMLTextPropertySetContext::CreateChildContext(
64                    sal_uInt16 nPrefix,
65                    const OUString& rLocalName,
66                    const Reference< xml::sax::XAttributeList > & xAttrList,
67                    ::std::vector< XMLPropertyState > &rProperties,
68                    const XMLPropertyState& rProp )
69 {
70     SvXMLImportContext *pContext = 0;
71 
72     switch( mxMapper->getPropertySetMapper()
73                     ->GetEntryContextId( rProp.mnIndex ) )
74     {
75     case CTF_TABSTOP:
76         pContext = new SvxXMLTabStopImportContext( GetImport(), nPrefix,
77                                                    rLocalName, rProp,
78                                                    rProperties );
79         break;
80     case CTF_TEXTCOLUMNS:
81 #ifndef SVX_LIGHT
82         pContext = new XMLTextColumnsContext( GetImport(), nPrefix,
83                                                    rLocalName, xAttrList, rProp,
84                                                    rProperties );
85 #else
86         // create default context to skip content
87         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
88 #endif // #ifndef SVX_LIGHT
89         break;
90 
91     case CTF_DROPCAPFORMAT:
92         {
93             DBG_ASSERT( rProp.mnIndex >= 2 &&
94                         CTF_DROPCAPWHOLEWORD  == mxMapper->getPropertySetMapper()
95                             ->GetEntryContextId( rProp.mnIndex-2 ),
96                         "invalid property map!");
97             XMLTextDropCapImportContext *pDCContext =
98                 new XMLTextDropCapImportContext( GetImport(), nPrefix,
99                                                         rLocalName, xAttrList,
100                                                         rProp,
101                                                         rProp.mnIndex-2,
102                                                         rProperties );
103             rDropCapTextStyleName = pDCContext->GetStyleName();
104         pContext = pDCContext;
105         }
106         break;
107 
108     case CTF_BACKGROUND_URL:
109     {
110         DBG_ASSERT( rProp.mnIndex >= 2 &&
111                     CTF_BACKGROUND_POS  == mxMapper->getPropertySetMapper()
112                         ->GetEntryContextId( rProp.mnIndex-2 ) &&
113                     CTF_BACKGROUND_FILTER  == mxMapper->getPropertySetMapper()
114                         ->GetEntryContextId( rProp.mnIndex-1 ),
115                     "invalid property map!");
116 
117         // #99657# Transparency might be there as well... but doesn't have
118         // to. Thus, this is checked with an if, rather than with an assertion.
119         sal_Int32 nTranspIndex = -1;
120         if( (rProp.mnIndex >= 3) &&
121             ( CTF_BACKGROUND_TRANSPARENCY ==
122               mxMapper->getPropertySetMapper()->GetEntryContextId(
123                   rProp.mnIndex-3 ) ) )
124             nTranspIndex = rProp.mnIndex-3;
125 
126         pContext =
127             new XMLBackgroundImageContext( GetImport(), nPrefix,
128                                            rLocalName, xAttrList,
129                                            rProp,
130                                            rProp.mnIndex-2,
131                                            rProp.mnIndex-1,
132                                            nTranspIndex,
133                                            rProperties );
134     }
135     break;
136 #ifndef SVX_LIGHT
137     case CTF_SECTION_FOOTNOTE_END:
138     case CTF_SECTION_ENDNOTE_END:
139         pContext = new XMLSectionFootnoteConfigImport(
140             GetImport(), nPrefix, rLocalName, rProperties,
141             mxMapper->getPropertySetMapper());
142         break;
143 #endif // #ifndef SVX_LIGHT
144     }
145 
146     if( !pContext )
147         pContext = SvXMLPropertySetContext::CreateChildContext( nPrefix, rLocalName,
148                                                             xAttrList,
149                                                             rProperties, rProp );
150 
151     return pContext;
152 }
153 
154 
155