/* * (c) Copyright Ascensio System SIA 2010-2016 * * 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 Lubanas st. 125a-25, Riga, Latvia, * EU, LV-1021. * * 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 "StyleBooleans.h" #include "../Common/FormatUtils.h" namespace ASCDocFileFormat { LineStyleBooleans::LineStyleBooleans () { fNoLineDrawDash = false; fLineFillShape = false; fHitTestLine = false; fLine = false; fArrowheadsOK = false; fInsetPenOK = false; fInsetPen = false; fLineOpaqueBackColor = false; fUsefNoLineDrawDash = false; fUsefLineFillShape = false; fUsefHitTestLine = false; fUsefLine = false; fUsefArrowheadsOK = false; fUsefInsetPenOK = false; fUsefInsetPen = false; fUsefLineOpaqueBackColor = false; } unsigned int LineStyleBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(fNoLineDrawDash, 0); // A oBits.SetBit(fLineFillShape, 1); // B oBits.SetBit(fHitTestLine, 2); // C oBits.SetBit(fLine, 3); // D oBits.SetBit(fArrowheadsOK, 4); // E oBits.SetBit(fInsetPenOK, 5); // F oBits.SetBit(fInsetPen, 6); // G oBits.SetBit(false, 7); // H - ignore oBits.SetBit(false, 8); // I - ignore oBits.SetBit(fLineOpaqueBackColor, 9); // J oBits.SetBit(false, 10); // 1 - ignore oBits.SetBit(false, 11); // 2 - ignore oBits.SetBit(false, 12); // 3 - ignore oBits.SetBit(false, 13); // 4 - ignore oBits.SetBit(false, 14); // 5 - ignore oBits.SetBit(false, 15); // 6 - ignore oBits.SetBit(fUsefNoLineDrawDash, 16); // K oBits.SetBit(fUsefLineFillShape, 17); // L oBits.SetBit(fUsefHitTestLine, 18); // M oBits.SetBit(fUsefLine, 19); // N oBits.SetBit(fUsefArrowheadsOK, 20); // O oBits.SetBit(fUsefInsetPenOK, 21); // P oBits.SetBit(fUsefInsetPen, 22); // Q oBits.SetBit(false, 23); // 1 - ignore oBits.SetBit(false, 24); // 2 - ignore oBits.SetBit(fUsefLineOpaqueBackColor, 25); // T oBits.SetBit(false, 26); // 1 - ignore oBits.SetBit(false, 27); // 2 - ignore oBits.SetBit(false, 28); // 3 - ignore oBits.SetBit(false, 29); // 4 - ignore oBits.SetBit(false, 30); // 5 - ignore oBits.SetBit(false, 31); // 6 - ignore return FormatUtils::BytesToInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } FillStyleBooleans::FillStyleBooleans() { fNoFillHitTest = false; fillUseRect = false; fillShape = false; fHitTestFill = false; fFilled = false; fUseShapeAnchor = false; fRecolorFillAsPicture = false; fUsefNoFillHitTest = false; fUsefillUseRect = false; fUsefillShape = false; fUseHitTestFill = false; fUsefFilled = false; fUsefUseShapeAnchor = false; fUsefRecolorFillAsPicture = false; } unsigned int FillStyleBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(false, 0); // unused (9 bits) oBits.SetBit(false, 1); // oBits.SetBit(false, 2); // oBits.SetBit(false, 3); // oBits.SetBit(false, 4); // oBits.SetBit(false, 5); // oBits.SetBit(false, 6); // oBits.SetBit(false, 7); // oBits.SetBit(false, 8); // oBits.SetBit(fNoFillHitTest, 9); // A oBits.SetBit(fillUseRect, 10); // B oBits.SetBit(fillShape, 11); // C oBits.SetBit(fHitTestFill, 12); // D oBits.SetBit(fFilled, 13); // E oBits.SetBit(fUseShapeAnchor, 14); // F oBits.SetBit(fRecolorFillAsPicture, 15); // G oBits.SetBit(false, 16); // unused (9 bits) oBits.SetBit(false, 17); // oBits.SetBit(false, 18); // oBits.SetBit(false, 19); // oBits.SetBit(false, 20); // oBits.SetBit(false, 21); // oBits.SetBit(false, 22); // oBits.SetBit(false, 23); // oBits.SetBit(false, 24); // oBits.SetBit(fUsefNoFillHitTest, 25); // oBits.SetBit(fUsefillUseRect, 26); // oBits.SetBit(fUsefillShape, 27); // oBits.SetBit(fUseHitTestFill, 28); // oBits.SetBit(fUsefFilled, 29); // oBits.SetBit(fUsefUseShapeAnchor, 30); // oBits.SetBit(fUsefRecolorFillAsPicture, 31); // return FormatUtils::BytesToInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } GeometryBooleans::GeometryBooleans() { fFillOK = false; fFillShadeShapeOK = false; fGtextOK = false; fLineOK = false; f3DOK = false; fShadowOK = false; fUsefFillOK = false; fUsefFillShadeShapeOK = false; fUsefGtextOK = false; fUsefLineOK = false; fUsef3DOK = false; fUsefShadowOK = false; } unsigned int GeometryBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(fFillOK, 0); // A oBits.SetBit(fFillShadeShapeOK, 1); // B oBits.SetBit(fGtextOK, 2); // C oBits.SetBit(fLineOK, 3); // D oBits.SetBit(f3DOK, 4); // E oBits.SetBit(fShadowOK, 5); // F oBits.SetBit(false, 6); // G - ignore oBits.SetBit(false, 7); // 1 - ignore oBits.SetBit(false, 8); // 2 - ignore oBits.SetBit(false, 9); // 3 - ignore oBits.SetBit(false, 10); // 4 - ignore oBits.SetBit(false, 11); // 5 - ignore oBits.SetBit(false, 12); // 6 - ignore oBits.SetBit(false, 13); // 7 - ignore oBits.SetBit(false, 14); // 8 - ignore oBits.SetBit(false, 15); // 9 - ignore oBits.SetBit(fUsefFillOK, 16); // H oBits.SetBit(fUsefFillShadeShapeOK, 17); // I oBits.SetBit(fUsefGtextOK, 18); // J oBits.SetBit(fUsefLineOK, 19); // K oBits.SetBit(fUsef3DOK, 20); // L oBits.SetBit(fUsefShadowOK, 21); // M oBits.SetBit(false, 22); // N - ignore oBits.SetBit(false, 23); // 1 - ignore oBits.SetBit(false, 24); // 2 - ignore oBits.SetBit(false, 25); // 3 - ignore oBits.SetBit(false, 26); // 4 - ignore oBits.SetBit(false, 27); // 5 - ignore oBits.SetBit(false, 28); // 6 - ignore oBits.SetBit(false, 29); // 7 - ignore oBits.SetBit(false, 30); // 8 - ignore oBits.SetBit(false, 31); // 9 - ignore return FormatUtils::BytesToInt32 (oBits.GetBytes(), 0, sizeof(int)); } GroupShapeBooleans::GroupShapeBooleans() { fPrint = false; fHidden = false; fOneD = false; fIsButton = false; fOnDblClickNotify = false; fBehindDocument = false; fEditedWrap = false; fScriptAnchor = false; fReallyHidden = false; fAllowOverlap = false; fUserDrawn = false; fHorizRule = false; fNoshadeHR = false; fStandardHR = false; fIsBullet = false; fLayoutInCell = false; fUsefPrint = false; fUsefHidden = false; fUsefOneD = false; fUsefIsButton = false; fUsefOnDblClickNotify = false; fUsefBehindDocument = false; fUsefEditedWrap = false; fUsefScriptAnchor = false; fUsefReallyHidden = false; fUsefAllowOverlap = false; fUsefUserDrawn = false; fUsefHorizRule = false; fUsefNoshadeHR = false; fUsefStandardHR = false; fUsefIsBullet = false; fUsefLayoutInCell = false; } unsigned int GroupShapeBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(fPrint, 0); // A oBits.SetBit(fHidden, 1); // B oBits.SetBit(fOneD, 2); // C oBits.SetBit(fIsButton, 3); // D oBits.SetBit(fOnDblClickNotify, 4); // E oBits.SetBit(fBehindDocument, 5); // F oBits.SetBit(fEditedWrap, 6); // G oBits.SetBit(fScriptAnchor, 7); // H oBits.SetBit(fReallyHidden, 8); // I oBits.SetBit(fAllowOverlap, 9); // J oBits.SetBit(fUserDrawn, 10); // K oBits.SetBit(fHorizRule, 11); // L oBits.SetBit(fNoshadeHR, 12); // oBits.SetBit(fStandardHR, 13); // oBits.SetBit(fIsBullet, 14); // oBits.SetBit(fLayoutInCell, 15); // oBits.SetBit(fUsefPrint, 16); // oBits.SetBit(fUsefHidden, 17); // oBits.SetBit(fUsefOneD, 18); // oBits.SetBit(fUsefIsButton, 19); // oBits.SetBit(fUsefOnDblClickNotify, 20); // oBits.SetBit(fUsefBehindDocument, 21); // oBits.SetBit(fUsefEditedWrap, 22); // oBits.SetBit(fUsefScriptAnchor, 23); // oBits.SetBit(fUsefReallyHidden, 24); // oBits.SetBit(fUsefAllowOverlap, 25); // oBits.SetBit(fUsefUserDrawn, 26); // oBits.SetBit(fUsefHorizRule, 27); // oBits.SetBit(fUsefNoshadeHR, 28); // oBits.SetBit(fUsefStandardHR, 29); // oBits.SetBit(fUsefIsBullet, 30); // oBits.SetBit(fUsefLayoutInCell, 31); // return FormatUtils::BytesToUInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } BlipBooleans::BlipBooleans() { fPictureActive = false; fPictureBiLevel = false; fPictureGray = false; fNoHitTestPicture = false; fLooping = false; fRewind = false; fPicturePreserveGrays = false; fUsefPictureActive = false; fUsefPictureBiLevel = false; fUsefPictureGray = false; fUsefNoHitTestPicture = false; fUsefLooping = false; fUsefRewind = false; fUsefPicturePreserveGrays = false; } unsigned int BlipBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(fPictureActive, 0); // A oBits.SetBit(fPictureBiLevel, 1); // B oBits.SetBit(fPictureGray, 2); // C oBits.SetBit(fNoHitTestPicture, 3); // D oBits.SetBit(fLooping, 4); // E oBits.SetBit(fRewind, 5); // F oBits.SetBit(fPicturePreserveGrays, 6); // G oBits.SetBit(false, 7); // H oBits.SetBit(false, 8); // I oBits.SetBit(false, 9); // J oBits.SetBit(false, 10); // K oBits.SetBit(false, 11); // L oBits.SetBit(false, 12); // oBits.SetBit(false, 13); // oBits.SetBit(false, 14); // oBits.SetBit(false, 15); // oBits.SetBit(fUsefPictureActive, 16); // oBits.SetBit(fUsefPictureBiLevel, 17); // oBits.SetBit(fUsefPictureGray, 18); // oBits.SetBit(fUsefNoHitTestPicture, 19); // oBits.SetBit(fUsefLooping, 20); // oBits.SetBit(fUsefRewind, 21); // oBits.SetBit(fUsefPicturePreserveGrays, 22); // oBits.SetBit(false, 23); // oBits.SetBit(false, 24); // oBits.SetBit(false, 25); // oBits.SetBit(false, 26); // oBits.SetBit(false, 27); // oBits.SetBit(false, 28); // oBits.SetBit(false, 29); // oBits.SetBit(false, 30); // oBits.SetBit(false, 31); // return FormatUtils::BytesToUInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } TextBooleans::TextBooleans() { fFitShapeToText = false; fAutoTextMargin = false; fSelectText = false; fUsefFitShapeToText = false; fUsefAutoTextMargin = false; fUsefSelectText = false; } unsigned int TextBooleans::Get() const { ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(false, 0); // A oBits.SetBit(fFitShapeToText, 1); // B oBits.SetBit(false, 2); // C oBits.SetBit(fAutoTextMargin, 3); // D oBits.SetBit(fSelectText, 4); // E oBits.SetBit(false, 5); // F oBits.SetBit(false, 6); // G oBits.SetBit(false, 7); // H oBits.SetBit(false, 8); // I oBits.SetBit(false, 9); // J oBits.SetBit(false, 10); // K oBits.SetBit(false, 11); // L oBits.SetBit(false, 12); // oBits.SetBit(false, 13); // oBits.SetBit(false, 14); // oBits.SetBit(false, 15); // oBits.SetBit(false, 16); // oBits.SetBit(fUsefFitShapeToText, 17); // oBits.SetBit(false, 18); // oBits.SetBit(fUsefAutoTextMargin, 19); // oBits.SetBit(fUsefSelectText, 20); // oBits.SetBit(false, 21); // oBits.SetBit(false, 22); // oBits.SetBit(false, 23); // oBits.SetBit(false, 24); // oBits.SetBit(false, 25); // oBits.SetBit(false, 26); // oBits.SetBit(false, 27); // oBits.SetBit(false, 28); // oBits.SetBit(false, 29); // oBits.SetBit(false, 30); // oBits.SetBit(false, 31); // return FormatUtils::BytesToUInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } bool TextBooleans::IsValid () { return (fFitShapeToText || fAutoTextMargin || fSelectText || fUsefFitShapeToText || fUsefAutoTextMargin || fUsefSelectText); } ShadowBooleans::ShadowBooleans() { fUsefShadow = false; fUsefShadowObscured = false; fShadow = false; fShadowObscured = false; } unsigned int ShadowBooleans::Get() const { // данные формируются не по спецификации // 11 00000 00000 000 0 10 - obscured // 11 00000 00000 000 0 11 - fill ASCDocFormatUtils::BitSet oBits(4); oBits.SetBit(fShadowObscured, 0); oBits.SetBit(fShadow, 1); oBits.SetBit(false, 2); oBits.SetBit(false, 3); oBits.SetBit(false, 4); oBits.SetBit(false, 5); oBits.SetBit(false, 6); oBits.SetBit(false, 7); oBits.SetBit(false, 8); oBits.SetBit(false, 9); oBits.SetBit(false, 10); oBits.SetBit(false, 11); oBits.SetBit(false, 12); oBits.SetBit(false, 13); oBits.SetBit(false, 14); oBits.SetBit(false, 15); oBits.SetBit(fUsefShadowObscured, 16); oBits.SetBit(fUsefShadow, 17); oBits.SetBit(false, 18); oBits.SetBit(false, 19); oBits.SetBit(false, 20); oBits.SetBit(false, 21); oBits.SetBit(false, 22); oBits.SetBit(false, 23); oBits.SetBit(false, 24); oBits.SetBit(false, 25); oBits.SetBit(false, 26); oBits.SetBit(false, 27); oBits.SetBit(false, 28); oBits.SetBit(false, 29); oBits.SetBit(false, 30); oBits.SetBit(false, 31); return FormatUtils::BytesToUInt32 (oBits.GetBytes(), 0, sizeof(unsigned int)); } }