LCOV - code coverage report
Current view: top level - lotuswordpro/source/filter - lwpfribptr.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 130 286 45.5 %
Date: 2014-11-03 Functions: 7 10 70.0 %
Legend: Lines: hit not hit

          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: */

Generated by: LCOV version 1.10