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 265 : LwpFribPtr::LwpFribPtr()
92 265 : : m_pFribs(NULL),m_pXFPara(NULL),m_pPara(NULL)
93 : {
94 265 : }
95 :
96 265 : LwpFribPtr::~LwpFribPtr()
97 : {
98 265 : LwpFrib* pNextFrib = m_pFribs;
99 265 : LwpFrib* pCurFrib = m_pFribs;
100 1399 : while(pCurFrib)
101 : {
102 869 : pNextFrib = pCurFrib -> GetNext();
103 869 : delete pCurFrib;
104 869 : pCurFrib = pNextFrib;
105 : }
106 265 : }
107 :
108 265 : void LwpFribPtr::ReadPara(LwpObjectStream* pObjStrm)
109 : {
110 265 : LwpFrib* pCurFrib = m_pFribs = NULL;
111 869 : for(;;)
112 : {
113 : // Get the frib type
114 1134 : sal_uInt8 FribTag = pObjStrm->QuickReaduInt8();
115 :
116 1134 : sal_uInt8 FribType = FribTag & ~FRIB_TAG_TYPEMASK;
117 :
118 : // Stop when we hit Elvis
119 1134 : if (FribType == FRIB_TAG_ELVIS)
120 265 : break;
121 :
122 : // skip the editor ID
123 : //pObjStrm->SeekRel(sizeof(sal_uInt8));
124 869 : sal_uInt8 FribEditor = pObjStrm->QuickReaduInt8();
125 869 : if( FribType != FT_MAXIMUM )
126 : {
127 869 : LwpFrib* pFrib = LwpFrib::CreateFrib( m_pPara, pObjStrm, FribTag,FribEditor);
128 869 : if(!m_pFribs)
129 : {
130 265 : m_pFribs = pFrib;
131 : }
132 869 : if(pCurFrib)
133 : {
134 604 : pCurFrib->SetNext(pFrib);
135 : }
136 : else//frist frib in the para,add by 2/1
137 : {
138 265 : if (pFrib->GetType() == FRIB_TAG_TEXT)
139 : {
140 94 : LwpFribText* pText = static_cast<LwpFribText*>(pFrib);
141 94 : if (pFrib->GetModifiers())
142 59 : m_pPara->SetFirstFrib(pText->GetText(),pText->GetModifiers()->FontID);
143 : else
144 35 : m_pPara->SetFirstFrib(pText->GetText(),0);
145 : }
146 : }
147 869 : pCurFrib = pFrib;
148 : }
149 : }
150 265 : }
151 :
152 : #include "lwpdropcapmgr.hxx"
153 149 : void LwpFribPtr::XFConvert()
154 : {
155 149 : LwpFrib* pFrib = m_pFribs;
156 685 : while(pFrib)
157 : {
158 387 : sal_uInt8 nFribType = pFrib->GetType();
159 387 : sal_Bool bRevisionFlag = pFrib->GetRevisionFlag();
160 387 : OUString sChangeID;
161 387 : 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 387 : switch(nFribType)
191 : {
192 : case FRIB_TAG_TEXT:
193 : {
194 189 : LwpFribText* textFrib= static_cast<LwpFribText*>(pFrib);
195 189 : textFrib->XFConvert(m_pXFPara,m_pPara->GetStory());
196 : }
197 189 : break;
198 : case FRIB_TAG_TAB:
199 : {
200 18 : LwpFribTab* tabFrib = static_cast<LwpFribTab*>(pFrib);
201 18 : if (pFrib->m_ModFlag)
202 : {
203 7 : XFTextSpan *pSpan = new XFTextSpan();
204 7 : pSpan->SetStyleName(tabFrib->GetStyleName());
205 7 : XFTabStop *pTab = new XFTabStop();
206 7 : pSpan->Add(pTab);
207 7 : m_pXFPara->Add(pSpan);
208 : }
209 : else
210 : {
211 11 : XFTabStop *pTab = new XFTabStop();
212 11 : m_pXFPara->Add(pTab);
213 : }
214 : }
215 18 : 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 5 : LwpFribPageBreak* pPageBreak = static_cast<LwpFribPageBreak*>(pFrib);
226 5 : LwpPageLayout* pLayout = dynamic_cast<LwpPageLayout*>(pPageBreak->GetLayout()->obj());
227 5 : if(pLayout)
228 : {
229 0 : pPageBreak->ParseLayout();
230 : }
231 : else
232 : {
233 5 : if (pPageBreak->IsLastFrib() == sal_True)
234 : {
235 5 : 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 5 : 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 13 : LwpFribFrame* frameFrib= static_cast<LwpFribFrame*>(pFrib);
290 13 : LwpObject* pLayout = frameFrib->GetLayout();
291 13 : if (pLayout && pLayout->GetTag() == VO_DROPCAPLAYOUT)
292 0 : m_pPara->GetFoundry()->GetDropcapMgr()->SetXFPara(m_pXFPara);
293 13 : frameFrib->XFConvert(m_pXFPara);
294 : }
295 13 : 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 1 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
305 : //tableFrib->XFConvert(m_pPara->GetXFContainer());
306 1 : tableFrib->XFConvert(m_pXFPara);
307 : }
308 1 : 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 1 : LwpFribFootnote* pFootnoteFrib = static_cast<LwpFribFootnote*>(pFrib);
318 1 : pFootnoteFrib->XFConvert(m_pXFPara);
319 1 : break;
320 : }
321 : case FRIB_TAG_FIELD:
322 : {
323 4 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
324 4 : fieldFrib->XFConvert(m_pXFPara);
325 4 : 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 3 : LwpFribPageNumber* pagenumFrib = static_cast<LwpFribPageNumber*>(pFrib);
336 3 : pagenumFrib->XFConvert(m_pXFPara);
337 3 : break;
338 : }
339 : case FRIB_TAG_DOCVAR:
340 : {
341 4 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
342 4 : docFrib->XFConvert(m_pXFPara);
343 4 : 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 149 : break;
359 : }
360 :
361 387 : 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 387 : pFrib = pFrib->GetNext();
375 387 : }
376 :
377 149 : }
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 287 : LwpFrib* LwpFribPtr::HasFrib(sal_uInt8 nType)
434 : {
435 287 : LwpFrib* pFrib = m_pFribs;
436 1280 : while(pFrib)
437 : {
438 756 : if(pFrib->GetType()==nType)
439 : {
440 50 : return pFrib;
441 : }
442 706 : pFrib = pFrib->GetNext();
443 : }
444 237 : 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 262 : void LwpFribPtr::RegisterStyle()
476 : {
477 262 : LwpFrib* pFrib = m_pFribs;
478 1334 : while(pFrib)
479 : {
480 811 : switch(pFrib->GetType())
481 : {
482 : case FRIB_TAG_TEXT:
483 : {
484 383 : pFrib->RegisterStyle(m_pPara->GetFoundry());
485 383 : OUString sText = static_cast<LwpFribText*>(pFrib)->GetText();
486 383 : ProcessDropcap(m_pPara->GetStory(), pFrib,sText.getLength());
487 383 : break;
488 : }
489 : case FRIB_TAG_TAB:
490 31 : pFrib->RegisterStyle(m_pPara->GetFoundry());
491 31 : 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 9 : LwpFribPageBreak* breakFrib = static_cast<LwpFribPageBreak*>(pFrib);
504 9 : breakFrib->RegisterBreakStyle(m_pPara);
505 : }
506 9 : 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 26 : LwpFribFrame* frameFrib = static_cast<LwpFribFrame*>(pFrib);
532 26 : frameFrib->SetParaDropcap(m_pPara);
533 26 : frameFrib->RegisterStyle(m_pPara->GetFoundry());
534 : //register framelayout style, ,03/09/2005
535 : //frameFrib->GetLayout()->RegisterStyle();
536 : }
537 25 : break;
538 : case FRIB_TAG_CHBLOCK:
539 0 : break;
540 : case FRIB_TAG_TABLE:
541 : {
542 1 : LwpFribTable* tableFrib = static_cast<LwpFribTable*>(pFrib);
543 1 : tableFrib->RegisterNewStyle();
544 : }
545 1 : break;
546 : case FRIB_TAG_FOOTNOTE:
547 : {
548 1 : LwpFribFootnote* pFribFootnote = static_cast<LwpFribFootnote*>(pFrib);
549 1 : pFribFootnote->RegisterNewStyle();
550 : }
551 1 : 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 5 : pFrib->RegisterStyle(m_pPara->GetFoundry());
561 5 : break;
562 : }
563 : case FRIB_TAG_DOCVAR:
564 : {
565 6 : LwpFribDocVar* docFrib = static_cast<LwpFribDocVar*>(pFrib);
566 6 : docFrib->RegisterStyle(m_pPara->GetFoundry());
567 6 : break;
568 : }
569 : case FRIB_TAG_FIELD:
570 : {
571 6 : LwpFribField* fieldFrib = static_cast<LwpFribField*>(pFrib);
572 6 : fieldFrib->RegisterStyle(m_pPara->GetFoundry());
573 6 : 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 343 : break;
589 : }
590 810 : 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 810 : pFrib = pFrib->GetNext();
598 : }
599 261 : }
600 :
601 383 : void LwpFribPtr::ProcessDropcap(LwpStory* pStory,LwpFrib* pFrib,sal_uInt32 nLen)
602 : {
603 383 : if (pStory)
604 : {
605 383 : 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 383 : }
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: */
|