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 524 : LwpFribPtr::LwpFribPtr()
91 524 : : m_pFribs(NULL),m_pXFPara(NULL),m_pPara(NULL)
92 : {
93 524 : }
94 :
95 524 : LwpFribPtr::~LwpFribPtr()
96 : {
97 524 : LwpFrib* pNextFrib = m_pFribs;
98 524 : LwpFrib* pCurFrib = m_pFribs;
99 2776 : while(pCurFrib)
100 : {
101 1728 : pNextFrib = pCurFrib -> GetNext();
102 1728 : delete pCurFrib;
103 1728 : pCurFrib = pNextFrib;
104 : }
105 524 : }
106 :
107 524 : void LwpFribPtr::ReadPara(LwpObjectStream* pObjStrm)
108 : {
109 524 : LwpFrib* pCurFrib = m_pFribs = NULL;
110 : for(;;)
111 : {
112 : // Get the frib type
113 2252 : sal_uInt8 FribTag = pObjStrm->QuickReaduInt8();
114 :
115 2252 : sal_uInt8 FribType = FribTag & ~FRIB_TAG_TYPEMASK;
116 :
117 : // Stop when we hit Elvis
118 2252 : if (FribType == FRIB_TAG_ELVIS)
119 524 : break;
120 :
121 : // skip the editor ID
122 : //pObjStrm->SeekRel(sizeof(sal_uInt8));
123 1728 : sal_uInt8 FribEditor = pObjStrm->QuickReaduInt8();
124 1728 : if( FribType != FT_MAXIMUM )
125 : {
126 1728 : LwpFrib* pFrib = LwpFrib::CreateFrib( m_pPara, pObjStrm, FribTag,FribEditor);
127 1728 : if(!m_pFribs)
128 : {
129 524 : m_pFribs = pFrib;
130 : }
131 1728 : if(pCurFrib)
132 : {
133 1204 : pCurFrib->SetNext(pFrib);
134 : }
135 : else//frist frib in the para,add by 2/1
136 : {
137 524 : if (pFrib->GetType() == FRIB_TAG_TEXT)
138 : {
139 184 : LwpFribText* pText = static_cast<LwpFribText*>(pFrib);
140 184 : if (pFrib->GetModifiers())
141 118 : m_pPara->SetFirstFrib(pText->GetText(),pText->GetModifiers()->FontID);
142 : else
143 66 : m_pPara->SetFirstFrib(pText->GetText(),0);
144 : }
145 : }
146 1728 : pCurFrib = pFrib;
147 : }
148 1728 : }
149 524 : }
150 :
151 : #include "lwpdropcapmgr.hxx"
152 292 : void LwpFribPtr::XFConvert()
153 : {
154 292 : LwpFrib* pFrib = m_pFribs;
155 1348 : while(pFrib)
156 : {
157 764 : sal_uInt8 nFribType = pFrib->GetType();
158 764 : bool bRevisionFlag = pFrib->GetRevisionFlag();
159 764 : OUString sChangeID;
160 764 : if (bRevisionFlag)
161 : {
162 0 : if ( nFribType!= FRIB_TAG_TABLE && nFribType != FRIB_TAG_FIELD
163 0 : && nFribType != FRIB_TAG_FRAME)
164 : {
165 : //sal_uInt8 nRevisionType = pFrib->GetRevisionType();
166 0 : LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
167 0 : LwpChangeMgr* pChangeMgr = pGlobal->GetLwpChangeMgr();
168 0 : sChangeID = pChangeMgr->GetChangeID(pFrib);
169 0 : if (!sChangeID.isEmpty())
170 : {
171 : /// if (nRevisionType == LwpFrib::REV_INSERT)
172 : /// {
173 0 : XFChangeStart* pChangeStart = new XFChangeStart;
174 0 : pChangeStart->SetChangeID(sChangeID);
175 0 : m_pXFPara->Add(pChangeStart);
176 : /// }
177 : /// else if (nRevisionType == LwpFrib::REV_DELETE)
178 : /// {
179 : /// XFChange* pChange = new XFChange;
180 : /// pChange->SetChangeID(sChangeID);
181 : /// m_pXFPara->Add(pChange);
182 : /// pFrib = pFrib->GetNext();
183 : /// continue;
184 : /// }
185 : }
186 : }
187 : }
188 :
189 764 : switch(nFribType)
190 : {
191 : case FRIB_TAG_TEXT:
192 : {
193 374 : LwpFribText* textFrib= static_cast<LwpFribText*>(pFrib);
194 374 : textFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
195 : }
196 374 : break;
197 : case FRIB_TAG_TAB:
198 : {
199 36 : LwpFribTab* tabFrib = static_cast<LwpFribTab*>(pFrib);
200 36 : if (pFrib->m_ModFlag)
201 : {
202 14 : XFTextSpan *pSpan = new XFTextSpan();
203 14 : pSpan->SetStyleName(tabFrib->GetStyleName());
204 14 : XFTabStop *pTab = new XFTabStop();
205 14 : pSpan->Add(pTab);
206 14 : m_pXFPara->Add(pSpan);
207 : }
208 : else
209 : {
210 22 : XFTabStop *pTab = new XFTabStop();
211 22 : m_pXFPara->Add(pTab);
212 : }
213 : }
214 36 : break;
215 : case FRIB_TAG_SECTION:
216 : {
217 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
218 0 : pSectionFrib->ParseSection();
219 : }
220 0 : break;
221 :
222 : case FRIB_TAG_PAGEBREAK:
223 : {
224 10 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
225 10 : LwpPageLayout* pLayout = dynamic_cast<LwpPageLayout*>(pPageBreak->GetLayout().obj().get());
226 10 : if(pLayout)
227 : {
228 0 : pPageBreak->ParseLayout();
229 : }
230 : else
231 : {
232 10 : if (pPageBreak->IsLastFrib())
233 : {
234 10 : m_pXFPara->SetStyleName( pPageBreak->GetStyleName() );
235 : }
236 : else
237 : {
238 : //parse pagebreak
239 0 : XFParagraph *pPara = new XFParagraph();
240 0 : pPara->SetStyleName(pFrib->GetStyleName());
241 0 : SetXFPara(pPara);
242 0 : m_pPara->AddXFContent(pPara);
243 : }
244 : }
245 : }
246 10 : break;
247 : case FRIB_TAG_COLBREAK:
248 : {
249 0 : XFParagraph *pPara = new XFParagraph();
250 0 : pPara->SetStyleName(pFrib->GetStyleName());
251 0 : SetXFPara(pPara);
252 0 : m_pPara->AddXFContent(pPara);
253 : }
254 0 : break;
255 : case FRIB_TAG_LINEBREAK:
256 : {
257 0 : XFLineBreak *pLineBreak = new XFLineBreak();
258 0 : m_pXFPara->Add(pLineBreak);
259 : }
260 0 : break;
261 : case FRIB_TAG_UNICODE: //fall through
262 : case FRIB_TAG_UNICODE2: //fall through
263 : case FRIB_TAG_UNICODE3: //fall through
264 : {
265 0 : LwpFribUnicode* unicodeFrib= static_cast<LwpFribUnicode*>(pFrib);
266 0 : unicodeFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
267 : }
268 0 : break;
269 : case FRIB_TAG_HARDSPACE:
270 : {
271 0 : OUString sHardSpace(sal_Unicode(0x00a0));
272 : LwpHyperlinkMgr* pHyperlink =
273 0 : m_pPara->GetStory()->GetHyperlinkMgr();
274 0 : if (pHyperlink->GetHyperlinkFlag())
275 0 : pFrib->ConvertHyperLink(m_pXFPara,pHyperlink,sHardSpace);
276 : else
277 0 : pFrib->ConvertChars(m_pXFPara,sHardSpace);
278 : }
279 0 : break;
280 : case FRIB_TAG_SOFTHYPHEN:
281 : {
282 0 : OUString sSoftHyphen(sal_Unicode(0x00ad));
283 0 : pFrib->ConvertChars(m_pXFPara,sSoftHyphen);
284 : }
285 0 : break;
286 : case FRIB_TAG_FRAME:
287 : {
288 26 : LwpFribFrame* frameFrib= static_cast<LwpFribFrame*>(pFrib);
289 26 : rtl::Reference<LwpObject> pLayout = frameFrib->GetLayout();
290 26 : if (pLayout.is() && pLayout->GetTag() == VO_DROPCAPLAYOUT)
291 0 : m_pPara->GetFoundry()->GetDropcapMgr()->SetXFPara(m_pXFPara);
292 26 : frameFrib->XFConvert(m_pXFPara);
293 : }
294 26 : break;
295 : case FRIB_TAG_CHBLOCK:
296 : {
297 0 : LwpFribCHBlock* chbFrib = static_cast<LwpFribCHBlock*>(pFrib);
298 0 : chbFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
299 : }
300 0 : break;
301 : case FRIB_TAG_TABLE:
302 : {
303 2 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
304 : //tableFrib->XFConvert(m_pPara->GetXFContainer());
305 2 : tableFrib->XFConvert(m_pXFPara);
306 : }
307 2 : break;
308 : case FRIB_TAG_BOOKMARK:
309 : {
310 0 : LwpFribBookMark* bookmarkFrib = static_cast<LwpFribBookMark*>(pFrib);
311 0 : bookmarkFrib->XFConvert(m_pXFPara);
312 : }
313 0 : break;
314 : case FRIB_TAG_FOOTNOTE:
315 : {
316 2 : LwpFribFootnote* pFootnoteFrib = static_cast<LwpFribFootnote*>(pFrib);
317 2 : pFootnoteFrib->XFConvert(m_pXFPara);
318 2 : break;
319 : }
320 : case FRIB_TAG_FIELD:
321 : {
322 8 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
323 8 : fieldFrib->XFConvert(m_pXFPara);
324 8 : break;
325 : }
326 : case FRIB_TAG_NOTE:
327 : {
328 0 : LwpFribNote* pNoteFrib = static_cast<LwpFribNote*>(pFrib);
329 0 : pNoteFrib->XFConvert(m_pXFPara);
330 0 : break;
331 : }
332 : case FRIB_TAG_PAGENUMBER:
333 : {
334 6 : LwpFribPageNumber* pagenumFrib = static_cast<LwpFribPageNumber*>(pFrib);
335 6 : pagenumFrib->XFConvert(m_pXFPara);
336 6 : break;
337 : }
338 : case FRIB_TAG_DOCVAR:
339 : {
340 8 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
341 8 : docFrib->XFConvert(m_pXFPara);
342 8 : break;
343 : }
344 : case FRIB_TAG_RUBYMARKER:
345 : {
346 0 : LwpFribRubyMarker* rubyFrib = static_cast<LwpFribRubyMarker*>(pFrib);
347 0 : rubyFrib->XFConvert(m_pXFPara);
348 0 : break;
349 : }
350 : case FRIB_TAG_RUBYFRAME:
351 : {
352 0 : LwpFribRubyFrame* rubyfrmeFrib = static_cast<LwpFribRubyFrame*>(pFrib);
353 0 : rubyfrmeFrib->XFConvert(m_pXFPara);
354 0 : break;
355 : }
356 : default :
357 292 : break;
358 : }
359 :
360 764 : if (bRevisionFlag )//&& pFrib->GetRevisionType() == LwpFrib::REV_INSERT)
361 : {
362 0 : if (nFribType!= FRIB_TAG_TABLE && nFribType != FRIB_TAG_FIELD
363 0 : && nFribType != FRIB_TAG_FRAME)
364 : {
365 0 : if (!sChangeID.isEmpty())
366 : {
367 0 : XFChangeEnd* pChangeEnd = new XFChangeEnd;
368 0 : pChangeEnd->SetChangeID(sChangeID);
369 0 : m_pXFPara->Add(pChangeEnd);
370 : }
371 : }
372 : }
373 764 : pFrib = pFrib->GetNext();
374 764 : }
375 :
376 292 : }
377 :
378 0 : void LwpFribPtr::FindLayouts()
379 : {
380 0 : LwpFrib* pFrib = m_pFribs;
381 0 : while(pFrib)
382 : {
383 0 : switch(pFrib->GetType())
384 : {
385 : case FRIB_TAG_SECTION:
386 : {
387 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
388 0 : LwpSection* pSection = pSectionFrib->GetSection();
389 0 : if(pSection)
390 : {
391 0 : LwpPageLayout* pLayout = pSection->GetPageLayout();
392 0 : if(pLayout)
393 : {
394 0 : LwpLayout::UseWhenType eSectionType = pLayout->GetUseWhenType();
395 0 : if(eSectionType==LwpLayout::StartWithinColume)
396 : {
397 : //StartWithinColume type not support now
398 0 : break;
399 : }
400 0 : LwpStory* pStory = dynamic_cast<LwpStory*>(m_pPara->GetStoryID().obj().get());
401 0 : if (pStory)
402 0 : pStory->AddPageLayout(pSection->GetPageLayout());
403 : }
404 : }
405 :
406 0 : break;
407 : }
408 : case FRIB_TAG_PAGEBREAK:
409 : {
410 0 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
411 0 : LwpPageLayout* pLayout = dynamic_cast<LwpPageLayout*>(pPageBreak->GetLayout().obj().get());
412 0 : if(pLayout)
413 : {
414 0 : LwpStory* pStory = dynamic_cast<LwpStory*>(m_pPara->GetStoryID().obj().get());
415 0 : if (pStory)
416 0 : pStory->AddPageLayout(pLayout);
417 : }
418 0 : break;
419 : }
420 : default:
421 0 : break;
422 : }
423 0 : pFrib = pFrib->GetNext();
424 : }
425 0 : }
426 : /**************************************************************************
427 : * @descr: Whether has a frib which type is nType
428 : * @param:
429 : * @param:
430 : * @return:
431 : **************************************************************************/
432 568 : LwpFrib* LwpFribPtr::HasFrib(sal_uInt8 nType)
433 : {
434 568 : LwpFrib* pFrib = m_pFribs;
435 2538 : while(pFrib)
436 : {
437 1502 : if(pFrib->GetType()==nType)
438 : {
439 100 : return pFrib;
440 : }
441 1402 : pFrib = pFrib->GetNext();
442 : }
443 468 : return NULL;
444 : }
445 :
446 0 : void LwpFribPtr::GatherAllText()
447 : {
448 0 : LwpFrib* pFrib = m_pFribs;
449 0 : while(pFrib)
450 : {
451 0 : switch(pFrib->GetType())
452 : {
453 : case FRIB_TAG_TEXT:
454 : {
455 0 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
456 0 : m_pPara->SetAllText(sText);
457 0 : break;
458 : }
459 : case FRIB_TAG_UNICODE: //fall through
460 : case FRIB_TAG_UNICODE2: //fall through
461 : case FRIB_TAG_UNICODE3: //fall through :
462 : {
463 0 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
464 0 : m_pPara->SetAllText(sText);
465 0 : break;
466 : }
467 : default :
468 0 : break;
469 : }
470 0 : pFrib = pFrib->GetNext();
471 : }
472 0 : }
473 :
474 518 : void LwpFribPtr::RegisterStyle()
475 : {
476 518 : LwpFrib* pFrib = m_pFribs;
477 2646 : while(pFrib)
478 : {
479 1612 : switch(pFrib->GetType())
480 : {
481 : case FRIB_TAG_TEXT:
482 : {
483 762 : pFrib->RegisterStyle(m_pPara->GetFoundry());
484 762 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
485 762 : ProcessDropcap(m_pPara->GetStory(), pFrib,sText.getLength());
486 762 : break;
487 : }
488 : case FRIB_TAG_TAB:
489 62 : pFrib->RegisterStyle(m_pPara->GetFoundry());
490 62 : break;
491 : case FRIB_TAG_SECTION:
492 : {
493 : //section registerstyle here;
494 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
495 0 : pSectionFrib->RegisterSectionStyle();
496 : //for bullet
497 0 : pSectionFrib->SetSectionName();
498 : }
499 0 : break;
500 : case FRIB_TAG_PAGEBREAK:
501 : {
502 18 : LwpFribPageBreak* breakFrib = static_cast<LwpFribPageBreak*>(pFrib);
503 18 : breakFrib->RegisterBreakStyle(m_pPara);
504 : }
505 18 : break;
506 : case FRIB_TAG_COLBREAK:
507 : {
508 0 : LwpFribColumnBreak* breakFrib = static_cast<LwpFribColumnBreak*>(pFrib);
509 0 : breakFrib->RegisterBreakStyle(m_pPara);
510 : }
511 0 : break;
512 : case FRIB_TAG_UNICODE: //fall through
513 : case FRIB_TAG_UNICODE2: //fall through
514 : case FRIB_TAG_UNICODE3: //fall through :
515 : {
516 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
517 0 : OUString sText = static_cast<LwpFribUnicode*>(pFrib)->GetText();
518 0 : ProcessDropcap(m_pPara->GetStory(), pFrib,sText.getLength());
519 0 : break;
520 : }
521 : case FRIB_TAG_HARDSPACE:
522 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
523 0 : ProcessDropcap(m_pPara->GetStory(),pFrib,1);
524 0 : break;
525 : case FRIB_TAG_SOFTHYPHEN:
526 0 : pFrib->RegisterStyle(m_pPara->GetFoundry());
527 0 : break;
528 : case FRIB_TAG_FRAME:
529 : {
530 52 : LwpFribFrame* frameFrib = static_cast<LwpFribFrame*>(pFrib);
531 52 : frameFrib->SetParaDropcap(m_pPara);
532 52 : frameFrib->RegisterStyle(m_pPara->GetFoundry());
533 : //register framelayout style, ,03/09/2005
534 : //frameFrib->GetLayout()->RegisterStyle();
535 : }
536 50 : break;
537 : case FRIB_TAG_CHBLOCK:
538 0 : break;
539 : case FRIB_TAG_TABLE:
540 : {
541 2 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
542 2 : tableFrib->RegisterNewStyle();
543 : }
544 2 : break;
545 : case FRIB_TAG_FOOTNOTE:
546 : {
547 2 : LwpFribFootnote* pFribFootnote = static_cast<LwpFribFootnote*>(pFrib);
548 2 : pFribFootnote->RegisterNewStyle();
549 : }
550 2 : break;
551 : case FRIB_TAG_NOTE:
552 : {
553 0 : LwpFribNote* pNoteFrib = static_cast<LwpFribNote*>(pFrib);
554 0 : pNoteFrib->RegisterNewStyle();
555 0 : break;
556 : }
557 : case FRIB_TAG_PAGENUMBER:
558 : {
559 10 : pFrib->RegisterStyle(m_pPara->GetFoundry());
560 10 : break;
561 : }
562 : case FRIB_TAG_DOCVAR:
563 : {
564 12 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
565 12 : docFrib->RegisterStyle(m_pPara->GetFoundry());
566 12 : break;
567 : }
568 : case FRIB_TAG_FIELD:
569 : {
570 12 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
571 12 : fieldFrib->RegisterStyle(m_pPara->GetFoundry());
572 12 : break;
573 : }
574 : case FRIB_TAG_BOOKMARK:
575 : {
576 0 : LwpFribBookMark* bookmarkFrib = static_cast<LwpFribBookMark*>(pFrib);
577 0 : bookmarkFrib->RegisterStyle(m_pPara->GetFoundry());
578 0 : break;
579 : }
580 : case FRIB_TAG_RUBYFRAME:
581 : {
582 0 : LwpFribRubyFrame* rubyfrmeFrib = static_cast<LwpFribRubyFrame*>(pFrib);
583 0 : rubyfrmeFrib->RegisterStyle(m_pPara->GetFoundry());
584 0 : break;
585 : }
586 : default :
587 680 : break;
588 : }
589 1610 : if (pFrib->GetRevisionFlag() && pFrib->GetType()!= FRIB_TAG_FIELD)
590 : {
591 0 : LwpGlobalMgr* pGlobal = LwpGlobalMgr::GetInstance();
592 0 : LwpChangeMgr* pChangeMgr = pGlobal->GetLwpChangeMgr();
593 0 : pChangeMgr->AddChangeFrib(pFrib);
594 : }
595 :
596 1610 : pFrib = pFrib->GetNext();
597 : }
598 516 : }
599 :
600 762 : void LwpFribPtr::ProcessDropcap(LwpStory* pStory,LwpFrib* pFrib,sal_uInt32 nLen)
601 : {
602 762 : if (pStory)
603 : {
604 762 : if (pStory->GetDropcapFlag())
605 : {
606 0 : XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
607 0 : XFTextStyle* pFribStyle = pXFStyleManager->FindTextStyle(pFrib->GetStyleName());
608 0 : pFribStyle->GetFont()->SetFontSize(0);
609 :
610 0 : LwpDropcapLayout* pObj = dynamic_cast<LwpDropcapLayout*>(pStory->GetLayoutsWithMe().GetOnlyLayout().obj().get());
611 0 : if (pObj)
612 0 : pObj->SetChars(nLen);
613 : }
614 : }
615 762 : }
616 : /**
617 : * @descr: If the position of pPreLayout is earlier than pNextLayout, return true, or return false, defalut return true
618 : *
619 : */
620 0 : bool LwpFribPtr::ComparePagePosition(LwpVirtualLayout* pPreLayout, LwpVirtualLayout* pNextLayout)
621 : {
622 0 : if(!pPreLayout || !pNextLayout)
623 0 : return true;
624 :
625 0 : LwpFrib* pFrib = m_pFribs;
626 0 : LwpVirtualLayout* pLayout = NULL;
627 0 : while(pFrib)
628 : {
629 0 : switch(pFrib->GetType())
630 : {
631 : case FRIB_TAG_SECTION:
632 : {
633 0 : LwpFribSection* pSectionFrib = static_cast<LwpFribSection*>(pFrib);
634 0 : LwpSection* pSection = pSectionFrib->GetSection();
635 0 : if(pSection)
636 : {
637 0 : pLayout = pSection->GetPageLayout();
638 : }
639 :
640 0 : break;
641 : }
642 : case FRIB_TAG_PAGEBREAK:
643 : {
644 0 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
645 0 : pLayout = dynamic_cast<LwpVirtualLayout*>(pPageBreak->GetLayout().obj().get());
646 0 : break;
647 : }
648 : default:
649 0 : break;
650 : }
651 :
652 0 : if(pLayout)
653 : {
654 0 : if(pPreLayout == pLayout)
655 0 : return true;
656 0 : if(pNextLayout == pLayout)
657 0 : return false;
658 : }
659 0 : pFrib = pFrib->GetNext();
660 : }
661 :
662 0 : return true;
663 : }
664 :
665 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|