299 lines
20 KiB
C++
299 lines
20 KiB
C++
/*
|
||
* (c) Copyright Ascensio System SIA 2010-2023
|
||
*
|
||
* This program is a free software product. You can redistribute it and/or
|
||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||
* version 3 as published by the Free Software Foundation. In accordance with
|
||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||
* of any third-party rights.
|
||
*
|
||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||
*
|
||
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
||
* street, Riga, Latvia, EU, LV-1050.
|
||
*
|
||
* The interactive user interfaces in modified source and object code versions
|
||
* of the Program must display Appropriate Legal Notices, as required under
|
||
* Section 5 of the GNU AGPL version 3.
|
||
*
|
||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||
* grant you any rights under trademark law for use of our trademarks.
|
||
*
|
||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||
* well as technical writing content are licensed under the terms of the
|
||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||
*
|
||
*/
|
||
|
||
#include "OOXBorderReader.h"
|
||
|
||
OOXBorderReader::OOXBorderReader(ComplexTypes::Word::CBorder * ooxBorder)
|
||
{
|
||
m_ooxBorder = ooxBorder;
|
||
m_ooxPageBorder = NULL;
|
||
}
|
||
OOXBorderReader::OOXBorderReader(ComplexTypes::Word::CPageBorder * ooxBorder)
|
||
{
|
||
m_ooxPageBorder = ooxBorder;
|
||
m_ooxBorder = NULL;
|
||
}
|
||
bool OOXBorderReader::Parse( ReaderParameter oParam, RtfBorder& oOutputBorder )
|
||
{
|
||
if (m_ooxBorder == NULL && m_ooxPageBorder == NULL) return false;
|
||
|
||
int type_border = -1;
|
||
if (m_ooxPageBorder)
|
||
{
|
||
if ((m_ooxPageBorder->m_oColor.IsInit()) && (m_ooxPageBorder->m_oColor->GetValue() == SimpleTypes::hexcolorRGB))
|
||
{
|
||
RtfColor oColor(m_ooxPageBorder->m_oColor->Get_R(), m_ooxPageBorder->m_oColor->Get_G(), m_ooxPageBorder->m_oColor->Get_B());
|
||
oOutputBorder.m_nColor = oParam.oRtf->m_oColorTable.AddItem( oColor );
|
||
}
|
||
if (m_ooxPageBorder->m_oSpace.IsInit())
|
||
{
|
||
oOutputBorder.m_nSpace = RtfUtility::pt2Twip(m_ooxPageBorder->m_oSpace->ToPoints());
|
||
}
|
||
if (m_ooxPageBorder->m_oSz.IsInit())
|
||
{
|
||
oOutputBorder.m_nWidth = RtfUtility::pt2Twip(m_ooxPageBorder->m_oSz->ToPoints());// = 5 * nSize / 2;//w:sz 1/8 twips (equivalent to 1/576th of an inch)
|
||
}
|
||
if (m_ooxPageBorder->m_oVal.IsInit())
|
||
type_border = m_ooxPageBorder->m_oVal->GetValue();
|
||
}
|
||
|
||
if (m_ooxBorder)
|
||
{
|
||
if (m_ooxBorder->m_oVal.IsInit())
|
||
{
|
||
type_border = m_ooxBorder->m_oVal->GetValue();
|
||
}
|
||
//if (m_ooxBorder->m_oVal->GetValue() == SimpleTypes::bordervalueNone ) return true;
|
||
// // это отсутствие свойства а не бордера (Nil
|
||
|
||
if ((m_ooxBorder->m_oColor.IsInit()) && (m_ooxBorder->m_oColor->GetValue() == SimpleTypes::hexcolorRGB))
|
||
{
|
||
RtfColor oColor(m_ooxBorder->m_oColor->Get_R(), m_ooxBorder->m_oColor->Get_G(), m_ooxBorder->m_oColor->Get_B());
|
||
oOutputBorder.m_nColor = oParam.oRtf->m_oColorTable.AddItem( oColor );
|
||
}
|
||
if (m_ooxBorder->m_oSpace.IsInit())
|
||
{
|
||
oOutputBorder.m_nSpace = RtfUtility::pt2Twip(m_ooxBorder->m_oSpace->ToPoints());
|
||
}
|
||
if (m_ooxBorder->m_oSz.IsInit())
|
||
{
|
||
oOutputBorder.m_nWidth = RtfUtility::pt2Twip(m_ooxBorder->m_oSz->ToPoints());// = 5 * nSize / 2;//w:sz 1/8 twips (equivalent to 1/576th of an inch)
|
||
}
|
||
}
|
||
switch(type_border)
|
||
{
|
||
//case SimpleTypes::bordervalueApples : return L"apples";
|
||
//case SimpleTypes::bordervalueArchedScallops : return L"archedScallops";
|
||
//case SimpleTypes::bordervalueBabyPacifier : return L"babyPacifier";
|
||
//case SimpleTypes::bordervalueBabyRattle : return L"babyRattle";
|
||
//case SimpleTypes::bordervalueBalloons3Colors : return L"balloons3Colors";
|
||
//case SimpleTypes::bordervalueBalloonsHotAir : return L"balloonsHotAir";
|
||
//case SimpleTypes::bordervalueBasicBlackDashes : return L"basicBlackDashes";
|
||
//case SimpleTypes::bordervalueBasicBlackDots : return L"basicBlackDots";
|
||
//case SimpleTypes::bordervalueBasicBlackSquares : return L"basicBlackSquares";
|
||
//case SimpleTypes::bordervalueBasicThinLines : return L"basicThinLines";
|
||
//case SimpleTypes::bordervalueBasicWhiteDashes : return L"basicWhiteDashes";
|
||
//case SimpleTypes::bordervalueBasicWhiteDots : return L"basicWhiteDots";
|
||
//case SimpleTypes::bordervalueBasicWhiteSquares : return L"basicWhiteSquares";
|
||
//case SimpleTypes::bordervalueBasicWideInline : return L"basicWideInline";
|
||
//case SimpleTypes::bordervalueBasicWideMidline : return L"basicWideMidline";
|
||
//case SimpleTypes::bordervalueBasicWideOutline : return L"basicWideOutline";
|
||
//case SimpleTypes::bordervalueBats : return L"bats";
|
||
//case SimpleTypes::bordervalueBirds : return L"birds";
|
||
//case SimpleTypes::bordervalueBirdsFlight : return L"birdsFlight";
|
||
//case SimpleTypes::bordervalueCabins : return L"cabins";
|
||
//case SimpleTypes::bordervalueCakeSlice : return L"cakeSlice";
|
||
//case SimpleTypes::bordervalueCandyCorn : return L"candyCorn";
|
||
//case SimpleTypes::bordervalueCelticKnotwork : return L"celticKnotwork";
|
||
//case SimpleTypes::bordervalueCertificateBanner : return L"certificateBanner";
|
||
//case SimpleTypes::bordervalueChainLink : return L"chainLink";
|
||
//case SimpleTypes::bordervalueChampagneBottle : return L"champagneBottle";
|
||
//case SimpleTypes::bordervalueCheckedBarBlack : return L"checkedBarBlack";
|
||
//case SimpleTypes::bordervalueCheckedBarColor : return L"checkedBarColor";
|
||
//case SimpleTypes::bordervalueCheckered : return L"checkered";
|
||
//case SimpleTypes::bordervalueChristmasTree : return L"christmasTree";
|
||
//case SimpleTypes::bordervalueCirclesLines : return L"circlesLines";
|
||
//case SimpleTypes::bordervalueCirclesRectangles : return L"circlesRectangles";
|
||
//case SimpleTypes::bordervalueClassicalWave : return L"classicalWave";
|
||
//case SimpleTypes::bordervalueClocks : return L"clocks";
|
||
//case SimpleTypes::bordervalueCompass : return L"compass";
|
||
//case SimpleTypes::bordervalueConfetti : return L"confetti";
|
||
//case SimpleTypes::bordervalueConfettiGrays : return L"confettiGrays";
|
||
//case SimpleTypes::bordervalueConfettiOutline : return L"confettiOutline";
|
||
//case SimpleTypes::bordervalueConfettiStreamers : return L"confettiStreamers";
|
||
//case SimpleTypes::bordervalueConfettiWhite : return L"confettiWhite";
|
||
//case SimpleTypes::bordervalueCornerTriangles : return L"cornerTriangles";
|
||
//case SimpleTypes::bordervalueCouponCutoutDashes : return L"couponCutoutDashes";
|
||
//case SimpleTypes::bordervalueCouponCutoutDots : return L"couponCutoutDots";
|
||
//case SimpleTypes::bordervalueCrazyMaze : return L"crazyMaze";
|
||
//case SimpleTypes::bordervalueCreaturesButterfly : return L"creaturesButterfly";
|
||
//case SimpleTypes::bordervalueCreaturesFish : return L"creaturesFish";
|
||
//case SimpleTypes::bordervalueCreaturesInsects : return L"creaturesInsects";
|
||
//case SimpleTypes::bordervalueCreaturesLadyBug : return L"creaturesLadyBug";
|
||
//case SimpleTypes::bordervalueCrossStitch : return L"crossStitch";
|
||
//case SimpleTypes::bordervalueCup : return L"cup";
|
||
//case SimpleTypes::bordervalueCustom : return L"custom";
|
||
case SimpleTypes::bordervalueDashDotStroked : oOutputBorder.m_eType = RtfBorder::bt_brdrdashdotstr; break;
|
||
case SimpleTypes::bordervalueDashed : oOutputBorder.m_eType = RtfBorder::bt_brdrdash; break;
|
||
case SimpleTypes::bordervalueDashSmallGap : oOutputBorder.m_eType = RtfBorder::bt_brdrdashsm; break;
|
||
//case SimpleTypes::bordervalueDecoArch : return L"decoArch";
|
||
//case SimpleTypes::bordervalueDecoArchColor : return L"decoArchColor";
|
||
//case SimpleTypes::bordervalueDecoBlocks : return L"decoBlocks";
|
||
//case SimpleTypes::bordervalueDiamondsGray : return L"diamondsGray";
|
||
case SimpleTypes::bordervalueDotDash : oOutputBorder.m_eType = RtfBorder::bt_brdrdashd; break;
|
||
case SimpleTypes::bordervalueDotDotDash : oOutputBorder.m_eType = RtfBorder::bt_brdrdashdd; break;
|
||
case SimpleTypes::bordervalueDotted : oOutputBorder.m_eType = RtfBorder::bt_brdrdot; break;
|
||
case SimpleTypes::bordervalueDouble : oOutputBorder.m_eType = RtfBorder::bt_brdrdb; break;
|
||
//case SimpleTypes::bordervalueDoubleD : return L"doubleD";
|
||
//case SimpleTypes::bordervalueDoubleDiamonds : return L"doubleDiamonds";
|
||
case SimpleTypes::bordervalueDoubleWave : oOutputBorder.m_eType = RtfBorder::bt_brdrwavydb; break;
|
||
//case SimpleTypes::bordervalueEarth1 : return L"earth1";
|
||
//case SimpleTypes::bordervalueEarth2 : return L"earth2";
|
||
//case SimpleTypes::bordervalueEarth3 : return L"earth3";
|
||
//case SimpleTypes::bordervalueEclipsingSquares1 : return L"eclipsingSquares1";
|
||
//case SimpleTypes::bordervalueEclipsingSquares2 : return L"eclipsingSquares2";
|
||
//case SimpleTypes::bordervalueEggsBlack : return L"eggsBlack";
|
||
//case SimpleTypes::bordervalueFans : return L"fans";
|
||
//case SimpleTypes::bordervalueFilm : return L"film";
|
||
//case SimpleTypes::bordervalueFirecrackers : return L"firecrackers";
|
||
//case SimpleTypes::bordervalueFlowersBlockPrint : return L"flowersBlockPrint";
|
||
//case SimpleTypes::bordervalueFlowersDaisies : return L"flowersDaisies";
|
||
//case SimpleTypes::bordervalueFlowersModern1 : return L"flowersModern1";
|
||
//case SimpleTypes::bordervalueFlowersModern2 : return L"flowersModern2";
|
||
//case SimpleTypes::bordervalueFlowersPansy : return L"flowersPansy";
|
||
//case SimpleTypes::bordervalueFlowersRedRose : return L"flowersRedRose";
|
||
//case SimpleTypes::bordervalueFlowersRoses : return L"flowersRoses";
|
||
//case SimpleTypes::bordervalueFlowersTeacup : return L"flowersTeacup";
|
||
//case SimpleTypes::bordervalueFlowersTiny : return L"flowersTiny";
|
||
//case SimpleTypes::bordervalueGems : return L"gems";
|
||
//case SimpleTypes::bordervalueGingerbreadMan : return L"gingerbreadMan";
|
||
//case SimpleTypes::bordervalueGradient : return L"gradient";
|
||
//case SimpleTypes::bordervalueHandmade1 : return L"handmade1";
|
||
//case SimpleTypes::bordervalueHandmade2 : return L"handmade2";
|
||
//case SimpleTypes::bordervalueHeartBalloon : return L"heartBalloon";
|
||
//case SimpleTypes::bordervalueHeartGray : return L"heartGray";
|
||
//case SimpleTypes::bordervalueHearts : return L"hearts";
|
||
//case SimpleTypes::bordervalueHeebieJeebies : return L"heebieJeebies";
|
||
//case SimpleTypes::bordervalueHolly : return L"holly";
|
||
//case SimpleTypes::bordervalueHouseFunky : return L"houseFunky";
|
||
//case SimpleTypes::bordervalueHypnotic : return L"hypnotic";
|
||
//case SimpleTypes::bordervalueIceCreamCones : return L"iceCreamCones";
|
||
case SimpleTypes::bordervalueInset : oOutputBorder.m_eType = RtfBorder::bt_brdrinset; break;
|
||
//case SimpleTypes::bordervalueLightBulb : return L"lightBulb";
|
||
//case SimpleTypes::bordervalueLightning1 : return L"lightning1";
|
||
//case SimpleTypes::bordervalueLightning2 : return L"lightning2";
|
||
//case SimpleTypes::bordervalueMapleLeaf : return L"mapleLeaf";
|
||
//case SimpleTypes::bordervalueMapleMuffins : return L"mapleMuffins";
|
||
//case SimpleTypes::bordervalueMapPins : return L"mapPins";
|
||
//case SimpleTypes::bordervalueMarquee : return L"marquee";
|
||
//case SimpleTypes::bordervalueMarqueeToothed : return L"marqueeToothed";
|
||
//case SimpleTypes::bordervalueMoons : return L"moons";
|
||
//case SimpleTypes::bordervalueMosaic : return L"mosaic";
|
||
//case SimpleTypes::bordervalueMusicNotes : return L"musicNotes";
|
||
case SimpleTypes::bordervalueNil : oOutputBorder.m_eType = RtfBorder::bt_brdrnone; break;
|
||
case SimpleTypes::bordervalueNone : oOutputBorder.m_eType = RtfBorder::bt_brdrnone; break;
|
||
//case SimpleTypes::bordervalueNorthwest : return L"northwest";
|
||
case SimpleTypes::bordervalueOutset : oOutputBorder.m_eType = RtfBorder::bt_brdroutset; break;
|
||
//case SimpleTypes::bordervalueOvals : return L"ovals";
|
||
//case SimpleTypes::bordervaluePackages : return L"packages";
|
||
//case SimpleTypes::bordervaluePalmsBlack : return L"palmsBlack";
|
||
//case SimpleTypes::bordervaluePalmsColor : return L"palmsColor";
|
||
//case SimpleTypes::bordervaluePaperClips : return L"paperClips";
|
||
//case SimpleTypes::bordervaluePapyrus : return L"papyrus";
|
||
//case SimpleTypes::bordervaluePartyFavor : return L"partyFavor";
|
||
//case SimpleTypes::bordervaluePartyGlass : return L"partyGlass";
|
||
//case SimpleTypes::bordervaluePencils : return L"pencils";
|
||
//case SimpleTypes::bordervaluePeople : return L"people";
|
||
//case SimpleTypes::bordervaluePeopleHats : return L"peopleHats";
|
||
//case SimpleTypes::bordervaluePeopleWaving : return L"peopleWaving";
|
||
//case SimpleTypes::bordervaluePoinsettias : return L"poinsettias";
|
||
//case SimpleTypes::bordervaluePostageStamp : return L"postageStamp";
|
||
//case SimpleTypes::bordervaluePumpkin1 : return L"pumpkin1";
|
||
//case SimpleTypes::bordervaluePushPinNote1 : return L"pushPinNote1";
|
||
//case SimpleTypes::bordervaluePushPinNote2 : return L"pushPinNote2";
|
||
//case SimpleTypes::bordervaluePyramids : return L"pyramids";
|
||
//case SimpleTypes::bordervaluePyramidsAbove : return L"pyramidsAbove";
|
||
//case SimpleTypes::bordervalueQuadrants : return L"quadrants";
|
||
//case SimpleTypes::bordervalueRings : return L"rings";
|
||
//case SimpleTypes::bordervalueSafari : return L"safari";
|
||
//case SimpleTypes::bordervalueSawtooth : return L"sawtooth";
|
||
//case SimpleTypes::bordervalueSawtoothGray : return L"sawtoothGray";
|
||
//case SimpleTypes::bordervalueScaredCat : return L"scaredCat";
|
||
//case SimpleTypes::bordervalueSeattle : return L"seattle";
|
||
//case SimpleTypes::bordervalueShadowedSquares : return L"shadowedSquares";
|
||
//case SimpleTypes::bordervalueShapes1 : return L"shapes1";
|
||
//case SimpleTypes::bordervalueShapes2 : return L"shapes2";
|
||
//case SimpleTypes::bordervalueSharksTeeth : return L"sharksTeeth";
|
||
//case SimpleTypes::bordervalueShorebirdTracks : return L"shorebirdTracks";
|
||
case SimpleTypes::bordervalueSingle : oOutputBorder.m_eType = RtfBorder::bt_brdrs; break;
|
||
//case SimpleTypes::bordervalueSkyrocket : return L"skyrocket";
|
||
//case SimpleTypes::bordervalueSnowflakeFancy : return L"snowflakeFancy";
|
||
//case SimpleTypes::bordervalueSnowflakes : return L"snowflakes";
|
||
//case SimpleTypes::bordervalueSombrero : return L"sombrero";
|
||
//case SimpleTypes::bordervalueSouthwest : return L"southwest";
|
||
//case SimpleTypes::bordervalueStars : return L"stars";
|
||
//case SimpleTypes::bordervalueStars3d : return L"stars3d";
|
||
//case SimpleTypes::bordervalueStarsBlack : return L"starsBlack";
|
||
//case SimpleTypes::bordervalueStarsShadowed : return L"starsShadowed";
|
||
//case SimpleTypes::bordervalueStarsTop : return L"starsTop";
|
||
//case SimpleTypes::bordervalueSun : return L"sun";
|
||
//case SimpleTypes::bordervalueSwirligig : return L"swirligig";
|
||
case SimpleTypes::bordervalueThick : oOutputBorder.m_eType = RtfBorder::bt_brdrth; break;
|
||
case SimpleTypes::bordervalueThickThinLargeGap : oOutputBorder.m_eType = RtfBorder::bt_brdrthtnlg; break;
|
||
case SimpleTypes::bordervalueThickThinMediumGap : oOutputBorder.m_eType = RtfBorder::bt_brdrthtnmg; break;
|
||
case SimpleTypes::bordervalueThickThinSmallGap : oOutputBorder.m_eType = RtfBorder::bt_brdrthtnsg; break;
|
||
case SimpleTypes::bordervalueThinThickLargeGap : oOutputBorder.m_eType = RtfBorder::bt_brdrtnthlg; break;
|
||
case SimpleTypes::bordervalueThinThickMediumGap : oOutputBorder.m_eType = RtfBorder::bt_brdrtnthmg; break;
|
||
case SimpleTypes::bordervalueThinThickSmallGap : oOutputBorder.m_eType = RtfBorder::bt_brdrtnthsg; break;
|
||
case SimpleTypes::bordervalueThinThickThinLargeGap : oOutputBorder.m_eType = RtfBorder::bt_brdrtnthtnlg; break;
|
||
case SimpleTypes::bordervalueThinThickThinMediumGap: oOutputBorder.m_eType = RtfBorder::bt_brdrtnthtnmg; break;
|
||
case SimpleTypes::bordervalueThinThickThinSmallGap : oOutputBorder.m_eType = RtfBorder::bt_brdrtnthtnsg; break;
|
||
case SimpleTypes::bordervalueThreeDEmboss : oOutputBorder.m_eType = RtfBorder::bt_brdremboss; break;
|
||
case SimpleTypes::bordervalueThreeDEngrave : oOutputBorder.m_eType = RtfBorder::bt_brdrengrave; break;
|
||
//case SimpleTypes::bordervalueTornPaper : return L"tornPaper";
|
||
//case SimpleTypes::bordervalueTornPaperBlack : return L"tornPaperBlack";
|
||
//case SimpleTypes::bordervalueTrees : return L"trees";
|
||
//case SimpleTypes::bordervalueTriangle1 : return L"triangle1";
|
||
//case SimpleTypes::bordervalueTriangle2 : return L"triangle2";
|
||
//case SimpleTypes::bordervalueTriangleCircle1 : return L"triangleCircle1";
|
||
//case SimpleTypes::bordervalueTriangleCircle2 : return L"triangleCircle2";
|
||
//case SimpleTypes::bordervalueTriangleParty : return L"triangleParty";
|
||
//case SimpleTypes::bordervalueTriangles : return L"triangles";
|
||
case SimpleTypes::bordervalueTriple : oOutputBorder.m_eType = RtfBorder::bt_brdrtriple; break;
|
||
//case SimpleTypes::bordervalueTwistedLines1 : return L"twistedLines1";
|
||
//case SimpleTypes::bordervalueTwistedLines2 : return L"twistedLines2";
|
||
//case SimpleTypes::bordervalueVine : return L"vine";
|
||
case SimpleTypes::bordervalueWave : oOutputBorder.m_eType = RtfBorder::bt_brdrwavy; break;
|
||
//case SimpleTypes::bordervalueWaveline : return L"waveline";
|
||
//case SimpleTypes::bordervalueWeavingAngles : return L"weavingAngles";
|
||
//case SimpleTypes::bordervalueWeavingBraid : return L"weavingBraid";
|
||
//case SimpleTypes::bordervalueWeavingRibbon : return L"weavingRibbon";
|
||
//case SimpleTypes::bordervalueWeavingStrips : return L"weavingStrips";
|
||
//case SimpleTypes::bordervalueWhiteFlowers : return L"whiteFlowers";
|
||
//case SimpleTypes::bordervalueWoodwork : return L"woodwork";
|
||
//case SimpleTypes::bordervalueXIllusions : return L"xIllusions";
|
||
//case SimpleTypes::bordervalueZanyTriangles : return L"zanyTriangles";
|
||
//case SimpleTypes::bordervalueZigZag : return L"zigZag";
|
||
//case SimpleTypes::bordervalueZigZagStitch : return L"zigZagStitch";
|
||
|
||
//oOutputBorder.m_eType = RtfBorder::bt_brdrsh;
|
||
//oOutputBorder.m_eType = RtfBorder::bt_brdrhair;
|
||
//default : oOutputBorder.m_eType = RtfBorder::bt_brdrs; break;
|
||
|
||
}
|
||
|
||
if (type_border >=0 && oOutputBorder.m_eType == PROP_DEF)
|
||
oOutputBorder.m_eType = RtfBorder::bt_brdrs;
|
||
|
||
return true;
|
||
}
|