LCOV - code coverage report
Current view: top level - writerfilter/source/dmapper - TDefTableHandler.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 154 365 42.2 %
Date: 2014-04-11 Functions: 12 15 80.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             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : #include <TDefTableHandler.hxx>
      20             : #include <PropertyMap.hxx>
      21             : #include <ConversionHelper.hxx>
      22             : #include <ooxml/resourceids.hxx>
      23             : #include <filter/msfilter/util.hxx>
      24             : #include <com/sun/star/table/BorderLine2.hpp>
      25             : #include <com/sun/star/text/TableColumnSeparator.hpp>
      26             : #include <com/sun/star/text/VertOrientation.hpp>
      27             : 
      28             : #include "dmapperLoggers.hxx"
      29             : 
      30             : namespace writerfilter {
      31             : namespace dmapper {
      32             : 
      33             : using namespace ::com::sun::star;
      34             : 
      35             : 
      36             : 
      37        3891 : TDefTableHandler::TDefTableHandler(bool bOOXML) :
      38             : LoggedProperties(dmapper_logger, "TDefTableHandler"),
      39             : m_nLineWidth(0),
      40             : m_nLineType(0),
      41             : m_nLineColor(0),
      42             : m_nLineDistance(0),
      43        3891 : m_bOOXML( bOOXML )
      44             : {
      45        3891 : }
      46             : 
      47             : 
      48        7782 : TDefTableHandler::~TDefTableHandler()
      49             : {
      50        7782 : }
      51             : 
      52       15052 : OUString TDefTableHandler::getBorderTypeString(sal_Int32 nType)
      53             : {
      54       15052 :     switch (nType)
      55             :     {
      56        2523 :         case 255: return OUString("nil");
      57        1273 :         case 0: return OUString("none");
      58       10721 :         case 1: return OUString("single");
      59           0 :         case 2: return OUString("thick");
      60         112 :         case 3: return OUString("double");
      61           4 :         case 6: return OUString("dotted");
      62          24 :         case 7: return OUString("dashed");
      63           0 :         case 8: return OUString("dotDash");
      64           0 :         case 9: return OUString("dotDotDash");
      65           0 :         case 10: return OUString("triple");
      66          20 :         case 11: return OUString("thinThickSmallGap");
      67          28 :         case 12: return OUString("thickThinSmallGap");
      68           0 :         case 13: return OUString("thinThickThinSmallGap");
      69           4 :         case 14: return OUString("thinThickMediumGap");
      70          19 :         case 15: return OUString("thickThinMediumGap");
      71           0 :         case 16: return OUString("thinThickThinMediumGap");
      72          49 :         case 17: return OUString("thinThickLargeGap");
      73         148 :         case 18: return OUString("thickThinLargeGap");
      74           0 :         case 19: return OUString("thinThickThinLargeGap");
      75           0 :         case 20: return OUString("wave");
      76           0 :         case 21: return OUString("doubleWave");
      77          60 :         case 22: return OUString("dashSmallGap");
      78           0 :         case 23: return OUString("dashDotStroked");
      79          16 :         case 24: return OUString("threeDEmboss");
      80          16 :         case 25: return OUString("threeDEngrave");
      81           0 :         case 26: return OUString("outset");
      82           0 :         case 27: return OUString("inset");
      83           0 :         case 64: return OUString("apples");
      84           0 :         case 65: return OUString("archedScallops");
      85           0 :         case 66: return OUString("babyPacifier");
      86           0 :         case 67: return OUString("babyRattle");
      87           0 :         case 68: return OUString("balloons3Colors");
      88           0 :         case 69: return OUString("balloonsHotAir");
      89           0 :         case 70: return OUString("basicBlackDashes");
      90           0 :         case 71: return OUString("basicBlackDots");
      91           0 :         case 72: return OUString("basicBlackSquares");
      92           0 :         case 73: return OUString("basicThinLines");
      93           0 :         case 74: return OUString("basicWhiteDashes");
      94           0 :         case 75: return OUString("basicWhiteDots");
      95           0 :         case 76: return OUString("basicWhiteSquares");
      96           0 :         case 77: return OUString("basicWideInline");
      97           0 :         case 78: return OUString("basicWideMidline");
      98           0 :         case 79: return OUString("basicWideOutline");
      99           0 :         case 80: return OUString("bats");
     100           0 :         case 81: return OUString("birds");
     101           0 :         case 82: return OUString("birdsFlight");
     102           0 :         case 83: return OUString("cabins");
     103           0 :         case 84: return OUString("cakeSlice");
     104           0 :         case 85: return OUString("candyCorn");
     105           0 :         case 86: return OUString("celticKnotwork");
     106           0 :         case 87: return OUString("certificateBanner");
     107           0 :         case 88: return OUString("chainLink");
     108           0 :         case 89: return OUString("champagneBottle");
     109           0 :         case 90: return OUString("checkedBarBlack");
     110           0 :         case 91: return OUString("checkedBarColor");
     111           0 :         case 92: return OUString("checkered");
     112           0 :         case 93: return OUString("christmasTree");
     113           0 :         case 94: return OUString("circlesLines");
     114           0 :         case 95: return OUString("circlesRectangles");
     115           0 :         case 96: return OUString("classicalWave");
     116           0 :         case 97: return OUString("clocks");
     117           0 :         case 98: return OUString("compass");
     118           0 :         case 99: return OUString("confetti");
     119           0 :         case 100: return OUString("confettiGrays");
     120           0 :         case 101: return OUString("confettiOutline");
     121           0 :         case 102: return OUString("confettiStreamers");
     122           0 :         case 103: return OUString("confettiWhite");
     123           0 :         case 104: return OUString("cornerTriangles");
     124           0 :         case 105: return OUString("couponCutoutDashes");
     125           0 :         case 106: return OUString("couponCutoutDots");
     126           0 :         case 107: return OUString("crazyMaze");
     127           0 :         case 108: return OUString("creaturesButterfly");
     128           0 :         case 109: return OUString("creaturesFish");
     129           0 :         case 110: return OUString("creaturesInsects");
     130           0 :         case 111: return OUString("creaturesLadyBug");
     131           0 :         case 112: return OUString("crossStitch");
     132           0 :         case 113: return OUString("cup");
     133           0 :         case 114: return OUString("decoArch");
     134           0 :         case 115: return OUString("decoArchColor");
     135           0 :         case 116: return OUString("decoBlocks");
     136           0 :         case 117: return OUString("diamondsGray");
     137           0 :         case 118: return OUString("doubleD");
     138           0 :         case 119: return OUString("doubleDiamonds");
     139           0 :         case 120: return OUString("earth1");
     140           0 :         case 121: return OUString("earth2");
     141           0 :         case 122: return OUString("eclipsingSquares1");
     142           0 :         case 123: return OUString("eclipsingSquares2");
     143           0 :         case 124: return OUString("eggsBlack");
     144           0 :         case 125: return OUString("fans");
     145           0 :         case 126: return OUString("film");
     146           0 :         case 127: return OUString("firecrackers");
     147           0 :         case 128: return OUString("flowersBlockPrint");
     148           0 :         case 129: return OUString("flowersDaisies");
     149           0 :         case 130: return OUString("flowersModern1");
     150           0 :         case 131: return OUString("flowersModern2");
     151           0 :         case 132: return OUString("flowersPansy");
     152           0 :         case 133: return OUString("flowersRedRose");
     153           0 :         case 134: return OUString("flowersRoses");
     154           0 :         case 135: return OUString("flowersTeacup");
     155           0 :         case 136: return OUString("flowersTiny");
     156           0 :         case 137: return OUString("gems");
     157           0 :         case 138: return OUString("gingerbreadMan");
     158           0 :         case 139: return OUString("gradient");
     159           0 :         case 140: return OUString("handmade1");
     160           0 :         case 141: return OUString("handmade2");
     161           0 :         case 142: return OUString("heartBalloon");
     162           0 :         case 143: return OUString("heartGray");
     163           0 :         case 144: return OUString("hearts");
     164           0 :         case 145: return OUString("heebieJeebies");
     165           0 :         case 146: return OUString("holly");
     166           0 :         case 147: return OUString("houseFunky");
     167           0 :         case 148: return OUString("hypnotic");
     168           0 :         case 149: return OUString("iceCreamCones");
     169           0 :         case 150: return OUString("lightBulb");
     170           0 :         case 151: return OUString("lightning1");
     171           0 :         case 152: return OUString("lightning2");
     172           0 :         case 153: return OUString("mapPins");
     173           0 :         case 154: return OUString("mapleLeaf");
     174           0 :         case 155: return OUString("mapleMuffins");
     175           0 :         case 156: return OUString("marquee");
     176           0 :         case 157: return OUString("marqueeToothed");
     177           0 :         case 158: return OUString("moons");
     178           0 :         case 159: return OUString("mosaic");
     179           0 :         case 160: return OUString("musicNotes");
     180           0 :         case 161: return OUString("northwest");
     181           0 :         case 162: return OUString("ovals");
     182           0 :         case 163: return OUString("packages");
     183           0 :         case 164: return OUString("palmsBlack");
     184           0 :         case 165: return OUString("palmsColor");
     185           0 :         case 166: return OUString("paperClips");
     186           0 :         case 167: return OUString("papyrus");
     187           0 :         case 168: return OUString("partyFavor");
     188           0 :         case 169: return OUString("partyGlass");
     189           0 :         case 170: return OUString("pencils");
     190           0 :         case 171: return OUString("people");
     191           0 :         case 172: return OUString("peopleWaving");
     192           0 :         case 173: return OUString("peopleHats");
     193           0 :         case 174: return OUString("poinsettias");
     194           0 :         case 175: return OUString("postageStamp");
     195           0 :         case 176: return OUString("pumpkin1");
     196           0 :         case 177: return OUString("pushPinNote2");
     197           0 :         case 178: return OUString("pushPinNote1");
     198           0 :         case 179: return OUString("pyramids");
     199           0 :         case 180: return OUString("pyramidsAbove");
     200           0 :         case 181: return OUString("quadrants");
     201           0 :         case 182: return OUString("rings");
     202           0 :         case 183: return OUString("safari");
     203           0 :         case 184: return OUString("sawtooth");
     204           0 :         case 185: return OUString("sawtoothGray");
     205           0 :         case 186: return OUString("scaredCat");
     206           0 :         case 187: return OUString("seattle");
     207           0 :         case 188: return OUString("shadowedSquares");
     208           0 :         case 189: return OUString("sharksTeeth");
     209           0 :         case 190: return OUString("shorebirdTracks");
     210           0 :         case 191: return OUString("skyrocket");
     211           0 :         case 192: return OUString("snowflakeFancy");
     212           0 :         case 193: return OUString("snowflakes");
     213           0 :         case 194: return OUString("sombrero");
     214           0 :         case 195: return OUString("southwest");
     215           0 :         case 196: return OUString("stars");
     216           0 :         case 197: return OUString("starsTop");
     217           0 :         case 198: return OUString("stars3d");
     218           0 :         case 199: return OUString("starsBlack");
     219           0 :         case 200: return OUString("starsShadowed");
     220           0 :         case 201: return OUString("sun");
     221           0 :         case 202: return OUString("swirligig");
     222           0 :         case 203: return OUString("tornPaper");
     223           0 :         case 204: return OUString("tornPaperBlack");
     224           0 :         case 205: return OUString("trees");
     225           0 :         case 206: return OUString("triangleParty");
     226           0 :         case 207: return OUString("triangles");
     227           0 :         case 208: return OUString("tribal1");
     228           0 :         case 209: return OUString("tribal2");
     229           0 :         case 210: return OUString("tribal3");
     230           0 :         case 211: return OUString("tribal4");
     231           0 :         case 212: return OUString("tribal5");
     232           0 :         case 213: return OUString("tribal6");
     233           0 :         case 214: return OUString("twistedLines1");
     234           0 :         case 215: return OUString("twistedLines2");
     235           0 :         case 216: return OUString("vine");
     236           0 :         case 217: return OUString("waveline");
     237           0 :         case 218: return OUString("weavingAngles");
     238           0 :         case 219: return OUString("weavingBraid");
     239           0 :         case 220: return OUString("weavingRibbon");
     240           0 :         case 221: return OUString("weavingStrips");
     241           0 :         case 222: return OUString("whiteFlowers");
     242           0 :         case 223: return OUString("woodwork");
     243           0 :         case 224: return OUString("xIllusions");
     244           0 :         case 225: return OUString("zanyTriangles");
     245           0 :         case 226: return OUString("zigZag");
     246           0 :         case 227: return OUString("zigZagStitch");
     247          35 :         default: break;
     248             :     }
     249          35 :     return OUString();
     250             : }
     251             : 
     252        2853 : OUString TDefTableHandler::getThemeColorTypeString(sal_Int32 nType)
     253             : {
     254        2853 :     switch (nType)
     255             :     {
     256           2 :         case NS_ooxml::LN_Value_St_ThemeColor_dark1: return OUString("dark1");
     257           0 :         case NS_ooxml::LN_Value_St_ThemeColor_light1: return OUString("light1");
     258           0 :         case NS_ooxml::LN_Value_St_ThemeColor_dark2: return OUString("dark2");
     259           0 :         case NS_ooxml::LN_Value_St_ThemeColor_light2: return OUString("light2");
     260         927 :         case NS_ooxml::LN_Value_St_ThemeColor_accent1: return OUString("accent1");
     261         259 :         case NS_ooxml::LN_Value_St_ThemeColor_accent2: return OUString("accent2");
     262         105 :         case NS_ooxml::LN_Value_St_ThemeColor_accent3: return OUString("accent3");
     263          15 :         case NS_ooxml::LN_Value_St_ThemeColor_accent4: return OUString("accent4");
     264          35 :         case NS_ooxml::LN_Value_St_ThemeColor_accent5: return OUString("accent5");
     265         233 :         case NS_ooxml::LN_Value_St_ThemeColor_accent6: return OUString("accent6");
     266          72 :         case NS_ooxml::LN_Value_St_ThemeColor_hyperlink: return OUString("hyperlink");
     267          12 :         case NS_ooxml::LN_Value_St_ThemeColor_followedHyperlink: return OUString("followedHyperlink");
     268           0 :         case NS_ooxml::LN_Value_St_ThemeColor_none: return OUString("none");
     269         435 :         case NS_ooxml::LN_Value_St_ThemeColor_background1: return OUString("background1");
     270         600 :         case NS_ooxml::LN_Value_St_ThemeColor_text1: return OUString("text1");
     271           0 :         case NS_ooxml::LN_Value_St_ThemeColor_background2: return OUString("background2");
     272         124 :         case NS_ooxml::LN_Value_St_ThemeColor_text2: return OUString("text2");
     273          34 :         default: break;
     274             :     }
     275          34 :     return OUString();
     276             : }
     277             : 
     278       31336 : void TDefTableHandler::lcl_attribute(Id rName, Value & rVal)
     279             : {
     280       31336 :     sal_Int32 nIntValue = rVal.getInt();
     281             :     (void)nIntValue;
     282             :     (void)rName;
     283       31336 :     switch( rName )
     284             :     {
     285             :         case NS_ooxml::LN_CT_Border_sz:
     286             :             //  width of a single line in 1/8 pt, max of 32 pt -> twip * 5 / 2.
     287        7366 :             m_nLineWidth = nIntValue * 5 / 2;
     288        7366 :             appendGrabBag("sz", OUString::number(nIntValue));
     289        7366 :         break;
     290             :         case NS_ooxml::LN_CT_Border_val:
     291        9512 :             m_nLineType = nIntValue;
     292        9512 :             appendGrabBag("val", TDefTableHandler::getBorderTypeString(nIntValue));
     293        9512 :         break;
     294             :         case NS_ooxml::LN_CT_Border_color:
     295        7159 :             appendGrabBag("color", OStringToOUString(msfilter::util::ConvertColor(nIntValue, /*bAutoColor=*/true), RTL_TEXTENCODING_UTF8));
     296        7159 :             m_nLineColor = nIntValue;
     297        7159 :         break;
     298             :         case NS_ooxml::LN_CT_Border_space:
     299        7065 :             appendGrabBag("space", OUString::number(nIntValue));
     300        7065 :             m_nLineDistance = nIntValue;
     301        7065 :         break;
     302             :         case NS_ooxml::LN_CT_Border_shadow:
     303             :             //if 1 then line has shadow - unsupported
     304             :         case NS_ooxml::LN_CT_Border_frame:
     305             :             // ignored
     306           0 :         break;
     307             :         case NS_ooxml::LN_CT_Border_themeColor:
     308         208 :             appendGrabBag("themeColor", TDefTableHandler::getThemeColorTypeString(nIntValue));
     309         208 :         break;
     310             :         case NS_ooxml::LN_CT_Border_themeTint:
     311             :         case NS_ooxml::LN_CT_Border_themeShade:
     312             :             // ignored
     313          26 :         break;
     314             :         default:
     315             :             OSL_FAIL("unknown attribute");
     316             :     }
     317       31336 : }
     318             : 
     319             : 
     320        9699 : void TDefTableHandler::localResolve(Id rName, writerfilter::Reference<Properties>::Pointer_t pProperties)
     321             : {
     322        9699 :     if( pProperties.get())
     323             :     {
     324        9699 :         m_nLineWidth = m_nLineType = m_nLineColor = m_nLineDistance = 0;
     325        9699 :         std::vector<beans::PropertyValue> aSavedGrabBag;
     326        9699 :         if (!m_aInteropGrabBagName.isEmpty())
     327             :         {
     328        2370 :             aSavedGrabBag = m_aInteropGrabBag;
     329        2370 :             m_aInteropGrabBag.clear();
     330             :         }
     331        9699 :         pProperties->resolve( *this );
     332        9699 :         table::BorderLine2 aBorderLine;
     333             :         ConversionHelper::MakeBorderLine( m_nLineWidth,   m_nLineType, m_nLineColor,
     334        9699 :                                                                         aBorderLine, m_bOOXML );
     335        9699 :         bool rtl = false; // TODO
     336        9699 :         switch( rName )
     337             :         {
     338             :             case NS_ooxml::LN_CT_TcBorders_top:
     339        2411 :                 m_aTopBorderLines.push_back(aBorderLine);
     340        2411 :                 if (!m_aInteropGrabBagName.isEmpty())
     341         255 :                     aSavedGrabBag.push_back(getInteropGrabBag("top"));
     342        2411 :             break;
     343             :             case NS_ooxml::LN_CT_TcBorders_start:
     344         304 :                 if( rtl )
     345           0 :                     m_aRightBorderLines.push_back(aBorderLine);
     346             :                 else
     347         304 :                     m_aLeftBorderLines.push_back(aBorderLine);
     348         304 :                 if (!m_aInteropGrabBagName.isEmpty())
     349           0 :                     aSavedGrabBag.push_back(getInteropGrabBag("start"));
     350         304 :             break;
     351             :             case NS_ooxml::LN_CT_TcBorders_left:
     352        1253 :                 m_aLeftBorderLines.push_back(aBorderLine);
     353        1253 :                 if (!m_aInteropGrabBagName.isEmpty())
     354         220 :                     aSavedGrabBag.push_back(getInteropGrabBag("left"));
     355        1253 :             break;
     356             :             case NS_ooxml::LN_CT_TcBorders_bottom:
     357        2004 :                 m_aBottomBorderLines.push_back(aBorderLine);
     358        2004 :                 if (!m_aInteropGrabBagName.isEmpty())
     359         272 :                     aSavedGrabBag.push_back(getInteropGrabBag("bottom"));
     360        2004 :             break;
     361             :             case NS_ooxml::LN_CT_TcBorders_end:
     362         320 :                 if( rtl )
     363           0 :                     m_aLeftBorderLines.push_back(aBorderLine);
     364             :                 else
     365         320 :                     m_aRightBorderLines.push_back(aBorderLine);
     366         320 :                 if (!m_aInteropGrabBagName.isEmpty())
     367           0 :                     aSavedGrabBag.push_back(getInteropGrabBag("end"));
     368         320 :             break;
     369             :             case NS_ooxml::LN_CT_TcBorders_right:
     370        1302 :                 m_aRightBorderLines.push_back(aBorderLine);
     371        1302 :                 if (!m_aInteropGrabBagName.isEmpty())
     372         235 :                     aSavedGrabBag.push_back(getInteropGrabBag("right"));
     373        1302 :             break;
     374             :             case NS_ooxml::LN_CT_TcBorders_insideH:
     375         548 :                 m_aInsideHBorderLines.push_back(aBorderLine);
     376         548 :                 if (!m_aInteropGrabBagName.isEmpty())
     377         177 :                     aSavedGrabBag.push_back(getInteropGrabBag("insideH"));
     378         548 :             break;
     379             :             case NS_ooxml::LN_CT_TcBorders_insideV:
     380         525 :                 m_aInsideVBorderLines.push_back(aBorderLine);
     381         525 :                 if (!m_aInteropGrabBagName.isEmpty())
     382         179 :                     aSavedGrabBag.push_back(getInteropGrabBag("insideV"));
     383         525 :             break;
     384             :             case NS_ooxml::LN_CT_TcBorders_tl2br:
     385         516 :                 if (!m_aInteropGrabBagName.isEmpty())
     386         516 :                     aSavedGrabBag.push_back(getInteropGrabBag("tl2br"));
     387         516 :             break;
     388             :             case NS_ooxml::LN_CT_TcBorders_tr2bl:
     389         516 :                 if (!m_aInteropGrabBagName.isEmpty())
     390         516 :                     aSavedGrabBag.push_back(getInteropGrabBag("tr2bl"));
     391         516 :             break;
     392             :             default:;
     393             :         }
     394        9699 :         if (!m_aInteropGrabBagName.isEmpty())
     395        2370 :             m_aInteropGrabBag = aSavedGrabBag;
     396             :     }
     397        9699 : }
     398             : 
     399             : 
     400        9699 : void TDefTableHandler::lcl_sprm(Sprm & rSprm)
     401             : {
     402        9699 :     switch( rSprm.getId() )
     403             :     {
     404             :         case NS_ooxml::LN_CT_TcBorders_top:
     405             :         case NS_ooxml::LN_CT_TcBorders_left:
     406             :         case NS_ooxml::LN_CT_TcBorders_start:
     407             :         case NS_ooxml::LN_CT_TcBorders_bottom:
     408             :         case NS_ooxml::LN_CT_TcBorders_right:
     409             :         case NS_ooxml::LN_CT_TcBorders_end:
     410             :         case NS_ooxml::LN_CT_TcBorders_insideH:
     411             :         case NS_ooxml::LN_CT_TcBorders_insideV:
     412             :         case NS_ooxml::LN_CT_TcBorders_tl2br:
     413             :         case NS_ooxml::LN_CT_TcBorders_tr2bl:
     414             :         {
     415        9699 :             writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
     416        9699 :             localResolve( rSprm.getId(), pProperties );
     417             :         }
     418        9699 :         break;
     419             :         default:;
     420             :     }
     421        9699 : }
     422             : 
     423             : 
     424           0 : PropertyMapPtr  TDefTableHandler::getRowProperties() const
     425             : {
     426           0 :     PropertyMapPtr pPropertyMap(new PropertyMap);
     427             : 
     428             :     // Writer only wants the separators, Word provides also the outer border positions
     429           0 :     if( m_aCellBorderPositions.size() > 2 )
     430             :     {
     431             :         //determine table width
     432           0 :         double nFullWidth = m_aCellBorderPositions[m_aCellBorderPositions.size() - 1] - m_aCellBorderPositions[0];
     433             :         //the positions have to be distibuted in a range of 10000
     434           0 :         const double nFullWidthRelative = 10000.;
     435           0 :         uno::Sequence< text::TableColumnSeparator > aSeparators( m_aCellBorderPositions.size() - 2 );
     436           0 :         text::TableColumnSeparator* pSeparators = aSeparators.getArray();
     437           0 :         for( sal_uInt32 nBorder = 1; nBorder < m_aCellBorderPositions.size() - 1; ++nBorder )
     438             :         {
     439             :             sal_Int16 nRelPos =
     440           0 :                 sal::static_int_cast< sal_Int16 >(double(m_aCellBorderPositions[nBorder]) * nFullWidthRelative / nFullWidth );
     441             : 
     442           0 :             pSeparators[nBorder - 1].Position =  nRelPos;
     443           0 :             pSeparators[nBorder - 1].IsVisible = sal_True;
     444             :         }
     445           0 :         pPropertyMap->Insert( PROP_TABLE_COLUMN_SEPARATORS, uno::makeAny( aSeparators ) );
     446             :     }
     447             : 
     448           0 :     return pPropertyMap;
     449             : }
     450             : 
     451             : 
     452        3891 : void TDefTableHandler::fillCellProperties(
     453             :             size_t nCell, ::boost::shared_ptr< TablePropertyMap > pCellProperties ) const
     454             : {
     455        3891 :     if( m_aCellBorderPositions.size() > nCell )
     456             :     {
     457           0 :         sal_Int16 nVertOrient = text::VertOrientation::NONE;
     458           0 :         switch( m_aCellVertAlign[nCell] ) //0 - top 1 - center 2 - bottom
     459             :         {
     460           0 :             case 1: nVertOrient = text::VertOrientation::CENTER; break;
     461           0 :             case 2: nVertOrient = text::VertOrientation::BOTTOM; break;
     462             :             default:;
     463             :         }
     464           0 :         pCellProperties->Insert( PROP_VERT_ORIENT, uno::makeAny( nVertOrient ) );
     465             :     }
     466        3891 :     if( m_aTopBorderLines.size() > nCell )
     467        2411 :         pCellProperties->Insert( PROP_TOP_BORDER, uno::makeAny( m_aTopBorderLines[nCell] ) );
     468        3891 :     if( m_aLeftBorderLines.size() > nCell )
     469        1557 :         pCellProperties->Insert( PROP_LEFT_BORDER, uno::makeAny( m_aLeftBorderLines[nCell] ) );
     470        3891 :     if( m_aBottomBorderLines.size() > nCell )
     471        2004 :         pCellProperties->Insert( PROP_BOTTOM_BORDER, uno::makeAny( m_aBottomBorderLines[nCell] ) );
     472        3891 :     if( m_aRightBorderLines.size() > nCell )
     473        1622 :         pCellProperties->Insert( PROP_RIGHT_BORDER, uno::makeAny( m_aRightBorderLines[nCell] ) );
     474        3891 :     if( m_aInsideHBorderLines.size() > nCell )
     475         548 :         pCellProperties->Insert( META_PROP_HORIZONTAL_BORDER, uno::makeAny( m_aInsideHBorderLines[nCell] ) );
     476        3891 :     if( m_aInsideVBorderLines.size() > nCell )
     477         525 :         pCellProperties->Insert( META_PROP_VERTICAL_BORDER, uno::makeAny( m_aInsideVBorderLines[nCell] ) );
     478        3891 : }
     479             : 
     480             : 
     481           0 : sal_Int32 TDefTableHandler::getTableWidth() const
     482             : {
     483           0 :     sal_Int32 nWidth = 0;
     484           0 :     if( m_aCellBorderPositions.size() > 1 )
     485             :     {
     486             :         //determine table width
     487           0 :         nWidth = m_aCellBorderPositions[m_aCellBorderPositions.size() - 1] - m_aCellBorderPositions[0];
     488             :     }
     489           0 :     return nWidth;
     490             : }
     491             : 
     492             : 
     493           0 : size_t TDefTableHandler::getCellCount() const
     494             : {
     495           0 :     return m_aCellVertAlign.size();
     496             : }
     497             : 
     498         701 : void TDefTableHandler::enableInteropGrabBag(const OUString& aName)
     499             : {
     500         701 :     m_aInteropGrabBagName = aName;
     501         701 : }
     502             : 
     503        3071 : beans::PropertyValue TDefTableHandler::getInteropGrabBag(const OUString& aName)
     504             : {
     505        3071 :     beans::PropertyValue aRet;
     506        3071 :     if (aName.isEmpty())
     507         701 :         aRet.Name = m_aInteropGrabBagName;
     508             :     else
     509        2370 :         aRet.Name = aName;
     510             : 
     511        6142 :     uno::Sequence<beans::PropertyValue> aSeq(m_aInteropGrabBag.size());
     512        3071 :     beans::PropertyValue* pSeq = aSeq.getArray();
     513       12976 :     for (std::vector<beans::PropertyValue>::iterator i = m_aInteropGrabBag.begin(); i != m_aInteropGrabBag.end(); ++i)
     514        9905 :         *pSeq++ = *i;
     515        3071 :     m_aInteropGrabBag.clear();
     516             : 
     517        3071 :     aRet.Value = uno::makeAny(aSeq);
     518        6142 :     return aRet;
     519             : }
     520             : 
     521       31310 : void TDefTableHandler::appendGrabBag(const OUString& aKey, const OUString& aValue)
     522             : {
     523       31310 :     beans::PropertyValue aProperty;
     524       31310 :     aProperty.Name = aKey;
     525       31310 :     aProperty.Value = uno::makeAny(aValue);
     526       31310 :     m_aInteropGrabBag.push_back(aProperty);
     527       31310 : }
     528             : 
     529             : } //namespace dmapper
     530             : } //namespace writerfilter
     531             : 
     532             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10