LCOV - code coverage report
Current view: top level - lotuswordpro/source/filter - lwprowlayout.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 92 190 48.4 %
Date: 2012-08-25 Functions: 11 19 57.9 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 55 162 34.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  *  The Contents of this file are made available subject to the terms of
       5                 :            :  *  either of the following licenses
       6                 :            :  *
       7                 :            :  *         - GNU Lesser General Public License Version 2.1
       8                 :            :  *         - Sun Industry Standards Source License Version 1.1
       9                 :            :  *
      10                 :            :  *  Sun Microsystems Inc., October, 2000
      11                 :            :  *
      12                 :            :  *  GNU Lesser General Public License Version 2.1
      13                 :            :  *  =============================================
      14                 :            :  *  Copyright 2000 by Sun Microsystems, Inc.
      15                 :            :  *  901 San Antonio Road, Palo Alto, CA 94303, USA
      16                 :            :  *
      17                 :            :  *  This library is free software; you can redistribute it and/or
      18                 :            :  *  modify it under the terms of the GNU Lesser General Public
      19                 :            :  *  License version 2.1, as published by the Free Software Foundation.
      20                 :            :  *
      21                 :            :  *  This library is distributed in the hope that it will be useful,
      22                 :            :  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
      23                 :            :  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      24                 :            :  *  Lesser General Public License for more details.
      25                 :            :  *
      26                 :            :  *  You should have received a copy of the GNU Lesser General Public
      27                 :            :  *  License along with this library; if not, write to the Free Software
      28                 :            :  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
      29                 :            :  *  MA  02111-1307  USA
      30                 :            :  *
      31                 :            :  *
      32                 :            :  *  Sun Industry Standards Source License Version 1.1
      33                 :            :  *  =================================================
      34                 :            :  *  The contents of this file are subject to the Sun Industry Standards
      35                 :            :  *  Source License Version 1.1 (the "License"); You may not use this file
      36                 :            :  *  except in compliance with the License. You may obtain a copy of the
      37                 :            :  *  License at http://www.openoffice.org/license.html.
      38                 :            :  *
      39                 :            :  *  Software provided under this License is provided on an "AS IS" basis,
      40                 :            :  *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
      41                 :            :  *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
      42                 :            :  *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
      43                 :            :  *  See the License for the specific provisions governing your rights and
      44                 :            :  *  obligations concerning the Software.
      45                 :            :  *
      46                 :            :  *  The Initial Developer of the Original Code is: IBM Corporation
      47                 :            :  *
      48                 :            :  *  Copyright: 2008 by IBM Corporation
      49                 :            :  *
      50                 :            :  *  All Rights Reserved.
      51                 :            :  *
      52                 :            :  *  Contributor(s): _______________________________________
      53                 :            :  *
      54                 :            :  *
      55                 :            :  ************************************************************************/
      56                 :            : /**
      57                 :            :  * @file
      58                 :            :  *  For LWP filter architecture prototype - row layouts
      59                 :            :  */
      60                 :            : /*************************************************************************
      61                 :            :  * Change History
      62                 :            :  April 2005         Created
      63                 :            :  ************************************************************************/
      64                 :            : #include "lwprowlayout.hxx"
      65                 :            : #include "lwptable.hxx"
      66                 :            : #include "lwpglobalmgr.hxx"
      67                 :            : #include "xfilter/xfstylemanager.hxx"
      68                 :            : #include "xfilter/xfrow.hxx"
      69                 :            : #include "xfilter/xfrowstyle.hxx"
      70                 :            : #include "xfilter/xftablestyle.hxx"
      71                 :            : #include "xfilter/xftable.hxx"
      72                 :            : #include "xfilter/xfcell.hxx"
      73                 :            : #include "xfilter/xfcellstyle.hxx"
      74                 :            : 
      75                 :         18 : LwpRowLayout::LwpRowLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm)
      76         [ +  - ]:         18 :     : LwpVirtualLayout(objHdr, pStrm)
      77                 :            : {
      78                 :         18 :     m_ConnCellList.clear();
      79                 :         18 : }
      80                 :            : 
      81                 :         18 : LwpRowLayout::~LwpRowLayout()
      82         [ -  + ]:         33 : {}
      83                 :            : 
      84                 :            : /**
      85                 :            :  * @short   register row style
      86                 :            :  * @param
      87                 :            :  * @param
      88                 :            :  * @param
      89                 :            :  * @return
      90                 :            :  */
      91                 :         15 : void LwpRowLayout::SetRowMap(void)
      92                 :            : {
      93                 :         15 :     LwpObjectID *pCellID= GetChildHead();
      94         [ +  + ]:         15 :     LwpCellLayout * pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
      95                 :            : 
      96         [ +  + ]:         24 :     while(pCellLayout)
      97                 :            :     {
      98                 :          9 :         pCellLayout->SetCellMap();
      99                 :            : 
     100                 :          9 :         pCellID = pCellLayout->GetNext();
     101         [ +  + ]:          9 :         pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     102                 :            :     }
     103                 :         15 : }
     104                 :            : /**
     105                 :            :  * @short   register row style
     106                 :            :  * @param
     107                 :            :  * @param
     108                 :            :  * @param
     109                 :            :  * @return
     110                 :            :  */
     111                 :         15 : void LwpRowLayout::RegisterStyle()
     112                 :            : {
     113                 :            :     // register row style
     114         [ +  - ]:         15 :     XFRowStyle *pRowStyle = new XFRowStyle();
     115                 :            : 
     116         [ +  - ]:         15 :     if (m_nDirection & 0x0030)
     117                 :            :     {
     118                 :         15 :         pRowStyle->SetMinRowHeight((float)LwpTools::ConvertFromUnitsToMetric(cheight));
     119                 :            :     }
     120                 :            :     else
     121                 :            :     {
     122                 :          0 :         pRowStyle->SetRowHeight((float)LwpTools::ConvertFromUnitsToMetric(cheight));
     123                 :            :     }
     124                 :         15 :     XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
     125                 :         15 :     m_StyleName = pXFStyleManager->AddStyle(pRowStyle)->GetStyleName();
     126                 :            : 
     127                 :         15 :     LwpTableLayout* pTableLayout = GetParentTableLayout();
     128         [ +  - ]:         15 :     if (pTableLayout)
     129                 :            :     {
     130                 :         15 :         pTableLayout->GetTable();
     131                 :            :     }
     132                 :            :     // register cells' style
     133                 :         15 :     LwpObjectID *pCellID= GetChildHead();
     134         [ +  + ]:         15 :     LwpCellLayout * pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     135                 :            : 
     136         [ +  + ]:         24 :     while(pCellLayout)
     137                 :            :     {
     138                 :          9 :         pCellLayout->SetFoundry(m_pFoundry);
     139                 :          9 :         pCellLayout->RegisterStyle();
     140                 :          9 :         pCellID = pCellLayout->GetNext();
     141         [ +  + ]:          9 :         pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     142                 :            :     }
     143                 :            : 
     144                 :         15 : }
     145                 :            : /**
     146                 :            :  * @short   register row style
     147                 :            :  * @param
     148                 :            :  * @param
     149                 :            :  * @param
     150                 :            :  * @return
     151                 :            :  */
     152                 :         18 : void LwpRowLayout::Read()
     153                 :            : {
     154                 :            :     #define MAXUNIT (0x7fffffffL)               // Highest positive UNIT value
     155                 :         18 :     LwpObjectStream* pStrm = m_pObjStrm;
     156                 :            : 
     157         [ +  - ]:         18 :     LwpVirtualLayout::Read();
     158                 :            : 
     159                 :            :     //skip CLiteLayout data;
     160         [ +  - ]:         18 :     LwpAtomHolder ContentClass;
     161         [ +  - ]:         18 :     ContentClass.Read(pStrm);
     162         [ +  - ]:         18 :     pStrm->SkipExtra();
     163                 :            : 
     164                 :            :     // Row layout content
     165         [ +  - ]:         18 :     crowid = pStrm->QuickReaduInt16();
     166         [ +  - ]:         18 :     cheight = pStrm->QuickReadInt32();
     167         [ +  - ]:         18 :     cLeaderDotCount = (sal_uInt8)pStrm->QuickReaduInt16();  // was written as lushort.
     168                 :         18 :     cLeaderDotY = MAXUNIT;  // Sentinel meaning "not calculated yet"
     169         [ +  - ]:         18 :     cRowFlags = (sal_uInt8)pStrm->QuickReaduInt16();    // was written as lushort.
     170                 :            : 
     171 [ +  - ][ +  - ]:         18 :     pStrm->SkipExtra();
     172                 :         18 : }
     173                 :            : 
     174                 :            : /**
     175                 :            :  * @short   Parse rows with connect cell
     176                 :            :  * @param  pXFTable - pointer to created XFTable
     177                 :            :  */
     178                 :          0 : void LwpRowLayout::ConvertRow(XFTable* pXFTable,sal_uInt8 nStartCol,sal_uInt8 nEndCol)
     179                 :            : {
     180         [ #  # ]:          0 :     XFRow* pXFRow = new XFRow;
     181                 :            : 
     182                 :          0 :     LwpTableLayout* pTableLayout = GetParentTableLayout();
     183                 :          0 :     LwpTable* pTable = pTableLayout->GetTable();
     184                 :            : 
     185                 :            :     //calculate the connected cell position
     186                 :            :     sal_Int32 nMarkConnCell;
     187                 :          0 :     nMarkConnCell = FindMarkConnCell(nStartCol,nEndCol);
     188                 :            : 
     189                 :            :     //if there is no connected cell
     190         [ #  # ]:          0 :     if (nMarkConnCell == -1)
     191                 :            :     {
     192                 :          0 :         ConvertCommonRow(pXFTable,nStartCol,nEndCol);
     193                 :          0 :         return;
     194                 :            :     }
     195                 :            : 
     196                 :            :     //register connect row style
     197                 :          0 :     sal_uInt16 nRowMark = crowid + GetCurMaxSpannedRows(nStartCol,nEndCol);
     198                 :          0 :     RegisterCurRowStyle(pXFRow,nRowMark);
     199                 :            : 
     200                 :            :     //if there is connected cell
     201         [ #  # ]:          0 :     for (sal_uInt8 i=nStartCol; i<nEndCol; )
     202                 :            :     {
     203                 :            :         XFCell* pXFCell;
     204                 :            :         sal_uInt8 nColMark;
     205                 :            : 
     206         [ #  # ]:          0 :         if (nMarkConnCell == -1)
     207                 :          0 :             nColMark = nEndCol;
     208                 :            :         else
     209                 :          0 :             nColMark = m_ConnCellList[nMarkConnCell]->GetColID();
     210                 :            : 
     211         [ #  # ]:          0 :         if (nColMark > i)//create subtable
     212                 :            :         {
     213         [ #  # ]:          0 :             pXFCell = new XFCell;
     214                 :          0 :             pXFCell->SetColumnSpaned(nColMark-i);
     215         [ #  # ]:          0 :             XFTable* pSubTable = new XFTable;
     216                 :          0 :             pTableLayout->ConvertTable(pSubTable,crowid,nRowMark,i,nColMark);
     217                 :          0 :             pXFCell->Add(pSubTable);
     218                 :          0 :             i = nColMark;
     219                 :            :         }
     220                 :            :         else
     221                 :            :         {
     222                 :          0 :             sal_uInt8 nColID = m_ConnCellList[nMarkConnCell]->GetColID()
     223                 :          0 :                     +m_ConnCellList[nMarkConnCell]->GetNumcols()-1;
     224                 :          0 :             pXFCell = m_ConnCellList[nMarkConnCell]->ConvertCell(
     225                 :          0 :                 *pTable->GetObjectID(),
     226                 :          0 :                 crowid+m_ConnCellList[nMarkConnCell]->GetNumrows()-1,
     227                 :          0 :                 m_ConnCellList[nMarkConnCell]->GetColID());
     228                 :            : 
     229                 :            :             //set all cell in this merge cell to cellsmap
     230         [ #  # ]:          0 :             for (sal_uInt16 nRowLoop = crowid;nRowLoop<nRowMark ;nRowLoop++)
     231         [ #  # ]:          0 :                 for (sal_uInt8 nColLoop = i;nColLoop<nColID+1;nColLoop++)
     232                 :          0 :                     pTableLayout->SetCellsMap(nRowLoop,nColLoop,pXFCell);
     233                 :            : 
     234                 :          0 :             i += m_ConnCellList[nMarkConnCell]->GetNumcols();
     235                 :          0 :             nMarkConnCell = FindNextMarkConnCell(static_cast<sal_uInt16>(nMarkConnCell),nEndCol);
     236                 :            :         }
     237                 :            : 
     238         [ #  # ]:          0 :         if (pXFCell)
     239                 :          0 :             pXFRow->AddCell(pXFCell);
     240                 :            :     }
     241                 :          0 :     pXFTable->AddRow(pXFRow);
     242                 :            : }
     243                 :            : 
     244                 :            : /**
     245                 :            :  * @short   register row style in SODC table
     246                 :            :  * @param   pXFRow - pointer of row
     247                 :            :  * @param   nRowMark - spanned row number
     248                 :            :  */
     249                 :          0 : void LwpRowLayout::RegisterCurRowStyle(XFRow* pXFRow,sal_uInt16 nRowMark)
     250                 :            : {
     251                 :            :     XFRowStyle* pRowStyle;
     252 [ #  # ][ #  # ]:          0 :     XFRowStyle* pNewStyle = new XFRowStyle;
     253                 :            :     double fHeight;
     254         [ #  # ]:          0 :     XFStyleManager* pXFStyleManager = LwpGlobalMgr::GetInstance()->GetXFStyleManager();
     255         [ #  # ]:          0 :     pRowStyle = static_cast<XFRowStyle*>(pXFStyleManager->FindStyle(m_StyleName));
     256         [ #  # ]:          0 :     if (!pRowStyle)
     257                 :            :         return;
     258                 :          0 :     fHeight = pRowStyle->GetRowHeight();
     259                 :            : 
     260         [ #  # ]:          0 :     *pNewStyle = *pRowStyle;
     261                 :          0 :     std::map<sal_uInt16,LwpRowLayout*>::iterator iter;
     262         [ #  # ]:          0 :     LwpTableLayout* pTableLayout = GetParentTableLayout();
     263         [ #  # ]:          0 :     if (!pTableLayout)
     264                 :            :         return;
     265         [ #  # ]:          0 :     std::map<sal_uInt16,LwpRowLayout*> RowsMap = pTableLayout->GetRowsMap();
     266                 :            : 
     267         [ #  # ]:          0 :     for (sal_uInt16 i=crowid+1; i<nRowMark;i++)
     268                 :            :     {
     269         [ #  # ]:          0 :         iter = RowsMap.find(i);
     270         [ #  # ]:          0 :         if (iter == RowsMap.end())
     271                 :            :         {
     272                 :            :             pRowStyle = static_cast<XFRowStyle*>(
     273         [ #  # ]:          0 :                 pXFStyleManager->FindStyle(pTableLayout->GetDefaultRowStyleName()));
     274                 :          0 :             fHeight += pRowStyle->GetRowHeight();
     275                 :            :         }
     276                 :            :         else
     277                 :            :         {
     278                 :            :             pRowStyle = static_cast<XFRowStyle*>(
     279 [ #  # ][ #  # ]:          0 :                 pXFStyleManager->FindStyle(iter->second->GetStyleName()));
     280                 :          0 :             fHeight+=pRowStyle->GetRowHeight();
     281                 :            :         }
     282                 :            :     }
     283                 :            : 
     284         [ #  # ]:          0 :     if (m_nDirection & 0x0030)
     285                 :            :     {
     286                 :          0 :         pNewStyle->SetMinRowHeight((float)fHeight);
     287                 :            :     }
     288                 :            :     else
     289                 :            :     {
     290                 :          0 :         pNewStyle->SetRowHeight((float)fHeight);
     291                 :            :     }
     292                 :            : 
     293 [ #  # ][ #  # ]:          0 :     pXFRow->SetStyleName(pXFStyleManager->AddStyle(pNewStyle)->GetStyleName());
                 [ #  # ]
     294                 :            : }
     295                 :            : 
     296                 :            : /**
     297                 :            :  * @short   find max merge cell in a given column range
     298                 :            :  * @param   nStartCol - start column ID
     299                 :            :  * @param   nEndCol - end column ID
     300                 :            :  */
     301                 :         15 : sal_Int32 LwpRowLayout::FindMarkConnCell(sal_uInt8 nStartCol,sal_uInt8 nEndCol)
     302                 :            : {
     303         [ +  - ]:         15 :     if (m_ConnCellList.empty())
     304                 :         15 :         return -1;
     305                 :            : 
     306                 :          0 :     sal_uInt16 nSpannRows = 1;
     307                 :          0 :     sal_Int32 nMarkConnCell = -1;
     308                 :            : 
     309         [ #  # ]:          0 :     for (sal_uInt16 i=0;i<m_ConnCellList.size();i++)
     310                 :            :     {
     311         [ #  # ]:          0 :         if (m_ConnCellList[i]->GetColID()>=nEndCol)
     312                 :          0 :             break;
     313         [ #  # ]:          0 :         if (m_ConnCellList[i]->GetColID()>=nStartCol)
     314                 :            :         {
     315         [ #  # ]:          0 :             if (m_ConnCellList[i]->GetNumrows()>nSpannRows)
     316                 :            :             {
     317                 :          0 :                 nSpannRows = m_ConnCellList[i]->GetNumrows();
     318                 :          0 :                 nMarkConnCell = i;
     319                 :            :             }
     320                 :            :         }
     321                 :            :     }
     322                 :         15 :     return nMarkConnCell;
     323                 :            : }
     324                 :            : 
     325                 :            : /**
     326                 :            :  * @short   find next merge cell with the same spanned row number with current merge cell
     327                 :            :  * @param   nStartCol - start column ID
     328                 :            :  * @param   nEndCol - end column ID
     329                 :            :  */
     330                 :          0 : sal_Int32 LwpRowLayout::FindNextMarkConnCell(sal_uInt16 nMarkConnCell,sal_uInt8 nEndCol)
     331                 :            : {
     332                 :          0 :     sal_uInt16 nMaxRows = m_ConnCellList[nMarkConnCell]->GetNumrows();
     333                 :            : 
     334         [ #  # ]:          0 :     for (sal_uInt16 i=nMarkConnCell+1;i<m_ConnCellList.size();i++)
     335                 :            :     {
     336         [ #  # ]:          0 :         if (m_ConnCellList[i]->GetColID()>=nEndCol)
     337                 :          0 :             break;
     338         [ #  # ]:          0 :         if (m_ConnCellList[i]->GetNumrows() == nMaxRows)
     339                 :            :         {
     340                 :          0 :             return i;
     341                 :            :         }
     342                 :            :     }
     343                 :          0 :     return -1;
     344                 :            : }
     345                 :            : /**
     346                 :            :  * @short   get max spanned row numbers in a given column range
     347                 :            :  * @param   nStartCol - start column ID
     348                 :            :  * @param   nEndCol - end column ID
     349                 :            :  */
     350                 :         15 : sal_uInt16 LwpRowLayout::GetCurMaxSpannedRows(sal_uInt8 nStartCol,sal_uInt8 nEndCol)
     351                 :            : {
     352                 :         15 :     sal_Int32 nMarkConnCell = FindMarkConnCell(nStartCol,nEndCol);
     353         [ +  - ]:         15 :     if (nMarkConnCell == -1)
     354                 :         15 :         return 1;
     355                 :            :     else
     356                 :         15 :         return m_ConnCellList[nMarkConnCell]->GetNumrows();
     357                 :            : }
     358                 :            : /**
     359                 :            :  * @short   convert row with rowlayout,but no merge cells
     360                 :            :  * @param   pXFTable - pointer of table
     361                 :            :  * @param   nStartCol - start column ID
     362                 :            :  * @param   nEndCol - end column ID
     363                 :            :  */
     364                 :         15 : void LwpRowLayout::ConvertCommonRow(XFTable* pXFTable,sal_uInt8 nStartCol,sal_uInt8 nEndCol)
     365                 :            : {
     366         [ +  - ]:         15 :     XFRow* pRow = new XFRow;
     367         [ +  - ]:         15 :     pRow->SetStyleName(m_StyleName);
     368                 :            : 
     369                 :         15 :     XFCell * pCell = NULL;
     370                 :         15 :     LwpTableLayout* pTableLayout = GetParentTableLayout();
     371                 :         15 :     LwpTable* pTable = pTableLayout->GetTable();
     372                 :            :     sal_uInt8 nCellStartCol,nCellEndCol;
     373                 :            : 
     374         [ +  + ]:         75 :     for (sal_uInt8 i = nStartCol; i < nEndCol ; i++)
     375                 :            :     {
     376                 :            :         // add row to table
     377                 :         60 :         LwpObjectID *pCellID= GetChildHead();
     378         [ +  + ]:         60 :         LwpCellLayout * pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     379                 :         60 :         nCellStartCol = i;//mark the begin position of cell
     380                 :         60 :         nCellEndCol = i;//mark the end position of cell
     381         [ +  + ]:         84 :         while(pCellLayout)
     382                 :            :         {
     383         [ +  + ]:         33 :             if (pCellLayout->GetColID() == i)
     384                 :            :             {
     385         [ -  + ]:          9 :                 if (pCellLayout->GetLayoutType() == LWP_CONNECTED_CELL_LAYOUT)
     386                 :            :                 {
     387                 :          0 :                     LwpConnectedCellLayout* pConnCell = static_cast<LwpConnectedCellLayout*>(pCellLayout);
     388                 :          0 :                     nCellEndCol = i+pConnCell->GetNumcols()-1;
     389                 :          0 :                     i = nCellEndCol;
     390                 :            :                 }
     391                 :          9 :                 pCell = pCellLayout->ConvertCell(*pTable->GetObjectID(),crowid,i);
     392                 :          9 :                 break;
     393                 :            :             }
     394                 :         24 :             pCellID = pCellLayout->GetNext();
     395         [ +  + ]:         24 :             pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     396                 :            :         }
     397         [ +  + ]:         60 :         if (!pCellLayout)
     398                 :            :         {
     399                 :            :             // if table has default cell layout, use it to ConvertCell
     400                 :            :             // otherwise use blank cell
     401                 :         51 :             LwpCellLayout * pDefaultCell = pTableLayout->GetDefaultCellLayout();
     402         [ +  - ]:         51 :             if (pDefaultCell)
     403                 :            :             {
     404                 :            :                 pCell = pDefaultCell->ConvertCell(
     405                 :         51 :                     *pTable->GetObjectID(),crowid, i);
     406                 :            :             }
     407                 :            :             else
     408                 :            :             {
     409         [ #  # ]:          0 :                 pCell = new XFCell;
     410                 :            :             }
     411                 :            :         }
     412                 :         60 :         pRow->AddCell(pCell);
     413                 :            : 
     414         [ +  + ]:        120 :         for (sal_uInt8 j=nCellStartCol;j<=nCellEndCol;j++)
     415                 :         60 :             pTableLayout->SetCellsMap(crowid,j,pCell);//set to cellsmap
     416                 :            :     }
     417                 :            : 
     418                 :         15 :     pXFTable->AddRow(pRow);
     419                 :         15 : }
     420                 :            : /**
     421                 :            :  * @short   collect merge cell info when register row styles
     422                 :            :  */
     423                 :         15 : void LwpRowLayout::CollectMergeInfo()
     424                 :            : {
     425                 :         15 :     LwpObjectID *pCellID= GetChildHead();
     426         [ +  + ]:         15 :     LwpCellLayout * pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     427                 :            : 
     428         [ +  + ]:         24 :     while(pCellLayout)
     429                 :            :     {
     430         [ -  + ]:          9 :         if (pCellLayout->GetLayoutType() == LWP_CONNECTED_CELL_LAYOUT)
     431                 :            :         {
     432                 :          0 :             LwpConnectedCellLayout* pConnCell = static_cast<LwpConnectedCellLayout*>(pCellLayout);
     433         [ #  # ]:          0 :             m_ConnCellList.push_back(pConnCell);
     434                 :            :         }
     435                 :          9 :         pCellID = pCellLayout->GetNext();
     436         [ +  + ]:          9 :         pCellLayout = dynamic_cast<LwpCellLayout *>(pCellID->obj());
     437                 :            :     }
     438                 :         15 : }
     439                 :            : /**
     440                 :            :  * @short   split merge cells in this row
     441                 :            :  * @param   nEffectRows - max spanned number of prevoius row
     442                 :            :  */
     443                 :          0 : void LwpRowLayout::SetCellSplit(sal_uInt16 nEffectRows)
     444                 :            : {
     445                 :            :     LwpConnectedCellLayout* pConnCell;
     446         [ #  # ]:          0 :     for (sal_uInt32 i=0; i<m_ConnCellList.size(); i++)
     447                 :            :     {
     448                 :          0 :         pConnCell = m_ConnCellList[i];
     449                 :          0 :         sal_uInt16 nRowSpan = pConnCell->GetRowID()+pConnCell->GetNumrows();
     450         [ #  # ]:          0 :         if ( nRowSpan > nEffectRows )
     451                 :            :         {
     452                 :          0 :             pConnCell->SetNumrows(nEffectRows - pConnCell->GetRowID());
     453                 :            :         }
     454                 :            :     }
     455                 :          0 : }
     456                 :            : /**
     457                 :            :  * @short   check if the row has merge cell
     458                 :            :  */
     459                 :         15 : sal_Bool LwpRowLayout::GetMergeCellFlag()
     460                 :            : {
     461         [ +  - ]:         15 :     if (m_ConnCellList.empty())
     462                 :         15 :         return sal_False;
     463                 :            :     else
     464                 :         15 :         return sal_True;
     465                 :            : }
     466                 :            : 
     467                 :            : 
     468                 :          0 : LwpRowHeadingLayout::LwpRowHeadingLayout(LwpObjectHeader &objHdr, LwpSvStream* pStrm)
     469         [ #  # ]:          0 :     : LwpRowLayout(objHdr, pStrm)
     470                 :          0 : {}
     471                 :            : 
     472                 :          0 : LwpRowHeadingLayout::~LwpRowHeadingLayout()
     473         [ #  # ]:          0 : {}
     474                 :          0 : void LwpRowHeadingLayout::Read()
     475                 :            : {
     476                 :          0 :     LwpRowLayout::Read();
     477                 :            : 
     478                 :          0 :     cRowLayout.ReadIndexed(m_pObjStrm);
     479                 :          0 :     m_pObjStrm->SkipExtra();
     480                 :          0 : }
     481                 :            : 
     482                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10