Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <ooxml/resourceids.hxx>
21 : #include <resourcemodel/QNameToString.hxx>
22 : #include "Handler.hxx"
23 :
24 : namespace writerfilter {
25 : namespace ooxml
26 : {
27 :
28 : /*
29 : class OOXMLFootnoteHandler
30 : */
31 0 : OOXMLFootnoteHandler::OOXMLFootnoteHandler(OOXMLFastContextHandler * pContext)
32 0 : : mpFastContext(pContext)
33 : {
34 0 : }
35 :
36 0 : OOXMLFootnoteHandler::~OOXMLFootnoteHandler()
37 : {
38 0 : }
39 :
40 0 : void OOXMLFootnoteHandler::attribute(Id name, Value & val)
41 : {
42 0 : switch (name)
43 : {
44 : case NS_ooxml::LN_CT_FtnEdnRef_id:
45 0 : mpFastContext->resolveFootnote(sal_Int32(val.getInt()));
46 0 : break;
47 : default:
48 0 : break;
49 : }
50 0 : }
51 :
52 0 : void OOXMLFootnoteHandler::sprm(Sprm & /*sprm*/)
53 : {
54 0 : }
55 :
56 : /*
57 : class OOXMLEndnoteHandler
58 : */
59 0 : OOXMLEndnoteHandler::OOXMLEndnoteHandler(OOXMLFastContextHandler * pContext)
60 0 : : mpFastContext(pContext)
61 : {
62 0 : }
63 :
64 0 : OOXMLEndnoteHandler::~OOXMLEndnoteHandler()
65 : {
66 0 : }
67 :
68 0 : void OOXMLEndnoteHandler::attribute(Id name, Value & val)
69 : {
70 0 : switch (name)
71 : {
72 : case NS_ooxml::LN_CT_FtnEdnRef_id:
73 0 : mpFastContext->resolveEndnote(sal_Int32(val.getInt()));
74 0 : break;
75 : default:
76 0 : break;
77 : }
78 0 : }
79 :
80 0 : void OOXMLEndnoteHandler::sprm(Sprm & /*sprm*/)
81 : {
82 0 : }
83 :
84 : /*
85 : class OOXMLCommentHandler
86 : */
87 2 : OOXMLCommentHandler::OOXMLCommentHandler(OOXMLFastContextHandler * pContext)
88 2 : : mpFastContext(pContext)
89 : {
90 2 : }
91 :
92 2 : OOXMLCommentHandler::~OOXMLCommentHandler()
93 : {
94 2 : }
95 :
96 2 : void OOXMLCommentHandler::attribute(Id name, Value & val)
97 : {
98 2 : switch (name)
99 : {
100 : case NS_ooxml::LN_CT_Markup_id:
101 2 : mpFastContext->resolveComment(val.getInt());
102 2 : break;
103 : default:
104 : ;
105 : }
106 2 : }
107 :
108 0 : void OOXMLCommentHandler::sprm(Sprm & /*sprm*/)
109 : {
110 0 : }
111 :
112 : /*
113 : class OOXMLOLEHandler
114 : */
115 1 : OOXMLOLEHandler::OOXMLOLEHandler(OOXMLFastContextHandler * pContext)
116 1 : : mpFastContext(pContext)
117 : {
118 1 : }
119 :
120 1 : OOXMLOLEHandler::~OOXMLOLEHandler()
121 : {
122 1 : }
123 :
124 7 : void OOXMLOLEHandler::attribute(Id name, Value & val)
125 : {
126 7 : switch (name)
127 : {
128 : case NS_ooxml::LN_CT_OLEObject_r_id:
129 1 : mpFastContext->resolveData(val.getString());
130 1 : break;
131 : default:
132 : ;
133 : }
134 7 : }
135 :
136 0 : void OOXMLOLEHandler::sprm(Sprm & /*sprm*/)
137 : {
138 0 : }
139 :
140 0 : OOXMLEmbeddedFontHandler::OOXMLEmbeddedFontHandler(OOXMLFastContextHandler * pContext)
141 0 : : mpFastContext(pContext)
142 : {
143 0 : }
144 :
145 0 : OOXMLEmbeddedFontHandler::~OOXMLEmbeddedFontHandler()
146 : {
147 0 : }
148 :
149 0 : void OOXMLEmbeddedFontHandler::attribute(Id name, Value & val)
150 : {
151 0 : switch (name)
152 : {
153 : case NS_ooxml::LN_CT_Rel_id:
154 0 : mpFastContext->resolveData(val.getString());
155 0 : break;
156 : default:
157 0 : break;
158 : }
159 0 : }
160 :
161 0 : void OOXMLEmbeddedFontHandler::sprm(Sprm & /*sprm*/)
162 : {
163 0 : }
164 :
165 : /*
166 : class OOXMLFooterHandler
167 : */
168 11 : OOXMLFooterHandler::OOXMLFooterHandler(OOXMLFastContextHandler * pContext)
169 11 : : mpFastContext(pContext), msStreamId(), mnType(0)
170 : {
171 11 : }
172 :
173 22 : OOXMLFooterHandler::~OOXMLFooterHandler()
174 : {
175 11 : mpFastContext->resolveFooter(mnType, msStreamId);
176 11 : }
177 :
178 22 : void OOXMLFooterHandler::attribute(Id name, Value & val)
179 : {
180 22 : switch (name)
181 : {
182 : case NS_ooxml::LN_CT_HdrFtrRef_id:
183 11 : msStreamId = val.getString();
184 11 : break;
185 : case NS_ooxml::LN_CT_HdrFtrRef_type:
186 11 : mnType = val.getInt();
187 11 : break;
188 : default:
189 0 : break;
190 : }
191 22 : }
192 :
193 0 : void OOXMLFooterHandler::sprm(Sprm & /*sprm*/)
194 : {
195 0 : }
196 :
197 : /*
198 : class OOXMLHeaderHandler
199 : */
200 14 : OOXMLHeaderHandler::OOXMLHeaderHandler(OOXMLFastContextHandler * pContext)
201 14 : : mpFastContext(pContext), msStreamId(), mnType(0)
202 : {
203 14 : }
204 :
205 28 : OOXMLHeaderHandler::~OOXMLHeaderHandler()
206 : {
207 14 : mpFastContext->resolveHeader(mnType, msStreamId);
208 14 : }
209 :
210 28 : void OOXMLHeaderHandler::attribute(Id name, Value & val)
211 : {
212 28 : switch (name)
213 : {
214 : case NS_ooxml::LN_CT_HdrFtrRef_id:
215 14 : msStreamId = val.getString();
216 14 : break;
217 : case NS_ooxml::LN_CT_HdrFtrRef_type:
218 14 : mnType = val.getInt();
219 14 : break;
220 : default:
221 0 : break;
222 : }
223 28 : }
224 :
225 0 : void OOXMLHeaderHandler::sprm(Sprm & /*sprm*/)
226 : {
227 0 : }
228 :
229 : /*
230 : class OOXMLBreakHandler
231 : */
232 4 : OOXMLBreakHandler::OOXMLBreakHandler(Stream &rStream)
233 : : mnType(0), mnClear(0),
234 4 : mrStream(rStream)
235 : {
236 4 : }
237 :
238 8 : OOXMLBreakHandler::~OOXMLBreakHandler()
239 : {
240 : sal_uInt8 tmpBreak[1];
241 4 : switch (mnType)
242 : {
243 : case NS_ooxml::LN_Value_ST_BrType_column:
244 0 : tmpBreak[0] = 0x0E;
245 0 : break;
246 : case NS_ooxml::LN_Value_ST_BrType_page:
247 3 : tmpBreak[0] = 0x0C;
248 3 : break;
249 : case NS_ooxml::LN_Value_ST_BrType_textWrapping:
250 : default: // when no attribute type is present, the spec assume textWrapping
251 1 : tmpBreak[0] = 0x0A;
252 1 : break;
253 : }
254 4 : mrStream.text(&tmpBreak[0], 1);
255 4 : }
256 :
257 3 : void OOXMLBreakHandler::attribute(Id name, Value & val)
258 : {
259 3 : switch (name)
260 : {
261 : case NS_ooxml::LN_CT_Br_type:
262 3 : mnType = val.getInt();
263 3 : break;
264 : case NS_ooxml::LN_CT_Br_clear:
265 0 : mnClear = val.getInt();
266 0 : break;
267 : default:
268 0 : break;
269 : }
270 3 : }
271 :
272 0 : void OOXMLBreakHandler::sprm(Sprm & /*sprm*/)
273 : {
274 0 : }
275 :
276 : /*
277 : class OOXMLPictureHandler
278 : */
279 14 : OOXMLPictureHandler::OOXMLPictureHandler(OOXMLFastContextHandler * pContext)
280 14 : : mpFastContext(pContext)
281 : {
282 14 : }
283 :
284 14 : OOXMLPictureHandler::~OOXMLPictureHandler()
285 : {
286 14 : }
287 :
288 195 : void OOXMLPictureHandler::attribute(Id name, Value & val)
289 : {
290 195 : if (name == NS_ooxml::LN_AG_Blob_r_embed)
291 0 : mpFastContext->resolvePicture(val.getString());
292 : else
293 : {
294 : writerfilter::Reference<Properties>::Pointer_t pProps
295 195 : (val.getProperties());
296 195 : if (pProps.get() != NULL)
297 0 : pProps->resolve(*this);
298 : }
299 195 : }
300 :
301 155 : void OOXMLPictureHandler::sprm(Sprm & rSprm)
302 : {
303 : writerfilter::Reference<Properties>::Pointer_t pProps
304 155 : (rSprm.getProps());
305 :
306 155 : if (pProps.get() != NULL)
307 145 : pProps->resolve(*this);
308 155 : }
309 :
310 : /**
311 : class OOXMLHyperlinkHandler
312 : */
313 :
314 1 : OOXMLHyperlinkHandler::OOXMLHyperlinkHandler(OOXMLFastContextHandler * pContext)
315 1 : : mpFastContext(pContext)
316 : {
317 1 : }
318 :
319 2 : OOXMLHyperlinkHandler::~OOXMLHyperlinkHandler()
320 : {
321 1 : OUString sReturn(" HYPERLINK \"");
322 :
323 1 : sReturn += mURL;
324 1 : sReturn += "\"";
325 1 : sReturn += mFieldCode;
326 :
327 1 : mpFastContext->text(sReturn);
328 1 : }
329 :
330 1 : void OOXMLHyperlinkHandler::attribute(Id name, Value & val)
331 : {
332 1 : switch (name)
333 : {
334 : case NS_ooxml::LN_CT_Hyperlink_tgtFrame:
335 0 : mFieldCode += " \\t \"";
336 0 : mFieldCode += val.getString();
337 0 : mFieldCode += "\"";
338 0 : break;
339 : case NS_ooxml::LN_CT_Hyperlink_tooltip:
340 0 : mFieldCode += " \\o \"";
341 0 : mFieldCode += val.getString();
342 0 : mFieldCode += "\"";
343 0 : break;
344 : case NS_ooxml::LN_CT_Hyperlink_docLocation:
345 0 : break;
346 : case NS_ooxml::LN_CT_Hyperlink_history:
347 0 : break;
348 : case NS_ooxml::LN_CT_Hyperlink_anchor:
349 0 : mFieldCode += " \\l \"";
350 0 : mFieldCode += val.getString();
351 0 : mFieldCode += "\"";
352 0 : break;
353 : case NS_ooxml::LN_CT_Hyperlink_r_id:
354 1 : mURL = mpFastContext->getTargetForId(val.getString());
355 1 : break;
356 : default:
357 0 : break;
358 : }
359 1 : }
360 :
361 0 : void OOXMLHyperlinkHandler::sprm(Sprm & /*rSprm*/)
362 : {
363 0 : }
364 :
365 15 : }}
366 :
367 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|