Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * The Contents of this file are made available subject to the terms of
5 : : * either of the following licenses
6 : : *
7 : : * - GNU Lesser General Public License Version 2.1
8 : : * - Sun Industry Standards Source License Version 1.1
9 : : *
10 : : * Sun Microsystems Inc., October, 2000
11 : : *
12 : : * GNU Lesser General Public License Version 2.1
13 : : * =============================================
14 : : * Copyright 2000 by Sun Microsystems, Inc.
15 : : * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 : : *
17 : : * This library is free software; you can redistribute it and/or
18 : : * modify it under the terms of the GNU Lesser General Public
19 : : * License version 2.1, as published by the Free Software Foundation.
20 : : *
21 : : * This library is distributed in the hope that it will be useful,
22 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : : * Lesser General Public License for more details.
25 : : *
26 : : * You should have received a copy of the GNU Lesser General Public
27 : : * License along with this library; if not, write to the Free Software
28 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
29 : : * MA 02111-1307 USA
30 : : *
31 : : *
32 : : * Sun Industry Standards Source License Version 1.1
33 : : * =================================================
34 : : * The contents of this file are subject to the Sun Industry Standards
35 : : * Source License Version 1.1 (the "License"); You may not use this file
36 : : * except in compliance with the License. You may obtain a copy of the
37 : : * License at http://www.openoffice.org/license.html.
38 : : *
39 : : * Software provided under this License is provided on an "AS IS" basis,
40 : : * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
41 : : * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
42 : : * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
43 : : * See the License for the specific provisions governing your rights and
44 : : * obligations concerning the Software.
45 : : *
46 : : * The Initial Developer of the Original Code is: IBM Corporation
47 : : *
48 : : * Copyright: 2008 by IBM Corporation
49 : : *
50 : : * All Rights Reserved.
51 : : *
52 : : * Contributor(s): _______________________________________
53 : : *
54 : : *
55 : : ************************************************************************/
56 : : /*************************************************************************
57 : : * @file
58 : : * For LWP filter architecture prototype
59 : : ************************************************************************/
60 : : /*************************************************************************
61 : : * Change History
62 : : Jan 2005 Created
63 : : ************************************************************************/
64 : :
65 : : #include "lwpfribptr.hxx"
66 : :
67 : : #include "lwpfribheader.hxx"
68 : : #include "lwpfribtext.hxx"
69 : : #include "lwppara.hxx"
70 : : #include "lwpstory.hxx"
71 : : #include "xfilter/xftextspan.hxx"
72 : : #include "xfilter/xftextcontent.hxx"
73 : : #include "xfilter/xftabstop.hxx"
74 : : #include "xfilter/xflinebreak.hxx"
75 : : #include "lwpfribsection.hxx"
76 : : #include "lwpsection.hxx"
77 : : #include "lwpfribbreaks.hxx"
78 : : #include "lwpfribframe.hxx"
79 : : #include "lwpfribtable.hxx"
80 : : #include "xfilter/xfstylemanager.hxx"
81 : : #include "lwphyperlinkmgr.hxx"
82 : : #include "xfilter/xfhyperlink.hxx"
83 : : #include "lwpfootnote.hxx"
84 : : #include "lwpnotes.hxx"
85 : : #include "lwpfribmark.hxx"
86 : : #include "xfilter/xfchange.hxx"
87 : : #include "lwpchangemgr.hxx"
88 : : #include "lwpglobalmgr.hxx"
89 : :
90 : :
91 : 795 : LwpFribPtr::LwpFribPtr()
92 : 795 : : m_pFribs(NULL),m_pXFPara(NULL),m_pPara(NULL)
93 : : {
94 : 795 : }
95 : :
96 : 795 : LwpFribPtr::~LwpFribPtr()
97 : : {
98 : 795 : LwpFrib* pNextFrib = m_pFribs;
99 : 795 : LwpFrib* pCurFrib = m_pFribs;
100 [ + + ]: 3402 : while(pCurFrib)
101 : : {
102 : 2607 : pNextFrib = pCurFrib -> GetNext();
103 [ + - ]: 2607 : delete pCurFrib;
104 : 2607 : pCurFrib = pNextFrib;
105 : : }
106 : 795 : }
107 : :
108 : 795 : void LwpFribPtr::ReadPara(LwpObjectStream* pObjStrm)
109 : : {
110 : 795 : LwpFrib* pCurFrib = m_pFribs = NULL;
111 : 2607 : for(;;)
112 : : {
113 : : // Get the frib type
114 : 3402 : sal_uInt8 FribTag = pObjStrm->QuickReaduInt8();
115 : :
116 : 3402 : sal_uInt8 FribType = FribTag & ~FRIB_TAG_TYPEMASK;
117 : :
118 : : // Stop when we hit Elvis
119 [ + + ]: 3402 : if (FribType == FRIB_TAG_ELVIS)
120 : 795 : break;
121 : :
122 : : // skip the editor ID
123 : : //pObjStrm->SeekRel(sizeof(sal_uInt8));
124 : 2607 : sal_uInt8 FribEditor = pObjStrm->QuickReaduInt8();
125 [ + - ]: 2607 : if( FribType != FT_MAXIMUM )
126 : : {
127 : 2607 : LwpFrib* pFrib = LwpFrib::CreateFrib( m_pPara, pObjStrm, FribTag,FribEditor);
128 [ + + ]: 2607 : if(!m_pFribs)
129 : : {
130 : 795 : m_pFribs = pFrib;
131 : : }
132 [ + + ]: 2607 : if(pCurFrib)
133 : : {
134 : 1812 : pCurFrib->SetNext(pFrib);
135 : : }
136 : : else//frist frib in the para,add by 2/1
137 : : {
138 [ + + ]: 795 : if (pFrib->GetType() == FRIB_TAG_TEXT)
139 : : {
140 : 282 : LwpFribText* pText = static_cast<LwpFribText*>(pFrib);
141 [ + + ]: 282 : if (pFrib->GetModifiers())
142 [ + - ]: 177 : m_pPara->SetFirstFrib(pText->GetText(),pText->GetModifiers()->FontID);
143 : : else
144 [ + - ]: 105 : m_pPara->SetFirstFrib(pText->GetText(),0);
145 : : }
146 : : }
147 : 2607 : pCurFrib = pFrib;
148 : : }
149 : : }
150 : 795 : }
151 : :
152 : : #include "lwpdropcapmgr.hxx"
153 : 447 : void LwpFribPtr::XFConvert()
154 : : {
155 : 447 : LwpFrib* pFrib = m_pFribs;
156 [ + + ]: 1608 : while(pFrib)
157 : : {
158 : 1161 : sal_uInt8 nFribType = pFrib->GetType();
159 : 1161 : sal_Bool bRevisionFlag = pFrib->GetRevisionFlag();
160 : 1161 : OUString sChangeID;
161 [ - + ]: 1161 : if (bRevisionFlag)
162 : : {
163 [ # # ][ # # ]: 0 : if ( nFribType!= FRIB_TAG_TABLE && nFribType != FRIB_TAG_FIELD
[ # # ]
164 : : && nFribType != FRIB_TAG_FRAME)
165 : : {
166 : : //sal_uInt8 nRevisionType = pFrib->GetRevisionType();
167 [ # # ]: 0 : LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
168 : 0 : LwpChangeMgr* pChangeMgr = pGlobal->GetLwpChangeMgr();
169 [ # # ]: 0 : sChangeID = pChangeMgr->GetChangeID(pFrib);
170 [ # # ]: 0 : if (!sChangeID.isEmpty())
171 : : {
172 : : /// if (nRevisionType == LwpFrib::REV_INSERT)
173 : : /// {
174 [ # # ]: 0 : XFChangeStart* pChangeStart = new XFChangeStart;
175 : 0 : pChangeStart->SetChangeID(sChangeID);
176 [ # # ]: 0 : m_pXFPara->Add(pChangeStart);
177 : : /// }
178 : : /// else if (nRevisionType == LwpFrib::REV_DELETE)
179 : : /// {
180 : : /// XFChange* pChange = new XFChange;
181 : : /// pChange->SetChangeID(sChangeID);
182 : : /// m_pXFPara->Add(pChange);
183 : : /// pFrib = pFrib->GetNext();
184 : : /// continue;
185 : : /// }
186 : : }
187 : : }
188 : : }
189 : :
190 [ + + - + : 1161 : switch(nFribType)
- - - - -
+ - + - +
+ - + + -
- + ]
191 : : {
192 : : case FRIB_TAG_TEXT:
193 : : {
194 : 567 : LwpFribText* textFrib= static_cast<LwpFribText*>(pFrib);
195 [ + - ][ + - ]: 567 : textFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
196 : : }
197 : 567 : break;
198 : : case FRIB_TAG_TAB:
199 : : {
200 : 54 : LwpFribTab* tabFrib = static_cast<LwpFribTab*>(pFrib);
201 [ + + ]: 54 : if (pFrib->m_ModFlag)
202 : : {
203 [ + - ][ + - ]: 21 : XFTextSpan *pSpan = new XFTextSpan();
204 [ + - ]: 21 : pSpan->SetStyleName(tabFrib->GetStyleName());
205 [ + - ]: 21 : XFTabStop *pTab = new XFTabStop();
206 [ + - ]: 21 : pSpan->Add(pTab);
207 [ + - ]: 21 : m_pXFPara->Add(pSpan);
208 : : }
209 : : else
210 : : {
211 [ + - ]: 33 : XFTabStop *pTab = new XFTabStop();
212 [ + - ]: 33 : m_pXFPara->Add(pTab);
213 : : }
214 : : }
215 : 54 : break;
216 : : case FRIB_TAG_SECTION:
217 : : {
218 : 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
219 [ # # ]: 0 : pSectionFrib->ParseSection();
220 : : }
221 : 0 : break;
222 : :
223 : : case FRIB_TAG_PAGEBREAK:
224 : : {
225 : 15 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
226 [ + - ][ + - ]: 15 : LwpPageLayout* pLayout = dynamic_cast<LwpPageLayout*>(pPageBreak->GetLayout()->obj());
227 [ - + ]: 15 : if(pLayout)
228 : : {
229 [ # # ]: 0 : pPageBreak->ParseLayout();
230 : : }
231 : : else
232 : : {
233 [ + - ]: 15 : if (pPageBreak->IsLastFrib() == sal_True)
234 : : {
235 [ + - ]: 15 : m_pXFPara->SetStyleName( pPageBreak->GetStyleName() );
236 : : }
237 : : else
238 : : {
239 : : //parse pagebreak
240 [ # # ][ # # ]: 0 : XFParagraph *pPara = new XFParagraph();
241 [ # # ]: 0 : pPara->SetStyleName(pFrib->GetStyleName());
242 : 0 : SetXFPara(pPara);
243 [ # # ]: 0 : m_pPara->AddXFContent(pPara);
244 : : }
245 : : }
246 : : }
247 : 15 : break;
248 : : case FRIB_TAG_COLBREAK:
249 : : {
250 [ # # ][ # # ]: 0 : XFParagraph *pPara = new XFParagraph();
251 [ # # ]: 0 : pPara->SetStyleName(pFrib->GetStyleName());
252 : 0 : SetXFPara(pPara);
253 [ # # ]: 0 : m_pPara->AddXFContent(pPara);
254 : : }
255 : 0 : break;
256 : : case FRIB_TAG_LINEBREAK:
257 : : {
258 [ # # ]: 0 : XFLineBreak *pLineBreak = new XFLineBreak();
259 [ # # ]: 0 : m_pXFPara->Add(pLineBreak);
260 : : }
261 : 0 : break;
262 : : case FRIB_TAG_UNICODE: //fall through
263 : : case FRIB_TAG_UNICODE2: //fall through
264 : : case FRIB_TAG_UNICODE3: //fall through
265 : : {
266 : 0 : LwpFribUnicode* unicodeFrib= static_cast<LwpFribUnicode*>(pFrib);
267 [ # # ][ # # ]: 0 : unicodeFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
268 : : }
269 : 0 : break;
270 : : case FRIB_TAG_HARDSPACE:
271 : : {
272 : 0 : rtl::OUString sHardSpace(sal_Unicode(0x00a0));
273 : : LwpHyperlinkMgr* pHyperlink =
274 [ # # ]: 0 : m_pPara->GetStory()->GetHyperlinkMgr();
275 [ # # ]: 0 : if (pHyperlink->GetHyperlinkFlag())
276 [ # # ]: 0 : pFrib->ConvertHyperLink(m_pXFPara,pHyperlink,sHardSpace);
277 : : else
278 [ # # ]: 0 : pFrib->ConvertChars(m_pXFPara,sHardSpace);
279 : : }
280 : 0 : break;
281 : : case FRIB_TAG_SOFTHYPHEN:
282 : : {
283 : 0 : rtl::OUString sSoftHyphen(sal_Unicode(0x00ad));
284 [ # # ]: 0 : pFrib->ConvertChars(m_pXFPara,sSoftHyphen);
285 : : }
286 : 0 : break;
287 : : case FRIB_TAG_FRAME:
288 : : {
289 : 39 : LwpFribFrame* frameFrib= static_cast<LwpFribFrame*>(pFrib);
290 [ + - ]: 39 : LwpObject* pLayout = frameFrib->GetLayout();
291 [ + - ][ - + ]: 39 : if (pLayout && pLayout->GetTag() == VO_DROPCAPLAYOUT)
[ - + ]
292 [ # # ]: 0 : m_pPara->GetFoundry()->GetDropcapMgr()->SetXFPara(m_pXFPara);
293 [ + - ]: 39 : frameFrib->XFConvert(m_pXFPara);
294 : : }
295 : 39 : break;
296 : : case FRIB_TAG_CHBLOCK:
297 : : {
298 : 0 : LwpFribCHBlock* chbFrib = static_cast<LwpFribCHBlock*>(pFrib);
299 [ # # ][ # # ]: 0 : chbFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
300 : : }
301 : 0 : break;
302 : : case FRIB_TAG_TABLE:
303 : : {
304 : 3 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
305 : : //tableFrib->XFConvert(m_pPara->GetXFContainer());
306 [ + - ]: 3 : tableFrib->XFConvert(m_pXFPara);
307 : : }
308 : 3 : break;
309 : : case FRIB_TAG_BOOKMARK:
310 : : {
311 : 0 : LwpFribBookMark* bookmarkFrib = static_cast<LwpFribBookMark*>(pFrib);
312 [ # # ]: 0 : bookmarkFrib->XFConvert(m_pXFPara);
313 : : }
314 : 0 : break;
315 : : case FRIB_TAG_FOOTNOTE:
316 : : {
317 : 3 : LwpFribFootnote* pFootnoteFrib = static_cast<LwpFribFootnote*>(pFrib);
318 [ + - ]: 3 : pFootnoteFrib->XFConvert(m_pXFPara);
319 : 3 : break;
320 : : }
321 : : case FRIB_TAG_FIELD:
322 : : {
323 : 12 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
324 [ + - ]: 12 : fieldFrib->XFConvert(m_pXFPara);
325 : 12 : break;
326 : : }
327 : : case FRIB_TAG_NOTE:
328 : : {
329 : 0 : LwpFribNote* pNoteFrib = static_cast<LwpFribNote*>(pFrib);
330 [ # # ]: 0 : pNoteFrib->XFConvert(m_pXFPara);
331 : 0 : break;
332 : : }
333 : : case FRIB_TAG_PAGENUMBER:
334 : : {
335 : 9 : LwpFribPageNumber* pagenumFrib = static_cast<LwpFribPageNumber*>(pFrib);
336 [ + - ]: 9 : pagenumFrib->XFConvert(m_pXFPara);
337 : 9 : break;
338 : : }
339 : : case FRIB_TAG_DOCVAR:
340 : : {
341 : 12 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
342 [ + - ]: 12 : docFrib->XFConvert(m_pXFPara);
343 : 12 : break;
344 : : }
345 : : case FRIB_TAG_RUBYMARKER:
346 : : {
347 : 0 : LwpFribRubyMarker* rubyFrib = static_cast<LwpFribRubyMarker*>(pFrib);
348 [ # # ]: 0 : rubyFrib->XFConvert(m_pXFPara);
349 : 0 : break;
350 : : }
351 : : case FRIB_TAG_RUBYFRAME:
352 : : {
353 : 0 : LwpFribRubyFrame* rubyfrmeFrib = static_cast<LwpFribRubyFrame*>(pFrib);
354 [ # # ]: 0 : rubyfrmeFrib->XFConvert(m_pXFPara);
355 : 0 : break;
356 : : }
357 : : default :
358 : 447 : break;
359 : : }
360 : :
361 [ - + ]: 1161 : if (bRevisionFlag )//&& pFrib->GetRevisionType() == LwpFrib::REV_INSERT)
362 : : {
363 [ # # ][ # # ]: 0 : if (nFribType!= FRIB_TAG_TABLE && nFribType != FRIB_TAG_FIELD
[ # # ]
364 : : && nFribType != FRIB_TAG_FRAME)
365 : : {
366 [ # # ]: 0 : if (!sChangeID.isEmpty())
367 : : {
368 [ # # ]: 0 : XFChangeEnd* pChangeEnd = new XFChangeEnd;
369 : 0 : pChangeEnd->SetChangeID(sChangeID);
370 [ # # ]: 0 : m_pXFPara->Add(pChangeEnd);
371 : : }
372 : : }
373 : : }
374 : 1161 : pFrib = pFrib->GetNext();
375 : 1161 : }
376 : :
377 : 447 : }
378 : :
379 : 0 : void LwpFribPtr::FindLayouts()
380 : : {
381 : 0 : LwpFrib* pFrib = m_pFribs;
382 [ # # ]: 0 : while(pFrib)
383 : : {
384 [ # # # ]: 0 : switch(pFrib->GetType())
385 : : {
386 : : case FRIB_TAG_SECTION:
387 : : {
388 : 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
389 : 0 : LwpSection* pSection = pSectionFrib->GetSection();
390 [ # # ]: 0 : if(pSection)
391 : : {
392 : 0 : LwpPageLayout* pLayout = pSection->GetPageLayout();
393 [ # # ]: 0 : if(pLayout)
394 : : {
395 : 0 : LwpLayout::UseWhenType eSectionType = pLayout->GetUseWhenType();
396 [ # # ]: 0 : if(eSectionType==LwpLayout::StartWithinColume)
397 : : {
398 : : //StartWithinColume type not support now
399 : 0 : break;
400 : : }
401 [ # # ]: 0 : LwpStory* pStory = dynamic_cast<LwpStory*>(m_pPara->GetStoryID()->obj());
402 [ # # ]: 0 : if (pStory)
403 : 0 : pStory->AddPageLayout(pSection->GetPageLayout());
404 : : }
405 : : }
406 : :
407 : 0 : break;
408 : : }
409 : : case FRIB_TAG_PAGEBREAK:
410 : : {
411 : 0 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
412 [ # # ]: 0 : LwpPageLayout* pLayout = dynamic_cast<LwpPageLayout*>(pPageBreak->GetLayout()->obj());
413 [ # # ]: 0 : if(pLayout)
414 : : {
415 [ # # ]: 0 : LwpStory* pStory = dynamic_cast<LwpStory*>(m_pPara->GetStoryID()->obj());
416 [ # # ]: 0 : if (pStory)
417 : 0 : pStory->AddPageLayout(pLayout);
418 : : }
419 : 0 : break;
420 : : }
421 : : default:
422 : 0 : break;
423 : : }
424 : 0 : pFrib = pFrib->GetNext();
425 : : }
426 : 0 : }
427 : : /**************************************************************************
428 : : * @descr: Whether has a frib which type is nType
429 : : * @param:
430 : : * @param:
431 : : * @return:
432 : : **************************************************************************/
433 : 861 : LwpFrib* LwpFribPtr::HasFrib(sal_uInt8 nType)
434 : : {
435 : 861 : LwpFrib* pFrib = m_pFribs;
436 [ + + ]: 2979 : while(pFrib)
437 : : {
438 [ + + ]: 2268 : if(pFrib->GetType()==nType)
439 : : {
440 : 150 : return pFrib;
441 : : }
442 : 2118 : pFrib = pFrib->GetNext();
443 : : }
444 : 861 : return NULL;
445 : : }
446 : :
447 : 0 : void LwpFribPtr::GatherAllText()
448 : : {
449 : 0 : LwpFrib* pFrib = m_pFribs;
450 [ # # ]: 0 : while(pFrib)
451 : : {
452 [ # # # ]: 0 : switch(pFrib->GetType())
453 : : {
454 : : case FRIB_TAG_TEXT:
455 : : {
456 : 0 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
457 [ # # ]: 0 : m_pPara->SetAllText(sText);
458 : 0 : break;
459 : : }
460 : : case FRIB_TAG_UNICODE: //fall through
461 : : case FRIB_TAG_UNICODE2: //fall through
462 : : case FRIB_TAG_UNICODE3: //fall through :
463 : : {
464 : 0 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
465 [ # # ]: 0 : m_pPara->SetAllText(sText);
466 : 0 : break;
467 : : }
468 : : default :
469 : 0 : break;
470 : : }
471 : 0 : pFrib = pFrib->GetNext();
472 : : }
473 : 0 : }
474 : :
475 : 786 : void LwpFribPtr::RegisterStyle()
476 : : {
477 : 786 : LwpFrib* pFrib = m_pFribs;
478 [ + + ]: 3216 : while(pFrib)
479 : : {
480 [ + + - + : 2433 : switch(pFrib->GetType())
- - - - +
- + + - +
+ + - -
+ ]
481 : : {
482 : : case FRIB_TAG_TEXT:
483 : : {
484 [ + - ]: 1149 : pFrib->RegisterStyle(m_pPara->GetFoundry());
485 : 1149 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
486 [ + - ][ + - ]: 1149 : ProcessDropcap(m_pPara->GetStory(), pFrib,sText.getLength());
487 : 1149 : break;
488 : : }
489 : : case FRIB_TAG_TAB:
490 : 93 : pFrib->RegisterStyle(m_pPara->GetFoundry());
491 : 93 : break;
492 : : case FRIB_TAG_SECTION:
493 : : {
494 : : //section registerstyle here;
495 : 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
496 : 0 : pSectionFrib->RegisterSectionStyle();
497 : : //for bullet
498 : 0 : pSectionFrib->SetSectionName();
499 : : }
500 : 0 : break;
501 : : case FRIB_TAG_PAGEBREAK:
502 : : {
503 : 27 : LwpFribPageBreak* breakFrib = static_cast<LwpFribPageBreak*>(pFrib);
504 : 27 : breakFrib->RegisterBreakStyle(m_pPara);
505 : : }
506 : 27 : break;
507 : : case FRIB_TAG_COLBREAK:
508 : : {
509 : 0 : LwpFribColumnBreak* breakFrib = static_cast<LwpFribColumnBreak*>(pFrib);
510 : 0 : breakFrib->RegisterBreakStyle(m_pPara);
511 : : }
512 : 0 : break;
513 : : case FRIB_TAG_UNICODE: //fall through
514 : : case FRIB_TAG_UNICODE2: //fall through
515 : : case FRIB_TAG_UNICODE3: //fall through :
516 : : {
517 [ # # ]: 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
518 : 0 : OUString sText = static_cast<LwpFribUnicode*>(pFrib)->GetText();
519 [ # # ][ # # ]: 0 : ProcessDropcap(m_pPara->GetStory(), pFrib,sText.getLength());
520 : 0 : break;
521 : : }
522 : : case FRIB_TAG_HARDSPACE:
523 : 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
524 : 0 : ProcessDropcap(m_pPara->GetStory(),pFrib,1);
525 : 0 : break;
526 : : case FRIB_TAG_SOFTHYPHEN:
527 : 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
528 : 0 : break;
529 : : case FRIB_TAG_FRAME:
530 : : {
531 : 78 : LwpFribFrame* frameFrib = static_cast<LwpFribFrame*>(pFrib);
532 : 78 : frameFrib->SetParaDropcap(m_pPara);
533 : 78 : frameFrib->RegisterStyle(m_pPara->GetFoundry());
534 : : //register framelayout style, ,03/09/2005
535 : : //frameFrib->GetLayout()->RegisterStyle();
536 : : }
537 : 75 : break;
538 : : case FRIB_TAG_CHBLOCK:
539 : 0 : break;
540 : : case FRIB_TAG_TABLE:
541 : : {
542 : 3 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
543 : 3 : tableFrib->RegisterNewStyle();
544 : : }
545 : 3 : break;
546 : : case FRIB_TAG_FOOTNOTE:
547 : : {
548 : 3 : LwpFribFootnote* pFribFootnote = static_cast<LwpFribFootnote*>(pFrib);
549 : 3 : pFribFootnote->RegisterNewStyle();
550 : : }
551 : 3 : break;
552 : : case FRIB_TAG_NOTE:
553 : : {
554 : 0 : LwpFribNote* pNoteFrib = static_cast<LwpFribNote*>(pFrib);
555 : 0 : pNoteFrib->RegisterNewStyle();
556 : 0 : break;
557 : : }
558 : : case FRIB_TAG_PAGENUMBER:
559 : : {
560 : 15 : pFrib->RegisterStyle(m_pPara->GetFoundry());
561 : 15 : break;
562 : : }
563 : : case FRIB_TAG_DOCVAR:
564 : : {
565 : 18 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
566 : 18 : docFrib->RegisterStyle(m_pPara->GetFoundry());
567 : 18 : break;
568 : : }
569 : : case FRIB_TAG_FIELD:
570 : : {
571 : 18 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
572 : 18 : fieldFrib->RegisterStyle(m_pPara->GetFoundry());
573 : 18 : break;
574 : : }
575 : : case FRIB_TAG_BOOKMARK:
576 : : {
577 : 0 : LwpFribBookMark* bookmarkFrib = static_cast<LwpFribBookMark*>(pFrib);
578 : 0 : bookmarkFrib->RegisterStyle(m_pPara->GetFoundry());
579 : 0 : break;
580 : : }
581 : : case FRIB_TAG_RUBYFRAME:
582 : : {
583 : 0 : LwpFribRubyFrame* rubyfrmeFrib = static_cast<LwpFribRubyFrame*>(pFrib);
584 : 0 : rubyfrmeFrib->RegisterStyle(m_pPara->GetFoundry());
585 : 0 : break;
586 : : }
587 : : default :
588 : 1029 : break;
589 : : }
590 [ - + ][ # # ]: 2430 : if (pFrib->GetRevisionFlag() && pFrib->GetType()!= FRIB_TAG_FIELD)
[ - + ]
591 : : {
592 : 0 : LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
593 : 0 : LwpChangeMgr* pChangeMgr = pGlobal->GetLwpChangeMgr();
594 : 0 : pChangeMgr->AddChangeFrib(pFrib);
595 : : }
596 : :
597 : 2430 : pFrib = pFrib->GetNext();
598 : : }
599 : 783 : }
600 : :
601 : 1149 : void LwpFribPtr::ProcessDropcap(LwpStory* pStory,LwpFrib* pFrib,sal_uInt32 nLen)
602 : : {
603 [ + - ]: 1149 : if (pStory)
604 : : {
605 [ - + ]: 1149 : if (pStory->GetDropcapFlag() == sal_True)
606 : : {
607 : 0 : XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
608 [ # # ]: 0 : XFTextStyle* pFribStyle = pXFStyleManager->FindTextStyle(pFrib->GetStyleName());
609 : 0 : pFribStyle->GetFont()->SetFontSize(0);
610 : :
611 [ # # ]: 0 : LwpDropcapLayout* pObj = dynamic_cast<LwpDropcapLayout*>(pStory->GetLayoutsWithMe()->GetOnlyLayout()->obj());
612 [ # # ]: 0 : if (pObj)
613 : 0 : pObj->SetChars(nLen);
614 : : }
615 : : }
616 : 1149 : }
617 : : /**
618 : : * @descr: If the position of pPreLayout is earlier than pNextLayout, return true, or return false, defalut return true
619 : : *
620 : : */
621 : 0 : sal_Bool LwpFribPtr::ComparePagePosition(LwpVirtualLayout* pPreLayout, LwpVirtualLayout* pNextLayout)
622 : : {
623 [ # # ][ # # ]: 0 : if(!pPreLayout || !pNextLayout)
624 : 0 : return sal_True;
625 : :
626 : 0 : LwpFrib* pFrib = m_pFribs;
627 : 0 : LwpVirtualLayout* pLayout = NULL;
628 [ # # ]: 0 : while(pFrib)
629 : : {
630 [ # # # ]: 0 : switch(pFrib->GetType())
631 : : {
632 : : case FRIB_TAG_SECTION:
633 : : {
634 : 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
635 : 0 : LwpSection* pSection = pSectionFrib->GetSection();
636 [ # # ]: 0 : if(pSection)
637 : : {
638 : 0 : pLayout = pSection->GetPageLayout();
639 : : }
640 : :
641 : 0 : break;
642 : : }
643 : : case FRIB_TAG_PAGEBREAK:
644 : : {
645 : 0 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
646 [ # # ]: 0 : pLayout = dynamic_cast<LwpVirtualLayout*>(pPageBreak->GetLayout()->obj());
647 : 0 : break;
648 : : }
649 : : default:
650 : 0 : break;
651 : : }
652 : :
653 [ # # ]: 0 : if(pLayout)
654 : : {
655 [ # # ]: 0 : if(pPreLayout == pLayout)
656 : 0 : return sal_True;
657 [ # # ]: 0 : if(pNextLayout == pLayout)
658 : 0 : return sal_False;
659 : : }
660 : 0 : pFrib = pFrib->GetNext();
661 : : }
662 : :
663 : 0 : return sal_True;
664 : : }
665 : :
666 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|