mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-10 23:03:14 +08:00
477 lines
14 KiB
C++
477 lines
14 KiB
C++
|
||
|
||
#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
|
||
{
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
// 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));
|
||
}
|
||
}
|