LCOV - code coverage report
Current view: top level - test/source - mtfxmldump.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 126 327 38.5 %
Date: 2015-06-13 12:38:46 Functions: 12 17 70.6 %
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             : 
      10             : #include <test/mtfxmldump.hxx>
      11             : #include <test/xmltesttools.hxx>
      12             : #include <test/xmlwriter.hxx>
      13             : 
      14             : #include <vcl/metaact.hxx>
      15             : #include <rtl/string.hxx>
      16             : #include <rtl/strbuf.hxx>
      17             : 
      18             : #include <boost/scoped_ptr.hpp>
      19             : 
      20             : namespace
      21             : {
      22             : 
      23           0 : OUString flagToString(PushFlags nFlag)
      24             : {
      25           0 :     if (nFlag & PushFlags::LINECOLOR)
      26           0 :         return OUString("PushLineColor");
      27           0 :     else if (nFlag & PushFlags::FILLCOLOR)
      28           0 :         return OUString("PushFillColor");
      29           0 :     else if (nFlag & PushFlags::FONT)
      30           0 :         return OUString("PushFont");
      31           0 :     else if (nFlag & PushFlags::TEXTCOLOR)
      32           0 :         return OUString("PushTextColor");
      33           0 :     else if (nFlag & PushFlags::MAPMODE)
      34           0 :         return OUString("PushMapMode");
      35           0 :     else if (nFlag & PushFlags::CLIPREGION)
      36           0 :         return OUString("PushClipRegion");
      37           0 :     else if (nFlag & PushFlags::RASTEROP)
      38           0 :         return OUString("PushRasterOp");
      39           0 :     else if (nFlag & PushFlags::TEXTFILLCOLOR)
      40           0 :         return OUString("PushTextFillColor");
      41           0 :     else if (nFlag & PushFlags::TEXTALIGN)
      42           0 :         return OUString("PushTextAlign");
      43           0 :     else if (nFlag & PushFlags::REFPOINT)
      44           0 :         return OUString("PushRefPoint");
      45           0 :     else if (nFlag & PushFlags::TEXTLINECOLOR)
      46           0 :         return OUString("PushTextLineColor");
      47           0 :     else if (nFlag & PushFlags::TEXTLAYOUTMODE)
      48           0 :         return OUString("PushTextLayoutMode");
      49           0 :     else if (nFlag & PushFlags::TEXTLANGUAGE)
      50           0 :         return OUString("PushTextLanguage");
      51           0 :     else if (nFlag & PushFlags::OVERLINECOLOR)
      52           0 :         return OUString("PushOverlineColor");
      53             : 
      54           0 :     return OUString();
      55             : }
      56             : 
      57           0 : OUString collectPushFlags(PushFlags nFlags)
      58             : {
      59           0 :     if ((nFlags & PushFlags::ALL) == nFlags)
      60           0 :         return OUString("PushAll");
      61           0 :     else if ((nFlags & PUSH_ALLFONT) == nFlags)
      62           0 :         return OUString("PushAllFont");
      63           0 :     else if ((nFlags & PUSH_ALLTEXT) == nFlags)
      64           0 :         return OUString("PushAllText");
      65             : 
      66           0 :     OUString sFlags;
      67             : 
      68           0 :     for (sal_uInt16 nFlag = 1; nFlag > 0; nFlag <<= 1)
      69             :     {
      70           0 :         OUString sFlag = flagToString(static_cast<PushFlags>(nFlag));
      71           0 :         if (!sFlag.isEmpty())
      72             :         {
      73           0 :             if (!sFlags.isEmpty())
      74             :             {
      75           0 :                 sFlags += ",";
      76             :             }
      77           0 :             sFlags += flagToString(static_cast<PushFlags>(nFlag));
      78             :         }
      79           0 :     }
      80             : 
      81           0 :     return sFlags;
      82             : }
      83             : 
      84           0 : OUString convertRopToString(RasterOp eRop)
      85             : {
      86           0 :     switch (eRop)
      87             :     {
      88           0 :         case ROP_OVERPAINT: return OUString("overpaint");
      89           0 :         case ROP_XOR:       return OUString("xor");
      90           0 :         case ROP_0:         return OUString("0");
      91           0 :         case ROP_1:         return OUString("1");
      92           0 :         case ROP_INVERT:    return OUString("invert");
      93             :     }
      94           0 :     return OUString();
      95             : }
      96             : 
      97           0 : OUString convertTextAlignToString(TextAlign eAlign)
      98             : {
      99           0 :     switch (eAlign)
     100             :     {
     101           0 :         case ALIGN_BASELINE:             return OUString("baseline");
     102           0 :         case ALIGN_BOTTOM:               return OUString("bottom");
     103           0 :         case ALIGN_TOP:                  return OUString("top");
     104           0 :         case TextAlign_FORCE_EQUAL_SIZE: return OUString("equalsize");
     105             :     }
     106           0 :     return OUString();
     107             : }
     108             : 
     109          36 : OUString convertColorToString(Color aColor)
     110             : {
     111          36 :     OUString aRGBString = aColor.AsRGBHexString();
     112          36 :     return "#" + aRGBString;
     113             : }
     114             : 
     115          46 : OUString convertLineStyleToString(LineStyle eAlign)
     116             : {
     117          46 :     switch (eAlign)
     118             :     {
     119          11 :         case LINE_NONE:    return OUString("none");
     120          35 :         case LINE_SOLID:   return OUString("solid");
     121           0 :         case LINE_DASH:    return OUString("dash");
     122           0 :         case LineStyle_FORCE_EQUAL_SIZE: return OUString("equalsize");
     123             :     }
     124           0 :     return OUString();
     125             : }
     126             : 
     127           8 : OUString convertFontWeigthToString(FontWeight eFontWeight)
     128             : {
     129             :     enum FontWeight { WEIGHT_DONTKNOW, WEIGHT_THIN, WEIGHT_ULTRALIGHT,
     130             :                   WEIGHT_LIGHT, WEIGHT_SEMILIGHT, WEIGHT_NORMAL,
     131             :                   WEIGHT_MEDIUM, WEIGHT_SEMIBOLD, WEIGHT_BOLD,
     132             :                   WEIGHT_ULTRABOLD, WEIGHT_BLACK, FontWeight_FORCE_EQUAL_SIZE=SAL_MAX_ENUM };
     133           8 :     switch (eFontWeight)
     134             :     {
     135           0 :         case WEIGHT_DONTKNOW:   return OUString("unknown");
     136           0 :         case WEIGHT_THIN:       return OUString("thin");
     137           0 :         case WEIGHT_ULTRALIGHT: return OUString("ultralight");
     138           0 :         case WEIGHT_LIGHT:      return OUString("light");
     139           0 :         case WEIGHT_SEMILIGHT:  return OUString("semilight");
     140           4 :         case WEIGHT_NORMAL:     return OUString("normal");
     141           0 :         case WEIGHT_MEDIUM:     return OUString("medium");
     142           0 :         case WEIGHT_SEMIBOLD:   return OUString("semibold");
     143           4 :         case WEIGHT_BOLD:       return OUString("bold");
     144           0 :         case WEIGHT_ULTRABOLD:  return OUString("ultrabold");
     145           0 :         case WEIGHT_BLACK:      return OUString("black");
     146           0 :         case FontWeight_FORCE_EQUAL_SIZE:    return OUString("equalsize");
     147             :     }
     148           0 :     return OUString();
     149             : }
     150             : 
     151         106 : OString convertLineStyleToString(const MetaActionType nActionType)
     152             : {
     153         106 :     switch (nActionType)
     154             :     {
     155           0 :         case MetaActionType::NONE:                  return "null";
     156           0 :         case MetaActionType::PIXEL:                 return "pixel";
     157           0 :         case MetaActionType::POINT:                 return "point";
     158           0 :         case MetaActionType::LINE:                  return "line";
     159           0 :         case MetaActionType::RECT:                  return "rect";
     160           0 :         case MetaActionType::ROUNDRECT:             return "roundrect";
     161           0 :         case MetaActionType::ELLIPSE:               return "ellipse";
     162           0 :         case MetaActionType::ARC:                   return "arc";
     163           0 :         case MetaActionType::PIE:                   return "pie";
     164           0 :         case MetaActionType::CHORD:                 return "chord";
     165          46 :         case MetaActionType::POLYLINE:              return "polyline";
     166           0 :         case MetaActionType::POLYGON:               return "polygon";
     167           1 :         case MetaActionType::POLYPOLYGON:           return "polypolygon";
     168           0 :         case MetaActionType::TEXT:                  return "text";
     169           0 :         case MetaActionType::TEXTARRAY:             return "textarray";
     170           0 :         case MetaActionType::STRETCHTEXT:           return "stretchtext";
     171           0 :         case MetaActionType::TEXTRECT:              return "textrect";
     172           0 :         case MetaActionType::TEXTLINE:              return "textline";
     173           0 :         case MetaActionType::BMP:                   return "bmp";
     174           0 :         case MetaActionType::BMPSCALE:              return "bmpscale";
     175           0 :         case MetaActionType::BMPSCALEPART:          return "bmpscalepart";
     176           0 :         case MetaActionType::BMPEX:                 return "bmpex";
     177           0 :         case MetaActionType::BMPEXSCALE:            return "bmpexscale";
     178           0 :         case MetaActionType::BMPEXSCALEPART:        return "bmpexscalepart";
     179           0 :         case MetaActionType::MASK:                  return "mask";
     180           0 :         case MetaActionType::MASKSCALE:             return "maskscale";
     181           0 :         case MetaActionType::MASKSCALEPART:         return "maskscalepart";
     182           0 :         case MetaActionType::GRADIENT:              return "gradient";
     183           0 :         case MetaActionType::GRADIENTEX:            return "gradientex";
     184           0 :         case MetaActionType::HATCH:                 return "hatch";
     185           0 :         case MetaActionType::WALLPAPER:             return "wallpaper";
     186           5 :         case MetaActionType::CLIPREGION:            return "clipregion";
     187          12 :         case MetaActionType::ISECTRECTCLIPREGION:   return "sectrectclipregion";
     188           0 :         case MetaActionType::ISECTREGIONCLIPREGION: return "sectregionclipregion";
     189           0 :         case MetaActionType::MOVECLIPREGION:        return "moveclipregion";
     190          13 :         case MetaActionType::LINECOLOR:             return "linecolor";
     191           7 :         case MetaActionType::FILLCOLOR:             return "fillcolor";
     192           0 :         case MetaActionType::TEXTCOLOR:             return "textcolor";
     193           0 :         case MetaActionType::TEXTFILLCOLOR:         return "textfillcolor";
     194           0 :         case MetaActionType::TEXTLINECOLOR:         return "textlinecolor";
     195           0 :         case MetaActionType::OVERLINECOLOR:         return "overlinecolor";
     196           0 :         case MetaActionType::TEXTALIGN:             return "textalign";
     197           1 :         case MetaActionType::MAPMODE:               return "mapmode";
     198           8 :         case MetaActionType::FONT:                  return "font";
     199           0 :         case MetaActionType::PUSH:                  return "push";
     200           0 :         case MetaActionType::POP:                   return "pop";
     201           0 :         case MetaActionType::RASTEROP:              return "rasterop";
     202           0 :         case MetaActionType::Transparent:           return "transparent";
     203           0 :         case MetaActionType::FLOATTRANSPARENT:      return "floattransparent";
     204           0 :         case MetaActionType::EPS:                   return "eps";
     205           0 :         case MetaActionType::REFPOINT:              return "refpoint";
     206          12 :         case MetaActionType::COMMENT:               return "comment";
     207           0 :         case MetaActionType::LAYOUTMODE:            return "layoutmode";
     208           1 :         case MetaActionType::TEXTLANGUAGE:          return "textlanguage";
     209             :     }
     210           0 :     return "";
     211             : }
     212             : 
     213             : } // anonymous namespace
     214             : 
     215           6 : MetafileXmlDump::MetafileXmlDump()
     216             : {
     217           6 :     maFilter.fill(false);
     218           6 : }
     219             : 
     220           6 : MetafileXmlDump::~MetafileXmlDump()
     221           6 : {}
     222             : 
     223           5 : void MetafileXmlDump::filterActionType(const MetaActionType nActionType, bool bShouldFilter)
     224             : {
     225           5 :     maFilter[nActionType] = bShouldFilter;
     226           5 : }
     227             : 
     228           5 : void MetafileXmlDump::filterAllActionTypes()
     229             : {
     230           5 :     maFilter.fill(true);
     231           5 : }
     232             : 
     233           6 : xmlDocPtr MetafileXmlDump::dumpAndParse(const GDIMetaFile& rMetaFile, const OUString& rTempStreamName)
     234             : {
     235           6 :     boost::scoped_ptr<SvStream> pStream;
     236             : 
     237           6 :     if (rTempStreamName.isEmpty())
     238           6 :         pStream.reset(new SvMemoryStream());
     239             :     else
     240           0 :         pStream.reset(new SvFileStream(rTempStreamName, STREAM_STD_READWRITE | StreamMode::TRUNC));
     241             : 
     242          12 :     XmlWriter aWriter(pStream.get());
     243           6 :     aWriter.startDocument();
     244           6 :     aWriter.startElement("metafile");
     245             : 
     246           6 :     writeXml(rMetaFile, aWriter);
     247             : 
     248           6 :     aWriter.endElement();
     249           6 :     aWriter.endDocument();
     250             : 
     251           6 :     pStream->Seek(STREAM_SEEK_TO_BEGIN);
     252             : 
     253           6 :     xmlDocPtr pDoc = XmlTestTools::parseXmlStream(pStream.get());
     254             : 
     255          12 :     return pDoc;
     256             : }
     257             : 
     258           6 : void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, XmlWriter& rWriter)
     259             : {
     260        1137 :     for(size_t nAction = 0; nAction < rMetaFile.GetActionSize(); ++nAction)
     261             :     {
     262        1131 :         MetaAction* pAction = rMetaFile.GetAction(nAction);
     263        1131 :         const MetaActionType nActionType = pAction->GetType();
     264        1131 :         if (maFilter[nActionType])
     265        1025 :             continue;
     266             : 
     267         106 :         OString sCurrentElementTag = convertLineStyleToString(nActionType);
     268             : 
     269         106 :         switch (nActionType)
     270             :         {
     271             :             case MetaActionType::LINE:
     272             :             {
     273           0 :                 MetaLineAction* pMetaLineAction = static_cast<MetaLineAction*>(pAction);
     274           0 :                 rWriter.startElement(sCurrentElementTag);
     275             : 
     276           0 :                 rWriter.attribute("startx", pMetaLineAction->GetStartPoint().X());
     277           0 :                 rWriter.attribute("starty", pMetaLineAction->GetStartPoint().Y());
     278           0 :                 rWriter.attribute("endx", pMetaLineAction->GetEndPoint().X());
     279           0 :                 rWriter.attribute("endy", pMetaLineAction->GetEndPoint().Y());
     280             : 
     281           0 :                 LineInfo aLineInfo = pMetaLineAction->GetLineInfo();
     282           0 :                 rWriter.attribute("style", convertLineStyleToString(aLineInfo.GetStyle()));
     283           0 :                 rWriter.attribute("width", aLineInfo.GetWidth());
     284           0 :                 rWriter.attribute("dashlen", aLineInfo.GetDashLen());
     285           0 :                 rWriter.attribute("dotlen", aLineInfo.GetDotLen());
     286           0 :                 rWriter.attribute("distance", aLineInfo.GetDistance());
     287             : 
     288           0 :                 rWriter.endElement();
     289             :             }
     290           0 :             break;
     291             : 
     292             :             case MetaActionType::PUSH:
     293             :             {
     294           0 :                 MetaPushAction* pMetaPushAction = static_cast<MetaPushAction*>(pAction);
     295           0 :                 rWriter.startElement(sCurrentElementTag);
     296             : 
     297           0 :                 rWriter.attribute("flags", collectPushFlags(pMetaPushAction->GetFlags()));
     298             :             }
     299           0 :             break;
     300             : 
     301             :             case MetaActionType::POP:
     302             :             {
     303           0 :                 rWriter.endElement();
     304             :             }
     305           0 :             break;
     306             : 
     307             :             case MetaActionType::RASTEROP:
     308             :             {
     309           0 :                 MetaRasterOpAction* pMetaRasterOpAction = static_cast<MetaRasterOpAction*>(pAction);
     310           0 :                 rWriter.startElement(sCurrentElementTag);
     311             : 
     312           0 :                 if (pMetaRasterOpAction->GetRasterOp() != ROP_OVERPAINT)
     313             :                 {
     314           0 :                     rWriter.attribute("operation", convertRopToString(pMetaRasterOpAction->GetRasterOp()));
     315             :                 }
     316           0 :                 rWriter.endElement();
     317             :             }
     318           0 :             break;
     319             : 
     320             :             case MetaActionType::TEXTLINECOLOR:
     321             :             {
     322           0 :                 MetaTextLineColorAction* pMetaTextLineColorAction = static_cast<MetaTextLineColorAction*>(pAction);
     323           0 :                 rWriter.startElement(sCurrentElementTag);
     324             : 
     325           0 :                 rWriter.attribute("color", convertColorToString(pMetaTextLineColorAction->GetColor()));
     326           0 :                 rWriter.endElement();
     327             :             }
     328           0 :             break;
     329             : 
     330             :             case MetaActionType::TEXTFILLCOLOR:
     331             :             {
     332           0 :                 MetaTextFillColorAction* pMetaTextFillColorAction = static_cast<MetaTextFillColorAction*>(pAction);
     333           0 :                 rWriter.startElement(sCurrentElementTag);
     334             : 
     335           0 :                 rWriter.attribute("color", convertColorToString(pMetaTextFillColorAction->GetColor()));
     336             : 
     337           0 :                 if (pMetaTextFillColorAction->IsSetting())
     338           0 :                     rWriter.attribute("setting", OUString("true"));
     339             : 
     340           0 :                 rWriter.endElement();
     341             :             }
     342           0 :             break;
     343             : 
     344             :             case MetaActionType::FONT:
     345             :             {
     346           8 :                 MetaFontAction* pMetaFontAction = static_cast<MetaFontAction*>(pAction);
     347           8 :                 rWriter.startElement(sCurrentElementTag);
     348             : 
     349           8 :                 vcl::Font aFont = pMetaFontAction->GetFont();
     350             : 
     351           8 :                 rWriter.attribute("color", convertColorToString(aFont.GetColor()));
     352           8 :                 rWriter.attribute("fillcolor", convertColorToString(aFont.GetFillColor()));
     353           8 :                 rWriter.attribute("name", aFont.GetName());
     354           8 :                 rWriter.attribute("stylename", aFont.GetStyleName());
     355           8 :                 rWriter.attribute("width", aFont.GetSize().Width());
     356           8 :                 rWriter.attribute("height", aFont.GetSize().Height());
     357           8 :                 rWriter.attribute("orientation", aFont.GetOrientation());
     358           8 :                 rWriter.attribute("weight", convertFontWeigthToString(aFont.GetWeight()));
     359             : 
     360           8 :                 rWriter.endElement();
     361             :             }
     362           8 :             break;
     363             : 
     364             :             case MetaActionType::TEXTALIGN:
     365             :             {
     366           0 :                 MetaTextAlignAction* pMetaTextAlignAction = static_cast<MetaTextAlignAction*>(pAction);
     367           0 :                 rWriter.startElement(sCurrentElementTag);
     368           0 :                 OUString sAlign = convertTextAlignToString(pMetaTextAlignAction->GetTextAlign());
     369           0 :                 if (!sAlign.isEmpty())
     370           0 :                     rWriter.attribute("align", sAlign);
     371           0 :                 rWriter.endElement();
     372             :             }
     373           0 :             break;
     374             : 
     375             :             case MetaActionType::TEXTCOLOR:
     376             :             {
     377           0 :                 MetaTextColorAction* pMetaTextColorAction = static_cast<MetaTextColorAction*>(pAction);
     378           0 :                 rWriter.startElement(sCurrentElementTag);
     379             : 
     380           0 :                 rWriter.attribute("color", convertColorToString(pMetaTextColorAction->GetColor()));
     381           0 :                 rWriter.endElement();
     382             :             }
     383           0 :             break;
     384             : 
     385             :             case MetaActionType::TEXTARRAY:
     386             :             {
     387           0 :                 MetaTextArrayAction* pMetaTextArrayAction = static_cast<MetaTextArrayAction*>(pAction);
     388           0 :                 rWriter.startElement(sCurrentElementTag);
     389             : 
     390           0 :                 sal_Int32 aIndex = pMetaTextArrayAction->GetIndex();
     391           0 :                 sal_Int32 aLength = pMetaTextArrayAction->GetLen();
     392             : 
     393           0 :                 rWriter.attribute("x", pMetaTextArrayAction->GetPoint().X());
     394           0 :                 rWriter.attribute("y", pMetaTextArrayAction->GetPoint().Y());
     395           0 :                 rWriter.attribute("index", aIndex);
     396           0 :                 rWriter.attribute("length", aLength);
     397             : 
     398           0 :                 rWriter.startElement("dxarray");
     399           0 :                 OUString sDxLengthString;
     400           0 :                 for (sal_Int32 i = 0; i < aLength; ++i)
     401             :                 {
     402           0 :                     sDxLengthString += OUString::number(pMetaTextArrayAction->GetDXArray()[aIndex+i]);
     403           0 :                     sDxLengthString += " ";
     404             :                 }
     405           0 :                 rWriter.content(sDxLengthString);
     406           0 :                 rWriter.endElement();
     407             : 
     408           0 :                 rWriter.startElement("text");
     409           0 :                 rWriter.content(pMetaTextArrayAction->GetText());
     410           0 :                 rWriter.endElement();
     411             : 
     412           0 :                 rWriter.endElement();
     413             :             }
     414           0 :             break;
     415             : 
     416             :             case MetaActionType::LINECOLOR:
     417             :             {
     418          13 :                 MetaLineColorAction* pMetaLineColorAction = static_cast<MetaLineColorAction*>(pAction);
     419          13 :                 rWriter.startElement(sCurrentElementTag);
     420             : 
     421          13 :                 rWriter.attribute("color", convertColorToString(pMetaLineColorAction->GetColor()));
     422          13 :                 rWriter.endElement();
     423             :             }
     424          13 :             break;
     425             : 
     426             :             case MetaActionType::FILLCOLOR:
     427             :             {
     428           7 :                 MetaFillColorAction* pMetaFillColorAction = static_cast<MetaFillColorAction*>(pAction);
     429           7 :                 rWriter.startElement(sCurrentElementTag);
     430             : 
     431           7 :                 rWriter.attribute("color", convertColorToString(pMetaFillColorAction->GetColor()));
     432           7 :                 rWriter.endElement();
     433             :             }
     434           7 :             break;
     435             : 
     436             :             case MetaActionType::CLIPREGION:
     437             :             {
     438           5 :                 const MetaClipRegionAction* pA = static_cast< const MetaClipRegionAction* >(pAction);
     439           5 :                 rWriter.startElement(sCurrentElementTag);
     440             : 
     441             :                 // FIXME for now we dump only the bounding box; this is
     442             :                 // enough for the tests we have, but may need extending to
     443             :                 // dumping the real polypolygon in the future
     444           5 :                 Rectangle aRectangle = pA->GetRegion().GetBoundRect();
     445           5 :                 rWriter.attribute("top",    aRectangle.Top());
     446           5 :                 rWriter.attribute("left",   aRectangle.Left());
     447           5 :                 rWriter.attribute("bottom", aRectangle.Bottom());
     448           5 :                 rWriter.attribute("right",  aRectangle.Right());
     449             : 
     450           5 :                 rWriter.endElement();
     451             :             }
     452           5 :             break;
     453             : 
     454             :             case MetaActionType::ISECTRECTCLIPREGION:
     455             :             {
     456          12 :                 MetaISectRectClipRegionAction* pMetaISectRectClipRegionAction = static_cast<MetaISectRectClipRegionAction*>(pAction);
     457          12 :                 rWriter.startElement(sCurrentElementTag);
     458             : 
     459          12 :                 Rectangle aRectangle = pMetaISectRectClipRegionAction->GetRect();
     460          12 :                 rWriter.attribute("top",    aRectangle.Top());
     461          12 :                 rWriter.attribute("left",   aRectangle.Left());
     462          12 :                 rWriter.attribute("bottom", aRectangle.Bottom());
     463          12 :                 rWriter.attribute("right",  aRectangle.Right());
     464             : 
     465          12 :                 rWriter.endElement();
     466             :             }
     467          12 :             break;
     468             : 
     469             :             case MetaActionType::POLYLINE:
     470             :             {
     471          46 :                 MetaPolyLineAction* pMetaPolyLineAction = static_cast<MetaPolyLineAction*>(pAction);
     472          46 :                 rWriter.startElement(sCurrentElementTag);
     473             : 
     474          46 :                 Polygon aPolygon = pMetaPolyLineAction->GetPolygon();
     475         451 :                 for (sal_uInt16 i = 0; i < aPolygon.GetSize(); i++)
     476             :                 {
     477         405 :                     rWriter.startElement("point");
     478         405 :                     rWriter.attribute("x", aPolygon[i].X());
     479         405 :                     rWriter.attribute("y", aPolygon[i].Y());
     480         405 :                     rWriter.endElement();
     481             :                 }
     482             : 
     483          92 :                 LineInfo aLineInfo = pMetaPolyLineAction->GetLineInfo();
     484          46 :                 rWriter.attribute("style", convertLineStyleToString(aLineInfo.GetStyle()));
     485          46 :                 rWriter.attribute("width", aLineInfo.GetWidth());
     486          46 :                 rWriter.attribute("dashlen", aLineInfo.GetDashLen());
     487          46 :                 rWriter.attribute("dotlen", aLineInfo.GetDotLen());
     488          46 :                 rWriter.attribute("distance", aLineInfo.GetDistance());
     489             : 
     490          92 :                 rWriter.endElement();
     491             :             }
     492          46 :             break;
     493             : 
     494             :             case MetaActionType::POLYGON:
     495             :             {
     496           0 :                 MetaPolygonAction* pMetaPolygonAction = static_cast<MetaPolygonAction*>(pAction);
     497           0 :                 rWriter.startElement(sCurrentElementTag);
     498             : 
     499           0 :                 Polygon aPolygon = pMetaPolygonAction->GetPolygon();
     500           0 :                 for (sal_uInt16 i = 0; i < aPolygon.GetSize(); i++)
     501             :                 {
     502           0 :                     rWriter.startElement("point");
     503           0 :                     rWriter.attribute("x", aPolygon[i].X());
     504           0 :                     rWriter.attribute("y", aPolygon[i].Y());
     505           0 :                     rWriter.endElement();
     506             :                 }
     507             : 
     508           0 :                 rWriter.endElement();
     509             :             }
     510           0 :             break;
     511             : 
     512             :             case MetaActionType::COMMENT:
     513             :             {
     514          12 :                 MetaCommentAction* pMetaCommentAction = static_cast<MetaCommentAction*>(pAction);
     515          12 :                 rWriter.startElement(sCurrentElementTag);
     516             : 
     517          12 :                 if (pMetaCommentAction->GetDataSize() > 0)
     518             :                 {
     519           6 :                     rWriter.attribute("datasize", pMetaCommentAction->GetDataSize());
     520             :                 }
     521          12 :                 if (!pMetaCommentAction->GetComment().isEmpty())
     522             :                 {
     523          12 :                     rWriter.startElement("comment");
     524          12 :                     rWriter.content(pMetaCommentAction->GetComment());
     525          12 :                     rWriter.endElement();
     526             :                 }
     527             : 
     528          12 :                 rWriter.endElement();
     529             :             }
     530          12 :             break;
     531             : 
     532             :             default:
     533             :             {
     534           3 :                 rWriter.element(sCurrentElementTag);
     535             :             }
     536           3 :             break;
     537             :         }
     538         106 :     }
     539         378 : }
     540             : 
     541             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11