mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
508 lines
16 KiB
C++
508 lines
16 KiB
C++
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2018
|
|
*
|
|
* 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));
|
|
}
|
|
}
|