LCOV - code coverage report
Current view: top level - libreoffice/lotuswordpro/source/filter - lwpfribptr.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 130 284 45.8 %
Date: 2012-12-27 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             : 
      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: */

Generated by: LCOV version 1.10