mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Added the implementation of the object property parse in HWPML
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
#ifndef COMMON_H
|
#ifndef COMMON_H
|
||||||
#define COMMON_H
|
#define COMMON_H
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
@ -45,6 +46,8 @@ typedef char HWP_BYTE;
|
|||||||
arTempVector[unIndex] = dynamic_cast<const type*>(array_values[unIndex]); \
|
arTempVector[unIndex] = dynamic_cast<const type*>(array_values[unIndex]); \
|
||||||
return arTempVector
|
return arTempVector
|
||||||
|
|
||||||
|
#define TO_LOWER(value) std::transform(value.begin(), value.end(), value.begin(), tolower)
|
||||||
|
|
||||||
class IRef
|
class IRef
|
||||||
{
|
{
|
||||||
unsigned long m_ulRef;
|
unsigned long m_ulRef;
|
||||||
|
|||||||
@ -1,16 +1,66 @@
|
|||||||
#ifndef NODENAMES_H
|
#ifndef NODENAMES_H
|
||||||
#define NODENAMES_H
|
#define NODENAMES_H
|
||||||
|
|
||||||
#define MAX_TYPES 2
|
|
||||||
#define MAX_NODES 100
|
|
||||||
|
|
||||||
#include "../HanType.h"
|
#include "../HanType.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
enum class ENode
|
enum class ENode
|
||||||
{
|
{
|
||||||
Body,
|
//HEAD
|
||||||
|
BeginNum,
|
||||||
|
FaceNameList,
|
||||||
|
FontFace,
|
||||||
|
Font,
|
||||||
|
SubFont,
|
||||||
|
TypeInfo,
|
||||||
|
BorderFillList,
|
||||||
|
BorderFill,
|
||||||
|
LeftBorder,
|
||||||
|
RightBorder, //10
|
||||||
|
TopBorder,
|
||||||
|
BottomBorder,
|
||||||
|
Diagonal,
|
||||||
|
FillBrush,
|
||||||
|
WindowBrush,
|
||||||
|
Gradation,
|
||||||
|
Color,
|
||||||
|
ImageBrush,
|
||||||
|
Image,
|
||||||
|
CharShapeList, //20
|
||||||
|
CharShape,
|
||||||
|
FontId,
|
||||||
|
Ratio,
|
||||||
|
CharSpacing,
|
||||||
|
RelSize,
|
||||||
|
CharOffset,
|
||||||
|
Italic,
|
||||||
|
Bold,
|
||||||
|
Underline,
|
||||||
|
Outline, //30
|
||||||
|
Shadow,
|
||||||
|
Emboss,
|
||||||
|
Engrave,
|
||||||
|
SuperScript,
|
||||||
|
SubScript,
|
||||||
|
TabDefList,
|
||||||
|
TabDef,
|
||||||
|
TabItem,
|
||||||
|
NumberingList,
|
||||||
|
Numbering, //40
|
||||||
|
ParaHead,
|
||||||
|
BulletList,
|
||||||
|
Bullet,
|
||||||
|
//ParaHead
|
||||||
|
ParaShapeList,
|
||||||
|
ParaShape,
|
||||||
|
ParaMargin,
|
||||||
|
ParaBorder,
|
||||||
|
StyleList,
|
||||||
|
Style,
|
||||||
|
|
||||||
|
//BODY
|
||||||
|
Body, //50
|
||||||
Section,
|
Section,
|
||||||
Paragraph,
|
Paragraph,
|
||||||
Text,
|
Text,
|
||||||
@ -20,7 +70,7 @@ enum class ENode
|
|||||||
Picture,
|
Picture,
|
||||||
Container,
|
Container,
|
||||||
Ole,
|
Ole,
|
||||||
Equation,
|
Equation, //60
|
||||||
TextArt,
|
TextArt,
|
||||||
Line,
|
Line,
|
||||||
Rectangle,
|
Rectangle,
|
||||||
@ -30,11 +80,10 @@ enum class ENode
|
|||||||
Curve,
|
Curve,
|
||||||
ConnectLine,
|
ConnectLine,
|
||||||
Tab,
|
Tab,
|
||||||
LineBreak,
|
LineBreak, //70
|
||||||
Hyphen,
|
Hyphen,
|
||||||
NbSpace,
|
NbSpace,
|
||||||
FwSpace,
|
FwSpace,
|
||||||
|
|
||||||
|
|
||||||
//Only hwpx
|
//Only hwpx
|
||||||
Ctrl,
|
Ctrl,
|
||||||
@ -43,14 +92,72 @@ enum class ENode
|
|||||||
Video,
|
Video,
|
||||||
Switch,
|
Switch,
|
||||||
Case,
|
Case,
|
||||||
Default
|
Default,
|
||||||
|
Slash,
|
||||||
|
BackSlash
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define MAX_TYPES 2
|
||||||
|
#define MAX_NODES 100
|
||||||
|
|
||||||
static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
||||||
{
|
{
|
||||||
// HWPX
|
// HWPX
|
||||||
{
|
{
|
||||||
"",
|
//HEAD
|
||||||
|
"hh:beginNum",
|
||||||
|
"hh:fontfaces",
|
||||||
|
"hh:fontface",
|
||||||
|
"hh:font",
|
||||||
|
"hh:substFont",
|
||||||
|
"hh:typeInfo",
|
||||||
|
"hh:borderFills",
|
||||||
|
"hh:borderFill",
|
||||||
|
"hh:leftBorder",
|
||||||
|
"hh:rightBorder", //10
|
||||||
|
"hh:topBorder",
|
||||||
|
"hh:bottomBorder",
|
||||||
|
"hh:diagonal",
|
||||||
|
"hc:fillBrush",
|
||||||
|
"hc:winBrush",
|
||||||
|
"hc:gradation",
|
||||||
|
"hc:color",
|
||||||
|
"hc:imgBrush",
|
||||||
|
"hc:img",
|
||||||
|
"h:charProperties", //20
|
||||||
|
"hh:charPr",
|
||||||
|
"hh:fontRef",
|
||||||
|
"hh:ratio",
|
||||||
|
"hh:spacing",
|
||||||
|
"hh:relSz",
|
||||||
|
"hh:offset",
|
||||||
|
"hh:italic",
|
||||||
|
"hh:bold",
|
||||||
|
"hh:underline",
|
||||||
|
"hh:outline", //30
|
||||||
|
"hh:shadow",
|
||||||
|
"hh:emboss",
|
||||||
|
"hh:engrave",
|
||||||
|
"hh:supscript",
|
||||||
|
"hh:subscript",
|
||||||
|
"hh:tabProperties",
|
||||||
|
"hh:tabPr",
|
||||||
|
"hh:tabPr",
|
||||||
|
"hh:numberings",
|
||||||
|
"hh:numbering", //40
|
||||||
|
"hh:paraHead",
|
||||||
|
"hh:bullets",
|
||||||
|
"hh:bullet",
|
||||||
|
//"PARAHEAD",
|
||||||
|
"hh:paraProperties",
|
||||||
|
"hh:paraPr",
|
||||||
|
"hh:margin",
|
||||||
|
"hh:border",
|
||||||
|
"hh:styles",
|
||||||
|
"hh:style",
|
||||||
|
|
||||||
|
//BODY
|
||||||
|
"", //50
|
||||||
"hs:sec",
|
"hs:sec",
|
||||||
"hp:p",
|
"hp:p",
|
||||||
"hp:run",
|
"hp:run",
|
||||||
@ -60,7 +167,7 @@ static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
|||||||
"hp:pic",
|
"hp:pic",
|
||||||
"hp:container",
|
"hp:container",
|
||||||
"hp:ole",
|
"hp:ole",
|
||||||
"hp:equation",
|
"hp:equation", //60
|
||||||
"hp:textart",
|
"hp:textart",
|
||||||
"hp:line",
|
"hp:line",
|
||||||
"hp:rect",
|
"hp:rect",
|
||||||
@ -70,7 +177,7 @@ static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
|||||||
"hp:curve",
|
"hp:curve",
|
||||||
"hp:connectLine",
|
"hp:connectLine",
|
||||||
"hp:tab",
|
"hp:tab",
|
||||||
"hp:lineBreak",
|
"hp:lineBreak", //70
|
||||||
"hp:hyphen",
|
"hp:hyphen",
|
||||||
"hp:nbSpace",
|
"hp:nbSpace",
|
||||||
"hp:fwSpace"
|
"hp:fwSpace"
|
||||||
@ -85,7 +192,59 @@ static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
|||||||
},
|
},
|
||||||
// HWPML
|
// HWPML
|
||||||
{
|
{
|
||||||
"BODY",
|
//HEAD
|
||||||
|
"BEGINNUMBER",
|
||||||
|
"FACENAMELIST",
|
||||||
|
"FONTFACE",
|
||||||
|
"FONT",
|
||||||
|
"SUBSTFONT",
|
||||||
|
"TYPEINFO",
|
||||||
|
"BORDERFILLLIST",
|
||||||
|
"BORDERFILL",
|
||||||
|
"LEFTBORDER",
|
||||||
|
"RIGHTBORDER", //10
|
||||||
|
"TOPBORDER",
|
||||||
|
"BOTTOMBORDER",
|
||||||
|
"DIAGONAL",
|
||||||
|
"FILLBRUSH",
|
||||||
|
"WINDOWBRUSH",
|
||||||
|
"GRADATION",
|
||||||
|
"COLOR",
|
||||||
|
"IMAGEBRUSH",
|
||||||
|
"IMAGE",
|
||||||
|
"CHARSHAPELIST", //20
|
||||||
|
"CHARSHAPE",
|
||||||
|
"FONTID",
|
||||||
|
"RATIO",
|
||||||
|
"CHARSPACING",
|
||||||
|
"RELSIZE",
|
||||||
|
"CHAROFFSET",
|
||||||
|
"ITALIC",
|
||||||
|
"BOLD",
|
||||||
|
"UNDERLINE",
|
||||||
|
"OUTLINE", //30
|
||||||
|
"SHADOW",
|
||||||
|
"EMBOSS",
|
||||||
|
"ENGRAVE",
|
||||||
|
"SUPERSCRIPT",
|
||||||
|
"SUBSCRIPT",
|
||||||
|
"TABDEFLIST",
|
||||||
|
"TABDEF",
|
||||||
|
"TABITEM",
|
||||||
|
"NUMBERINGLIST",
|
||||||
|
"NUMBERING", //40
|
||||||
|
"PARAHEAD",
|
||||||
|
"BULLETLIST",
|
||||||
|
"BULLET",
|
||||||
|
//"PARAHEAD",
|
||||||
|
"PARASHAPELIST",
|
||||||
|
"PARASHAPE",
|
||||||
|
"PARAMARGIN",
|
||||||
|
"PARABORDER",
|
||||||
|
"STYLELIST",
|
||||||
|
"STYLE",
|
||||||
|
//BODY
|
||||||
|
"BODY", //50
|
||||||
"SECTION",
|
"SECTION",
|
||||||
"P",
|
"P",
|
||||||
"TEXT",
|
"TEXT",
|
||||||
@ -95,7 +254,7 @@ static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
|||||||
"PICTURE",
|
"PICTURE",
|
||||||
"CONTAINER",
|
"CONTAINER",
|
||||||
"OLE",
|
"OLE",
|
||||||
"EQUATION",
|
"EQUATION", //60
|
||||||
"TEXTART",
|
"TEXTART",
|
||||||
"LINE",
|
"LINE",
|
||||||
"RECTANGLE",
|
"RECTANGLE",
|
||||||
@ -105,7 +264,7 @@ static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
|
|||||||
"CURVE",
|
"CURVE",
|
||||||
"CONNECTLINE",
|
"CONNECTLINE",
|
||||||
"TAB",
|
"TAB",
|
||||||
"LINEBREAK",
|
"LINEBREAK", //70
|
||||||
"HYPHEN",
|
"HYPHEN",
|
||||||
"NBSPACE",
|
"NBSPACE",
|
||||||
"FWSPACE",
|
"FWSPACE",
|
||||||
@ -130,50 +289,449 @@ inline const char* GetNodeName(ENode eNode, EHanType eType)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_ARGUMENTS 6
|
enum class EAttribute
|
||||||
|
|
||||||
enum class EArgument
|
|
||||||
{
|
{
|
||||||
ParaShape,
|
ParaShape,
|
||||||
Style,
|
Style,
|
||||||
|
CharShape,
|
||||||
|
Href,
|
||||||
|
SubPath,
|
||||||
|
MediaType,
|
||||||
|
Type,
|
||||||
|
FontName,
|
||||||
|
FamilyType,
|
||||||
|
SerifStyle, //10
|
||||||
|
Weight,
|
||||||
|
Proportion,
|
||||||
|
Contrast,
|
||||||
|
StrokeVariation,
|
||||||
|
ArmStyle,
|
||||||
|
Letterform,
|
||||||
|
Midline,
|
||||||
|
XHeight,
|
||||||
|
ThreeD,
|
||||||
|
Shadow, //20
|
||||||
|
Slash,
|
||||||
|
BackSlash,
|
||||||
|
CrookedSlash,
|
||||||
|
CounterSlash,
|
||||||
|
CounterBackSlash,
|
||||||
|
BreakCellSeparateLine,
|
||||||
|
Width,
|
||||||
|
Color,
|
||||||
|
FaceColor,
|
||||||
|
HatchColor, //30
|
||||||
|
HatchStyle,
|
||||||
|
Alpha,
|
||||||
|
Angle,
|
||||||
|
CenterX,
|
||||||
|
CenterY,
|
||||||
|
Step,
|
||||||
|
ColorNum,
|
||||||
|
StepCenter,
|
||||||
|
Value,
|
||||||
|
Mode, //40
|
||||||
|
Bright,
|
||||||
|
Effect,
|
||||||
|
BinItem,
|
||||||
|
Height,
|
||||||
|
TextColor,
|
||||||
|
ShadeColor,
|
||||||
|
UseFontSpace,
|
||||||
|
UseKerning,
|
||||||
|
SymMask,
|
||||||
|
BorderFillId, //50
|
||||||
|
Shape,
|
||||||
|
OffsetX,
|
||||||
|
OffsetY,
|
||||||
|
AutoTabLeft,
|
||||||
|
AutoTabRight,
|
||||||
|
Leader,
|
||||||
|
Start,
|
||||||
|
Level,
|
||||||
|
Aligment,
|
||||||
|
UseInstWidth, //60
|
||||||
|
AutoIndent,
|
||||||
|
WidthAdjust,
|
||||||
|
TextOffsetType,
|
||||||
|
TextOffset,
|
||||||
|
NumFormat,
|
||||||
|
Char,
|
||||||
|
Image,
|
||||||
|
Align,
|
||||||
|
VerAlign,
|
||||||
|
HeadingType, //70
|
||||||
|
TabDef,
|
||||||
|
BreakLatinWord,
|
||||||
|
BreakNonLatinWord,
|
||||||
|
Condense,
|
||||||
|
WidowOrphan,
|
||||||
|
KeepWithNext,
|
||||||
|
KeepLines,
|
||||||
|
PageBreakBefore,
|
||||||
|
FontLineHeight,
|
||||||
|
SnapToGrid, //80
|
||||||
|
LineWrap,
|
||||||
|
AutoSpaceEAsianEng,
|
||||||
|
AutoSpaceEAsianNum,
|
||||||
|
Indent,
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
Prev,
|
||||||
|
Next,
|
||||||
|
LineSpacingType,
|
||||||
|
LineSpacing, //90
|
||||||
|
BorderFill,
|
||||||
|
OffsetLeft,
|
||||||
|
OffsetRight,
|
||||||
|
OffsetTop,
|
||||||
|
OffsetBottom,
|
||||||
|
Connect,
|
||||||
|
IgnoreMargin,
|
||||||
|
EngName,
|
||||||
|
NextStyle,
|
||||||
|
LangId, //100
|
||||||
InstId,
|
InstId,
|
||||||
|
LockForm,
|
||||||
|
Name,
|
||||||
|
|
||||||
PageBreak,
|
PageBreak,
|
||||||
ColumnBreak,
|
ColumnBreak,
|
||||||
CharShape
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static constexpr const char* ARGUMENT_NAMES[MAX_TYPES][MAX_ARGUMENTS] =
|
#define MAX_ATTRIBUTES 110
|
||||||
|
|
||||||
|
//TODO:: добавить все аргументы
|
||||||
|
static constexpr const char* ATTRUBUTE_NAMES[MAX_TYPES][MAX_ATTRIBUTES] =
|
||||||
{
|
{
|
||||||
// HWPX
|
// HWPX
|
||||||
{
|
{
|
||||||
"paraPrIDRef",
|
"paraPrIDRef",
|
||||||
"styleIDRef",
|
"styleIDRef",
|
||||||
"id",
|
"charPrIDRef",
|
||||||
|
"href",
|
||||||
|
"sub-path",
|
||||||
|
"media-type",
|
||||||
|
"type",
|
||||||
|
"face",
|
||||||
|
"familyType",
|
||||||
|
"serifStyle", //10
|
||||||
|
"weight",
|
||||||
|
"proportion",
|
||||||
|
"contrast",
|
||||||
|
"strokeVariation",
|
||||||
|
"armStyle",
|
||||||
|
"letterform",
|
||||||
|
"midline",
|
||||||
|
"xHeight",
|
||||||
|
"threeD",
|
||||||
|
"shadow", //20
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"breakCellSeparateLine",
|
||||||
|
"width",
|
||||||
|
"color",
|
||||||
|
"faceColor",
|
||||||
|
"hatchColor", //30
|
||||||
|
"hatchStyle",
|
||||||
|
"alpha",
|
||||||
|
"angle",
|
||||||
|
"centerX",
|
||||||
|
"centerY",
|
||||||
|
"step",
|
||||||
|
"colorNum",
|
||||||
|
"stepCenter",
|
||||||
|
"value",
|
||||||
|
"mode", //40
|
||||||
|
"bright",
|
||||||
|
"effect",
|
||||||
|
"binaryItemIDRef",
|
||||||
|
"height",
|
||||||
|
"textColor",
|
||||||
|
"shadeColor",
|
||||||
|
"useFontSpace",
|
||||||
|
"useKerning",
|
||||||
|
"symMark",
|
||||||
|
"borderFillIDRef",//50
|
||||||
|
"shape",
|
||||||
|
"offsetX",
|
||||||
|
"offsetY",
|
||||||
|
"autoTabLeft",
|
||||||
|
"autoTabRight",
|
||||||
|
"leader",
|
||||||
|
"start",
|
||||||
|
"level",
|
||||||
|
"align",
|
||||||
|
"useInstWidth", //60
|
||||||
|
"autoIndent",
|
||||||
|
"widthAdjust",
|
||||||
|
"textOffsetType",
|
||||||
|
"textOffset",
|
||||||
|
"numFormat",
|
||||||
|
"charPrIDRef",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"", //70
|
||||||
|
"tabPrIDRef",
|
||||||
|
"breakLatinWord",
|
||||||
|
"breakNonLatinWord",
|
||||||
|
"",
|
||||||
|
"widowOrphan",
|
||||||
|
"keepWithNext",
|
||||||
|
"",
|
||||||
|
"pageBreakBefore",
|
||||||
|
"",
|
||||||
|
"", //80
|
||||||
|
"LineWrap",
|
||||||
|
"eAsianEng",
|
||||||
|
"eAsianNum",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"", //90
|
||||||
|
"borderFillIDRef",
|
||||||
|
"offsetLeft",
|
||||||
|
"offsetRight",
|
||||||
|
"offsetTop",
|
||||||
|
"offsetBottom",
|
||||||
|
"connect",
|
||||||
|
"ignoreMargin",
|
||||||
|
"engName",
|
||||||
|
"nextStyleIDRef",
|
||||||
|
"langID", //100
|
||||||
|
""
|
||||||
|
"lockForm",
|
||||||
|
"name",
|
||||||
|
|
||||||
"pageBreak",
|
"pageBreak",
|
||||||
"columnBreak",
|
"columnBreak",
|
||||||
"charPrIDRef"
|
|
||||||
},
|
},
|
||||||
// HWPML
|
// HWPML
|
||||||
{
|
{
|
||||||
"ParaShape",
|
"ParaShape",
|
||||||
"Style",
|
"Style",
|
||||||
|
"CharShape",
|
||||||
|
"APath",
|
||||||
|
"RPath",
|
||||||
|
"Format",
|
||||||
|
"Type",
|
||||||
|
"Name",
|
||||||
|
"FamilyType",
|
||||||
|
"SerifStyle", //10
|
||||||
|
"Weight",
|
||||||
|
"Proportion",
|
||||||
|
"Contrast",
|
||||||
|
"StrokeVariation",
|
||||||
|
"ArmStyle",
|
||||||
|
"Letterform",
|
||||||
|
"Midline",
|
||||||
|
"XHeight",
|
||||||
|
"ThreeD",
|
||||||
|
"Shadow", //20
|
||||||
|
"Slash",
|
||||||
|
"BackSlash",
|
||||||
|
"CrookedSlash",
|
||||||
|
"CounterSlash",
|
||||||
|
"CounterBackSlash",
|
||||||
|
"BreakCellSeparateLine",
|
||||||
|
"Width",
|
||||||
|
"Color",
|
||||||
|
"FaceColor",
|
||||||
|
"HatchColor", //30
|
||||||
|
"HatchStyle",
|
||||||
|
"Alpha",
|
||||||
|
"Angle",
|
||||||
|
"CenterX",
|
||||||
|
"CenterY",
|
||||||
|
"Step",
|
||||||
|
"ColorNum",
|
||||||
|
"StepCenter",
|
||||||
|
"Value",
|
||||||
|
"Mode", //40
|
||||||
|
"Bright",
|
||||||
|
"Effect",
|
||||||
|
"BinItem",
|
||||||
|
"Height",
|
||||||
|
"TextColor",
|
||||||
|
"ShadeColor",
|
||||||
|
"UseFontSpace",
|
||||||
|
"UseKerning",
|
||||||
|
"SymMask",
|
||||||
|
"BorderFillId", //50
|
||||||
|
"Shape",
|
||||||
|
"OffsetX",
|
||||||
|
"OffsetY",
|
||||||
|
"AutoTabLeft",
|
||||||
|
"AutoTabRight",
|
||||||
|
"Leader",
|
||||||
|
"Start",
|
||||||
|
"Level",
|
||||||
|
"Aligment",
|
||||||
|
"UseInstWidth", //60
|
||||||
|
"AutoIndent",
|
||||||
|
"WidthAdjust",
|
||||||
|
"TextOffsetType",
|
||||||
|
"TextOffset",
|
||||||
|
"NumFormat",
|
||||||
|
"Char",
|
||||||
|
"Image",
|
||||||
|
"Align",
|
||||||
|
"VerAlign",
|
||||||
|
"HeadingType", //70
|
||||||
|
"TabDef",
|
||||||
|
"BreakLatinWord",
|
||||||
|
"BreakNonLatinWord",
|
||||||
|
"Condense",
|
||||||
|
"WidowOrphan",
|
||||||
|
"KeepWithNext",
|
||||||
|
"KeepLines",
|
||||||
|
"PageBreakBefore",
|
||||||
|
"FontLineHeight",
|
||||||
|
"SnapToGrid", //80
|
||||||
|
"LineWrap",
|
||||||
|
"AutoSpaceEAsianEng",
|
||||||
|
"AutoSpaceEAsianNum",
|
||||||
|
"Indent",
|
||||||
|
"Left",
|
||||||
|
"Right",
|
||||||
|
"Prev",
|
||||||
|
"Next",
|
||||||
|
"LineSpacingType",
|
||||||
|
"LineSpacing", //90
|
||||||
|
"BorderFill",
|
||||||
|
"OffsetLeft",
|
||||||
|
"OffsetRight",
|
||||||
|
"OffsetTop",
|
||||||
|
"OffsetBottom",
|
||||||
|
"Connect",
|
||||||
|
"IgnoreMargin",
|
||||||
|
"EngName",
|
||||||
|
"NextStyle",
|
||||||
|
"LangId", //100
|
||||||
"InstId",
|
"InstId",
|
||||||
|
"LockForm",
|
||||||
|
"Name",
|
||||||
|
|
||||||
"PageBreak",
|
"PageBreak",
|
||||||
"ColumnBreak",
|
"ColumnBreak"
|
||||||
"CharShape"
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
inline const char* GetArgumentName(EArgument eNode, EHanType eType)
|
inline const char* GetAttributeName(EAttribute eNode, EHanType eType)
|
||||||
{
|
{
|
||||||
switch (eType)
|
switch (eType)
|
||||||
{
|
{
|
||||||
case EHanType::HWPX: return ARGUMENT_NAMES[0][static_cast<int>(eNode)];
|
case EHanType::HWPX: return ATTRUBUTE_NAMES[0][static_cast<int>(eNode)];
|
||||||
case EHanType::HWPML: return ARGUMENT_NAMES[1][static_cast<int>(eNode)];
|
case EHanType::HWPML: return ATTRUBUTE_NAMES[1][static_cast<int>(eNode)];
|
||||||
default: return "";
|
default: return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAX_VALUES 40
|
||||||
|
|
||||||
|
// TODO:: пока всё в одном месте. Возможно стоит лучше разделить по соответствующим классам
|
||||||
|
enum class EValue
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Center,
|
||||||
|
CenterBelow,
|
||||||
|
CenterAbove,
|
||||||
|
All,
|
||||||
|
RealPic,
|
||||||
|
GrayScale,
|
||||||
|
BlackWhite,
|
||||||
|
Drop,
|
||||||
|
Continuous, //10
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
Percent,
|
||||||
|
HwpUnit,
|
||||||
|
Digit,
|
||||||
|
HangulSyllable,
|
||||||
|
HangulJamo,
|
||||||
|
CircledDigit,
|
||||||
|
LatinSmall,
|
||||||
|
CircledHangulSyllable, //20
|
||||||
|
CircledHangulJamo,
|
||||||
|
RomanSmall,
|
||||||
|
Para,
|
||||||
|
Char
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr const char* VALUE_NAMES[MAX_TYPES][MAX_VALUES] =
|
||||||
|
{
|
||||||
|
//HWPX
|
||||||
|
{
|
||||||
|
"NONE",
|
||||||
|
"CENTER",
|
||||||
|
"CENTER_BELOW",
|
||||||
|
"CENTER_ABOVE",
|
||||||
|
"ALL",
|
||||||
|
"REAL_PIC",
|
||||||
|
"GRAY_SCALE",
|
||||||
|
"BLACK_WHITE",
|
||||||
|
"DROP",
|
||||||
|
"CONTINUOUS", //10
|
||||||
|
"LEFT",
|
||||||
|
"RIGHT",
|
||||||
|
"PERCENT",
|
||||||
|
"HWPUNIT",
|
||||||
|
"DIGIT",
|
||||||
|
"HANGUL_SYLLABLE",
|
||||||
|
"HANGUL_JAMO",
|
||||||
|
"CIRCLED_DIGIT",
|
||||||
|
"LATIN_SMALL",
|
||||||
|
"CIRCLED_HANGUL_SYLLABLE", //20
|
||||||
|
"CIRCLED_HANGUL_JAMO",
|
||||||
|
"ROMAN_SMALL",
|
||||||
|
"PARA",
|
||||||
|
"CHAR"
|
||||||
|
},
|
||||||
|
//HWPML
|
||||||
|
{
|
||||||
|
"None",
|
||||||
|
"Center",
|
||||||
|
"CenterBelow",
|
||||||
|
"CenterAbove",
|
||||||
|
"All",
|
||||||
|
"RealPic",
|
||||||
|
"GrayScale",
|
||||||
|
"BlackWhite",
|
||||||
|
"Drop",
|
||||||
|
"Cont", //10
|
||||||
|
"Left",
|
||||||
|
"Right",
|
||||||
|
"Percent",
|
||||||
|
"HwpUnit",
|
||||||
|
"Digit",
|
||||||
|
"HangulSyllable",
|
||||||
|
"HangulJamo",
|
||||||
|
"CircledDigit",
|
||||||
|
"LatinSmall",
|
||||||
|
"CircledHangulSyllable", //20
|
||||||
|
"CircledHangulJamo",
|
||||||
|
"RomanSmall",
|
||||||
|
"Para",
|
||||||
|
"Char"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
inline const char* GetValueName(EValue eValue, EHanType eType)
|
||||||
|
{
|
||||||
|
switch (eType)
|
||||||
|
{
|
||||||
|
case EHanType::HWPX: return VALUE_NAMES[0][static_cast<int>(eValue)];
|
||||||
|
case EHanType::HWPML: return VALUE_NAMES[1][static_cast<int>(eValue)];
|
||||||
|
default: return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // NODENAMES_H
|
#endif // NODENAMES_H
|
||||||
|
|||||||
@ -218,6 +218,13 @@ const CHWPDocInfo* CWriterContext::GetDocInfo()
|
|||||||
|
|
||||||
return m_pHWPXFile->GetDocInfo();
|
return m_pHWPXFile->GetDocInfo();
|
||||||
}
|
}
|
||||||
|
case EHanType::HWPML:
|
||||||
|
{
|
||||||
|
if (nullptr == m_pHWPMLFile)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return m_pHWPMLFile->GetDocInfo();
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,12 +31,54 @@ bool CXMLReader::IsEmptyNode()
|
|||||||
|
|
||||||
bool CXMLReader::GetBool()
|
bool CXMLReader::GetBool()
|
||||||
{
|
{
|
||||||
return "1" == GetTextAValue(*this);
|
return "1" == GetTextAValue(*this) || "true" == GetTextAValue(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
int StringToInt(const std::string& sValue, const int& _default)
|
||||||
|
{
|
||||||
|
std::string::const_iterator itPos{sValue.cbegin()};
|
||||||
|
|
||||||
|
while (std::isspace(*itPos))
|
||||||
|
++itPos;
|
||||||
|
|
||||||
|
if (sValue.cend() == itPos)
|
||||||
|
return _default;
|
||||||
|
|
||||||
|
bool bNegative = false;
|
||||||
|
|
||||||
|
while ('-' == *itPos || '+' == *itPos)
|
||||||
|
{
|
||||||
|
if ('-' == *itPos)
|
||||||
|
bNegative = !bNegative;
|
||||||
|
|
||||||
|
++itPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sValue.cend() == itPos)
|
||||||
|
return _default;
|
||||||
|
|
||||||
|
int nResult = 0;
|
||||||
|
|
||||||
|
while (itPos != sValue.cend() && std::isdigit(*itPos))
|
||||||
|
{
|
||||||
|
nResult = nResult * 10 + (*itPos - '0');
|
||||||
|
++itPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bNegative ? -nResult : nResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CXMLReader::GetColor(const int& nDefault)
|
int CXMLReader::GetColor(const int& nDefault)
|
||||||
{
|
{
|
||||||
return ConvertHexToInt(GetTextAValue(*this), nDefault);
|
const std::string sValue{GetTextAValue(*this)};
|
||||||
|
|
||||||
|
if (sValue.empty())
|
||||||
|
return nDefault;
|
||||||
|
|
||||||
|
if ('#' == sValue[0])
|
||||||
|
return ConvertHexToInt(sValue, nDefault);
|
||||||
|
|
||||||
|
return StringToInt(sValue, nDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CXMLReader::GetInt()
|
int CXMLReader::GetInt()
|
||||||
@ -300,24 +342,24 @@ int ConvertWidthToHWP(const std::string& sValue)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ConvertHexToInt(const std::string& wsValue, const int& _default)
|
int ConvertHexToInt(const std::string& sValue, const int& _default)
|
||||||
{
|
{
|
||||||
if (wsValue.empty() || "none" == wsValue)
|
if (sValue.empty() || "none" == sValue)
|
||||||
return _default;
|
return _default;
|
||||||
|
|
||||||
std::string::const_iterator itStart = wsValue.cbegin();
|
std::string::const_iterator itStart = sValue.cbegin();
|
||||||
|
|
||||||
if ('#' == *itStart)
|
if ('#' == *itStart)
|
||||||
++itStart;
|
++itStart;
|
||||||
|
|
||||||
if (wsValue.cend() - itStart < 6)
|
if (sValue.cend() - itStart != 6)
|
||||||
return _default;
|
return _default;
|
||||||
|
|
||||||
itStart = wsValue.cend() - 6;
|
itStart = sValue.cend() - 6;
|
||||||
|
|
||||||
int nResult = 0;
|
int nResult = 0;
|
||||||
|
|
||||||
while (itStart != wsValue.cend())
|
while (itStart != sValue.cend())
|
||||||
{
|
{
|
||||||
if ('0' <= *itStart && *itStart <= '9')
|
if ('0' <= *itStart && *itStart <= '9')
|
||||||
nResult = (nResult << 4) | (*itStart++ - '0');
|
nResult = (nResult << 4) | (*itStart++ - '0');
|
||||||
|
|||||||
@ -12,6 +12,8 @@
|
|||||||
#include "HWPElements/HWPRecordStyle.h"
|
#include "HWPElements/HWPRecordStyle.h"
|
||||||
#include "HWPElements/HwpRecordTabDef.h"
|
#include "HWPElements/HwpRecordTabDef.h"
|
||||||
|
|
||||||
|
#include "Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
ECompatDoc GetCompatDoc(int nValue)
|
ECompatDoc GetCompatDoc(int nValue)
|
||||||
@ -38,6 +40,10 @@ CHWPDocInfo::CHWPDocInfo(CHWPFile* pHWPFile)
|
|||||||
: m_eHanType(EHanType::HWP), m_pParentHWP(pHWPFile), m_eCompatibleDoc(ECompatDoc::HWP)
|
: m_eHanType(EHanType::HWP), m_pParentHWP(pHWPFile), m_eCompatibleDoc(ECompatDoc::HWP)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
CHWPDocInfo::CHWPDocInfo(CHWPMLFile* pHWPMLFile)
|
||||||
|
: m_eHanType(EHanType::HWPML), m_pParentHWPML(pHWPMLFile), m_eCompatibleDoc(ECompatDoc::UNKNOWN)
|
||||||
|
{}
|
||||||
|
|
||||||
CHWPDocInfo::~CHWPDocInfo()
|
CHWPDocInfo::~CHWPDocInfo()
|
||||||
{
|
{
|
||||||
#define REMOVE_LIST_DATA(array) \
|
#define REMOVE_LIST_DATA(array) \
|
||||||
@ -196,58 +202,26 @@ bool CHWPDocInfo::Parse(CXMLReader& oReader, int nVersion)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHWPDocInfo::ReadRefList(CXMLReader& oReader, int nVersion)
|
bool CHWPDocInfo::Parse(CXMLReader &oReader)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hh:fontfaces" == sNodeName)
|
if ("MAPPINGTABLE" == sNodeName)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, FontFace, "hh:fontface")
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_AND_NAME(oReader, Mapping)
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Font, "hh:font")
|
{
|
||||||
m_arFaseNames.push_back(new CHWPRecordFaceName(*this, oReader, nVersion));
|
if ("BINDATALIST" == sNodeMappingName)
|
||||||
END_WHILE
|
{
|
||||||
END_WHILE
|
CHWPRecordBinData *pRecordBinData = nullptr;
|
||||||
}
|
|
||||||
else if ("hh:borderFills" == sNodeName)
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, BinData, "BINITEM")
|
||||||
{
|
pRecordBinData = new CHWPRecordBinData(oReader, 0, EHanType::HWPML);
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, BorderFill, "hh:borderFill")
|
m_mBinDatas.insert(std::make_pair<HWP_STRING, CHWPRecord*>(pRecordBinData->GetItemID(), (HWP::CHWPRecord*)pRecordBinData));
|
||||||
m_arBorderFills.push_back(new CHWPRecordBorderFill(*this, oReader, nVersion));
|
END_WHILE
|
||||||
END_WHILE
|
}
|
||||||
}
|
else
|
||||||
else if ("hh:charProperties" == sNodeName)
|
ReadRefListElement(oReader, 0, EHanType::HWPML);
|
||||||
{
|
}
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, CharPr, "hh:charPr")
|
|
||||||
m_arCharShapes.push_back(new CHWPRecordCharShape(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
|
||||||
}
|
|
||||||
else if ("hh:tabProperties" == sNodeName)
|
|
||||||
{
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, TabPr, "hh:tabPr")
|
|
||||||
m_arTabDefs.push_back(new CHwpRecordTabDef(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
|
||||||
}
|
|
||||||
else if ("hh:numberings" == sNodeName)
|
|
||||||
{
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Numbering, "hh:numbering")
|
|
||||||
m_arNumberings.push_back(new CHWPRecordNumbering(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
|
||||||
}
|
|
||||||
else if ("hh:bullets" == sNodeName)
|
|
||||||
{
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH(oReader, Bullet)
|
|
||||||
m_arBullets.push_back(new CHWPRecordBullet(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
|
||||||
}
|
|
||||||
else if ("hh:paraProperties" == sNodeName)
|
|
||||||
{
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, ParaPr, "hh:paraPr")
|
|
||||||
m_arParaShapes.push_back(new CHWPRecordParaShape(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
|
||||||
}
|
|
||||||
else if ("hh:styles" == sNodeName)
|
|
||||||
{
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Style, "hh:style")
|
|
||||||
m_arStyles.push_back(new CHWPRecordStyle(*this, oReader, nVersion));
|
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,6 +230,73 @@ bool CHWPDocInfo::ReadRefList(CXMLReader& oReader, int nVersion)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CHWPDocInfo::ReadRefList(CXMLReader& oReader, int nVersion)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE(oReader)
|
||||||
|
ReadRefListElement(oReader, nVersion, EHanType::HWPX);
|
||||||
|
END_WHILE
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CHWPDocInfo::ReadRefListElement(CXMLReader &oReader, int nVersion, HWP::EHanType eType)
|
||||||
|
{
|
||||||
|
const std::string sNodeName{oReader.GetName()};
|
||||||
|
|
||||||
|
if (GetNodeName(ENode::FaceNameList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, FontFace, GetNodeName(ENode::FontFace, eType))
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Font, GetNodeName(ENode::Font, eType))
|
||||||
|
m_arFaseNames.push_back(new CHWPRecordFaceName(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::BorderFillList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, BorderFill, GetNodeName(ENode::BorderFill, eType))
|
||||||
|
m_arBorderFills.push_back(new CHWPRecordBorderFill(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::CharShapeList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, CharPr, GetNodeName(ENode::CharShape, eType))
|
||||||
|
m_arCharShapes.push_back(new CHWPRecordCharShape(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::TabDefList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, TabPr, GetNodeName(ENode::TabDef, eType))
|
||||||
|
m_arTabDefs.push_back(new CHwpRecordTabDef(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::NumberingList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Numbering, GetNodeName(ENode::Numbering, eType))
|
||||||
|
m_arNumberings.push_back(new CHWPRecordNumbering(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::BulletList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH(oReader, Bullet)
|
||||||
|
m_arBullets.push_back(new CHWPRecordBullet(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::ParaShapeList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, ParaPr, GetNodeName(ENode::ParaShape, eType))
|
||||||
|
m_arParaShapes.push_back(new CHWPRecordParaShape(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
else if (GetNodeName(ENode::StyleList, eType) == sNodeName)
|
||||||
|
{
|
||||||
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Style, GetNodeName(ENode::Style, eType))
|
||||||
|
m_arStyles.push_back(new CHWPRecordStyle(*this, oReader, nVersion, eType));
|
||||||
|
END_WHILE
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool CHWPDocInfo::ReadContentHpf(CXMLReader& oReader, int nVersion)
|
bool CHWPDocInfo::ReadContentHpf(CXMLReader& oReader, int nVersion)
|
||||||
{
|
{
|
||||||
CHWPRecordBinData *pRecordBinData = nullptr;
|
CHWPRecordBinData *pRecordBinData = nullptr;
|
||||||
@ -264,7 +305,7 @@ bool CHWPDocInfo::ReadContentHpf(CXMLReader& oReader, int nVersion)
|
|||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Item, "opf:item")
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Item, "opf:item")
|
||||||
{
|
{
|
||||||
pRecordBinData = new CHWPRecordBinData(oReader, nVersion);
|
pRecordBinData = new CHWPRecordBinData(oReader, nVersion, EHanType::HWPX);
|
||||||
m_mBinDatas.insert(std::make_pair<HWP_STRING, CHWPRecord*>(pRecordBinData->GetItemID(), (HWP::CHWPRecord*)pRecordBinData));
|
m_mBinDatas.insert(std::make_pair<HWP_STRING, CHWPRecord*>(pRecordBinData->GetItemID(), (HWP::CHWPRecord*)pRecordBinData));
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|||||||
@ -20,11 +20,13 @@ enum class ECompatDoc
|
|||||||
|
|
||||||
class CHWPFile;
|
class CHWPFile;
|
||||||
class CHWPXFile;
|
class CHWPXFile;
|
||||||
|
class CHWPMLFile;
|
||||||
class CHWPDocInfo
|
class CHWPDocInfo
|
||||||
{
|
{
|
||||||
EHanType m_eHanType;
|
EHanType m_eHanType;
|
||||||
CHWPXFile *m_pParentHWPX;
|
CHWPXFile *m_pParentHWPX;
|
||||||
CHWPFile *m_pParentHWP;
|
CHWPFile *m_pParentHWP;
|
||||||
|
CHWPMLFile *m_pParentHWPML;
|
||||||
VECTOR<CHWPRecord*> m_arRecords;
|
VECTOR<CHWPRecord*> m_arRecords;
|
||||||
|
|
||||||
std::map<HWP_STRING, CHWPRecord*> m_mBinDatas;
|
std::map<HWP_STRING, CHWPRecord*> m_mBinDatas;
|
||||||
@ -42,11 +44,13 @@ public:
|
|||||||
CHWPDocInfo(EHanType eHanType);
|
CHWPDocInfo(EHanType eHanType);
|
||||||
CHWPDocInfo(CHWPXFile* pHWPXFile);
|
CHWPDocInfo(CHWPXFile* pHWPXFile);
|
||||||
CHWPDocInfo(CHWPFile* pHWPFile);
|
CHWPDocInfo(CHWPFile* pHWPFile);
|
||||||
|
CHWPDocInfo(CHWPMLFile* pHWPMLFile);
|
||||||
|
|
||||||
~CHWPDocInfo();
|
~CHWPDocInfo();
|
||||||
|
|
||||||
bool Parse(CHWPStream& oBuffer, int nVersion);
|
bool Parse(CHWPStream& oBuffer, int nVersion);
|
||||||
bool Parse(CXMLReader& oReader, int nVersion);
|
bool Parse(CXMLReader& oReader, int nVersion);
|
||||||
|
bool Parse(CXMLReader& oReader);
|
||||||
bool ReadContentHpf(CXMLReader& oReader, int nVersion);
|
bool ReadContentHpf(CXMLReader& oReader, int nVersion);
|
||||||
|
|
||||||
const CHWPRecord* GetRecord(int nIndex) const;
|
const CHWPRecord* GetRecord(int nIndex) const;
|
||||||
@ -66,6 +70,7 @@ public:
|
|||||||
ECompatDoc GetCompatibleDoc() const;
|
ECompatDoc GetCompatibleDoc() const;
|
||||||
private:
|
private:
|
||||||
bool ReadRefList(CXMLReader& oReader, int nVersion);
|
bool ReadRefList(CXMLReader& oReader, int nVersion);
|
||||||
|
bool ReadRefListElement(CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
#include "HWPRecordBinData.h"
|
#include "HWPRecordBinData.h"
|
||||||
|
|
||||||
#include "../HWPFile.h"
|
#include "../HWPFile.h"
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
@ -28,7 +29,6 @@ EType GetType(int nValue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EState GetState(int nValue)
|
EState GetState(int nValue)
|
||||||
{
|
{
|
||||||
SWITCH(EState, nValue)
|
SWITCH(EState, nValue)
|
||||||
@ -74,23 +74,40 @@ CHWPRecordBinData::CHWPRecordBinData(CHWPDocInfo& oDocInfo, int nTagNum, int nLe
|
|||||||
oBuffer.Skip(nSize - oBuffer.GetDistanceToLastPos(true));
|
oBuffer.Skip(nSize - oBuffer.GetDistanceToLastPos(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordBinData::CHWPRecordBinData(CXMLReader& oReader, int nVersion)
|
CHWPRecordBinData::CHWPRecordBinData(CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_BIN_DATA, 0, 0)
|
: CHWPRecord(EHWPTag::HWPTAG_BIN_DATA, 0, 0)
|
||||||
{
|
{
|
||||||
std::string sType;
|
|
||||||
HWP_STRING sSubPath;
|
HWP_STRING sSubPath;
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("id" == sAttributeName)
|
if ("id" == sAttributeName)
|
||||||
m_sItemID = oReader.GetText();
|
m_sItemID = oReader.GetText();
|
||||||
else if ("isEmbeded" == sAttributeName)
|
else if (EHanType::HWPX == eType && "isEmbeded" == sAttributeName)
|
||||||
sType = oReader.GetTextA();
|
{
|
||||||
else if ("href" == sAttributeName)
|
const std::string sType = oReader.GetTextA();
|
||||||
|
|
||||||
|
if ("0" == sType)
|
||||||
|
m_eType = EType::LINK;
|
||||||
|
else if ("1" == sType)
|
||||||
|
m_eType = EType::EMBEDDING;
|
||||||
|
}
|
||||||
|
else if (EHanType::HWPML == eType && "Type" == sAttributeName)
|
||||||
|
{
|
||||||
|
const std::string sType = oReader.GetTextA();
|
||||||
|
|
||||||
|
if ("Link" == sType)
|
||||||
|
m_eType = EType::LINK;
|
||||||
|
else if ("Embedding" == sType)
|
||||||
|
m_eType = EType::EMBEDDING;
|
||||||
|
else if ("Storage" == sType)
|
||||||
|
m_eType = EType::STORAGE;
|
||||||
|
}
|
||||||
|
else if (GetAttributeName(EAttribute::Href, eType) == sAttributeName)
|
||||||
m_sAPath = oReader.GetText();
|
m_sAPath = oReader.GetText();
|
||||||
else if ("sub-path" == sAttributeName)
|
else if (GetAttributeName(EAttribute::SubPath, eType) == sAttributeName)
|
||||||
sSubPath = oReader.GetText();
|
sSubPath = oReader.GetText();
|
||||||
else if ("media-type" == sAttributeName)
|
else if (GetAttributeName(EAttribute::MediaType, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
m_sFormat = oReader.GetText();
|
m_sFormat = oReader.GetText();
|
||||||
|
|
||||||
@ -100,15 +117,10 @@ CHWPRecordBinData::CHWPRecordBinData(CXMLReader& oReader, int nVersion)
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
if ("0" == sType)
|
if (EType::LINK != m_eType || sSubPath.empty())
|
||||||
{
|
return;
|
||||||
m_eType = EType::LINK;
|
|
||||||
|
m_sAPath = sSubPath;
|
||||||
if (!sSubPath.empty())
|
|
||||||
m_sAPath = sSubPath;
|
|
||||||
}
|
|
||||||
else if ("1" == sType)
|
|
||||||
m_eType = EType::EMBEDDING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HWP_STRING CHWPRecordBinData::GetPath() const
|
HWP_STRING CHWPRecordBinData::GetPath() const
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class CHWPRecordBinData : public CHWPRecord
|
|||||||
HWP_STRING m_sItemID;
|
HWP_STRING m_sItemID;
|
||||||
public:
|
public:
|
||||||
CHWPRecordBinData(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordBinData(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordBinData(CXMLReader& oReader, int nVersion);
|
CHWPRecordBinData(CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
HWP_STRING GetPath() const;
|
HWP_STRING GetPath() const;
|
||||||
HWP_STRING GetItemID() const;
|
HWP_STRING GetItemID() const;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "HWPRecordBorderFill.h"
|
#include "HWPRecordBorderFill.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
EImageFillType GetImageFillType(int nType)
|
EImageFillType GetImageFillType(int nType)
|
||||||
@ -58,15 +60,15 @@ EColorFillPattern GetColorFillPattern(int nPattern)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TBorder::Read(CXMLReader& oReader)
|
void TBorder::Read(CXMLReader& oReader, EHanType eType)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
m_eStyle = GetLineStyle2(oReader.GetText());
|
m_eStyle = GetLineStyle2(oReader.GetText());
|
||||||
else if ("color" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Color, eType) == sAttributeName)
|
||||||
m_nColor = oReader.GetInt();
|
m_nColor = oReader.GetInt();
|
||||||
else if ("width" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Width, eType) == sAttributeName)
|
||||||
m_chWidth = (HWP_BYTE)ConvertWidthToHWP(oReader.GetTextA());
|
m_chWidth = (HWP_BYTE)ConvertWidthToHWP(oReader.GetTextA());
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
@ -154,112 +156,112 @@ CFill::CFill(CHWPStream& oBuffer, int nOff, int nSize)
|
|||||||
m_nSize = oBuffer.GetDistanceToLastPos(true);
|
m_nSize = oBuffer.GetDistanceToLastPos(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
CFill::CFill(CXMLReader& oReader)
|
CFill::CFill(CXMLReader& oReader, EHanType eType)
|
||||||
: m_nFillType(0), m_eHatchStyle(EColorFillPattern::NONE), m_eMode(EImageFillType::NONE), m_chAlpha(0xff)
|
: m_nFillType(0), m_eHatchStyle(EColorFillPattern::NONE), m_eMode(EImageFillType::NONE), m_chAlpha(0xff)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hc:winBrush" == sNodeName)
|
if (GetNodeName(ENode::WindowBrush, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
ReadWinBrush(oReader);
|
ReadWinBrush(oReader, eType);
|
||||||
m_nFillType |= 0x01;
|
m_nFillType |= 0x01;
|
||||||
}
|
}
|
||||||
else if ("hc:gradation" == sNodeName)
|
else if (GetNodeName(ENode::Gradation, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
ReadGradation(oReader);
|
ReadGradation(oReader, eType);
|
||||||
m_nFillType |= 0x04;
|
m_nFillType |= 0x04;
|
||||||
}
|
}
|
||||||
else if ("hc:imgBrush" == sNodeName)
|
else if (GetNodeName(ENode::ImageBrush, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
ReadImgBrush(oReader);
|
ReadImgBrush(oReader, eType);
|
||||||
m_nFillType |= 0x02;
|
m_nFillType |= 0x02;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFill::ReadWinBrush(CXMLReader& oReader)
|
void CFill::ReadWinBrush(CXMLReader& oReader, EHanType eType)
|
||||||
{
|
{
|
||||||
m_eHatchStyle = EColorFillPattern::NONE;
|
m_eHatchStyle = EColorFillPattern::NONE;
|
||||||
m_chAlpha = 0xff;
|
m_chAlpha = 0xff;
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("faceColor" == sAttributeName)
|
if (GetAttributeName(EAttribute::FaceColor, eType) == sAttributeName)
|
||||||
m_nFaceColor = oReader.GetColor(0xFFFFFFFF);
|
m_nFaceColor = oReader.GetColor(0xFFFFFFFF);
|
||||||
else if ("hatchColor" == sAttributeName)
|
else if (GetAttributeName(EAttribute::HatchColor, eType) == sAttributeName)
|
||||||
m_nHatchColor = oReader.GetColor();
|
m_nHatchColor = oReader.GetColor();
|
||||||
else if ("hatchStyle" == sAttributeName)
|
else if (GetAttributeName(EAttribute::HatchStyle, eType) == sAttributeName)
|
||||||
m_eHatchStyle = GetColorFillPattern(oReader.GetInt());
|
m_eHatchStyle = GetColorFillPattern(oReader.GetInt());
|
||||||
else if ("alpha" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Alpha, eType) == sAttributeName)
|
||||||
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFill::ReadGradation(CXMLReader& oReader)
|
void CFill::ReadGradation(CXMLReader& oReader, EHanType eType)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
m_eGradType = ::HWP::GetGradFillType(oReader.GetInt());
|
m_eGradType = ::HWP::GetGradFillType(oReader.GetInt());
|
||||||
else if ("angle" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Angle, eType) == sAttributeName)
|
||||||
m_nAngle = oReader.GetInt();
|
m_nAngle = oReader.GetInt();
|
||||||
else if ("centerX" == sAttributeName)
|
else if (GetAttributeName(EAttribute::CenterX, eType) == sAttributeName)
|
||||||
m_nCenterX = oReader.GetInt();
|
m_nCenterX = oReader.GetInt();
|
||||||
else if ("centerY" == sAttributeName)
|
else if (GetAttributeName(EAttribute::CenterY, eType) == sAttributeName)
|
||||||
m_nCenterY = oReader.GetInt();
|
m_nCenterY = oReader.GetInt();
|
||||||
else if ("step" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Step, eType) == sAttributeName)
|
||||||
m_nStep = oReader.GetInt();
|
m_nStep = oReader.GetInt();
|
||||||
else if ("colorNum" == sAttributeName)
|
else if (GetAttributeName(EAttribute::ColorNum, eType) == sAttributeName)
|
||||||
m_nColorNum = oReader.GetInt();
|
m_nColorNum = oReader.GetInt();
|
||||||
else if ("stepCenter" == sAttributeName)
|
else if (GetAttributeName(EAttribute::StepCenter, eType) == sAttributeName)
|
||||||
m_chStepCenter = (HWP_BYTE)oReader.GetInt();
|
m_chStepCenter = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("alpha" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Alpha, eType) == sAttributeName)
|
||||||
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, "hc:color")
|
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, GetNodeName(ENode::Color, eType))
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("value" != oReader.GetName())
|
if (GetAttributeName(EAttribute::Value, eType) != sAttributeName)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
m_arColors.push_back(oReader.GetColor(true));
|
m_arColors.push_back(oReader.GetColor());
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFill::ReadImgBrush(CXMLReader& oReader)
|
void CFill::ReadImgBrush(CXMLReader& oReader, EHanType eType)
|
||||||
{
|
{
|
||||||
m_eMode = GetImageFillType(oReader.GetAttributeInt("mode"));
|
m_eMode = GetImageFillType(oReader.GetAttributeInt(GetAttributeName(EAttribute::Mode, eType)));
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, "hc:img")
|
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, GetNodeName(ENode::Image, eType))
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("bright" == sAttributeName)
|
if (GetAttributeName(EAttribute::Bright, eType) == sAttributeName)
|
||||||
m_chBright = (HWP_BYTE)oReader.GetInt();
|
m_chBright = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("contrast" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Contrast, eType) == sAttributeName)
|
||||||
m_chContrast = (HWP_BYTE)oReader.GetInt();
|
m_chContrast = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("effect" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Effect, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sEffect{oReader.GetTextA()};
|
const std::string sEffect{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("REAL_PIC" == sEffect)
|
if (GetValueName(EValue::RealPic, eType))
|
||||||
m_chEffect = 0;
|
m_chEffect = 0;
|
||||||
else if ("GRAY_SCALE" == sEffect)
|
else if (GetValueName(EValue::GrayScale, eType))
|
||||||
m_chEffect = 1;
|
m_chEffect = 1;
|
||||||
else if ("BLACK_WHITE" == sEffect)
|
else if (GetValueName(EValue::BlackWhite, eType))
|
||||||
m_chEffect = 2;
|
m_chEffect = 2;
|
||||||
}
|
}
|
||||||
else if ("binaryItemIDRef" == sAttributeName)
|
else if (GetAttributeName(EAttribute::BinItem, eType))
|
||||||
m_sBinItemID = oReader.GetText();
|
m_sBinItemID = oReader.GetText();
|
||||||
else if ("alpha" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Alpha, eType) == sAttributeName)
|
||||||
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
m_chAlpha = (HWP_BYTE)oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
@ -375,39 +377,51 @@ CHWPRecordBorderFill::CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, int nTagNum, i
|
|||||||
m_pFill = new CFill(oBuffer, 0, 0); // TODO:: перейти от использования off и size
|
m_pFill = new CFill(oBuffer, 0, 0); // TODO:: перейти от использования off и size
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordBorderFill::CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordBorderFill::CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_BORDER_FILL, 0, 0), m_pFill(nullptr)
|
: CHWPRecord(EHWPTag::HWPTAG_BORDER_FILL, 0, 0), m_pFill(nullptr)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("threeD" == sAttributeName)
|
if (GetAttributeName(EAttribute::ThreeD, eType) == sAttributeName)
|
||||||
m_bThreeD = oReader.GetBool();
|
m_bThreeD = oReader.GetBool();
|
||||||
else if ("shadow" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Shadow, eType) == sAttributeName)
|
||||||
m_bShadow = oReader.GetBool();
|
m_bShadow = oReader.GetBool();
|
||||||
else if ("breakCellSeparateLine" == sAttributeName)
|
else if (GetAttributeName(EAttribute::BreakCellSeparateLine, eType) == sAttributeName)
|
||||||
m_bBreakCellSeparateLine = oReader.GetBool();
|
m_bBreakCellSeparateLine = oReader.GetBool();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hh:slash" == sNodeName)
|
if (GetNodeName(ENode::LeftBorder, eType) == sNodeName)
|
||||||
|
m_oLeft.Read(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::RightBorder, eType) == sNodeName)
|
||||||
|
m_oRight.Read(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::TopBorder, eType) == sNodeName)
|
||||||
|
m_oTop.Read(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::BottomBorder, eType) == sNodeName)
|
||||||
|
m_oBottom.Read(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::Diagonal, eType) == sNodeName)
|
||||||
|
m_oDiagonal.Read(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::FillBrush, eType) == sNodeName)
|
||||||
|
m_pFill = new CFill(oReader, eType);
|
||||||
|
else if (GetNodeName(ENode::Slash, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("NONE" == sType)
|
if (GetValueName(EValue::None, eType) == sType)
|
||||||
m_chSlash = 0x0;
|
m_chSlash = 0x0;
|
||||||
else if ("CENTER" == sType)
|
else if (GetValueName(EValue::Center, eType) == sType)
|
||||||
m_chSlash = 0b010;
|
m_chSlash = 0b010;
|
||||||
else if ("CENTER_BELOW" == sType)
|
else if (GetValueName(EValue::CenterBelow, eType) == sType)
|
||||||
m_chSlash = 0b011;
|
m_chSlash = 0b011;
|
||||||
else if ("CENTER_ABOVE" == sType)
|
else if (GetValueName(EValue::CenterAbove, eType) == sType)
|
||||||
m_chSlash = 0b110;
|
m_chSlash = 0b110;
|
||||||
else if ("ALL" == sType)
|
else if (GetValueName(EValue::All, eType) == sType)
|
||||||
m_chSlash = 0b111;
|
m_chSlash = 0b111;
|
||||||
}
|
}
|
||||||
else if ("Crooked" == sAttributeName)
|
else if ("Crooked" == sAttributeName)
|
||||||
@ -417,23 +431,23 @@ CHWPRecordBorderFill::CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oR
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:backSlash" == sNodeName)
|
else if (GetNodeName(ENode::BackSlash, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("NONE" == sType)
|
if (GetValueName(EValue::None, eType) == sType)
|
||||||
m_chBackSlash = 0x0;
|
m_chBackSlash = 0x0;
|
||||||
else if ("CENTER" == sType)
|
else if (GetValueName(EValue::Center, eType) == sType)
|
||||||
m_chBackSlash = 0b010;
|
m_chBackSlash = 0b010;
|
||||||
else if ("CENTER_BELOW" == sType)
|
else if (GetValueName(EValue::CenterBelow, eType) == sType)
|
||||||
m_chBackSlash = 0b011;
|
m_chBackSlash = 0b011;
|
||||||
else if ("CENTER_ABOVE" == sType)
|
else if (GetValueName(EValue::CenterAbove, eType) == sType)
|
||||||
m_chBackSlash = 0b110;
|
m_chBackSlash = 0b110;
|
||||||
else if ("ALL" == sType)
|
else if (GetValueName(EValue::All, eType) == sType)
|
||||||
m_chBackSlash = 0b111;
|
m_chBackSlash = 0b111;
|
||||||
}
|
}
|
||||||
else if ("Crooked" == sAttributeName)
|
else if ("Crooked" == sAttributeName)
|
||||||
@ -443,18 +457,6 @@ CHWPRecordBorderFill::CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oR
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:leftBorder" == sNodeName)
|
|
||||||
m_oLeft.Read(oReader);
|
|
||||||
else if ("hh:rightBorder" == sNodeName)
|
|
||||||
m_oRight.Read(oReader);
|
|
||||||
else if ("hh:topBorder" == sNodeName)
|
|
||||||
m_oTop.Read(oReader);
|
|
||||||
else if ("hh:bottomBorder" == sNodeName)
|
|
||||||
m_oBottom.Read(oReader);
|
|
||||||
else if ("hh:diagonal" == sNodeName)
|
|
||||||
m_oDiagonal.Read(oReader);
|
|
||||||
else if ("hc:fillBrush" == sNodeName)
|
|
||||||
m_pFill = new CFill(oReader);
|
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ struct TBorder
|
|||||||
HWP_BYTE m_chWidth;
|
HWP_BYTE m_chWidth;
|
||||||
int m_nColor;
|
int m_nColor;
|
||||||
|
|
||||||
void Read(CXMLReader& oReader);
|
void Read(CXMLReader& oReader, EHanType eType);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class EImageFillType
|
enum class EImageFillType
|
||||||
@ -86,13 +86,13 @@ class CFill : public IRef
|
|||||||
|
|
||||||
HWP_BYTE m_chAlpha;
|
HWP_BYTE m_chAlpha;
|
||||||
|
|
||||||
void ReadWinBrush(CXMLReader& oReader);
|
void ReadWinBrush(CXMLReader& oReader, EHanType eType);
|
||||||
void ReadGradation(CXMLReader& oReader);
|
void ReadGradation(CXMLReader& oReader, EHanType eType);
|
||||||
void ReadImgBrush(CXMLReader& oReader);
|
void ReadImgBrush(CXMLReader& oReader, EHanType eType);
|
||||||
public:
|
public:
|
||||||
CFill();
|
CFill();
|
||||||
CFill(CHWPStream& oBuffer, int nOff, int nSize);
|
CFill(CHWPStream& oBuffer, int nOff, int nSize);
|
||||||
CFill(CXMLReader& oReader);
|
CFill(CXMLReader& oReader, EHanType eType);
|
||||||
|
|
||||||
int GetSize() const;
|
int GetSize() const;
|
||||||
bool NoneFill() const;
|
bool NoneFill() const;
|
||||||
@ -136,7 +136,7 @@ class CHWPRecordBorderFill : public CHWPRecord
|
|||||||
public:
|
public:
|
||||||
CHWPRecordBorderFill(int nTagNum, int nLevel, int nSize);
|
CHWPRecordBorderFill(int nTagNum, int nLevel, int nSize);
|
||||||
CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordBorderFill(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
~CHWPRecordBorderFill();
|
~CHWPRecordBorderFill();
|
||||||
|
|
||||||
TBorder GetLeftBorder() const;
|
TBorder GetLeftBorder() const;
|
||||||
|
|||||||
@ -45,9 +45,12 @@ CHWPRecordBullet::CHWPRecordBullet(CHWPDocInfo& oDocInfo, int nTagNum, int nLeve
|
|||||||
oBuffer.ReadChar(m_chCheckBulletChar);
|
oBuffer.ReadChar(m_chCheckBulletChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordBullet::CHWPRecordBullet(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordBullet::CHWPRecordBullet(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_BULLET, 0, 0), m_pParent(&oDocInfo)
|
: CHWPRecord(EHWPTag::HWPTAG_BULLET, 0, 0), m_pParent(&oDocInfo)
|
||||||
{
|
{
|
||||||
|
if (EHanType::HWPML == eType)
|
||||||
|
return; // TODO:: реализовать как встретится пример
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("char" == sAttributeName)
|
if ("char" == sAttributeName)
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class CHWPRecordBullet : public CHWPRecord
|
|||||||
HWP_CHAR m_chCheckBulletChar;
|
HWP_CHAR m_chCheckBulletChar;
|
||||||
public:
|
public:
|
||||||
CHWPRecordBullet(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordBullet(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordBullet(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordBullet(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
#include "HWPRecordCharShape.h"
|
#include "HWPRecordCharShape.h"
|
||||||
#include "../HWPElements/HWPRecordFaceName.h"
|
#include "../HWPElements/HWPRecordFaceName.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
EAccent GetAccent(int nValue)
|
EAccent GetAccent(int nValue)
|
||||||
@ -114,6 +116,8 @@ void CHWPRecordCharShape::ReadContainerData(CXMLReader& oReader, short arValues[
|
|||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
|
TO_LOWER(sAttributeName);
|
||||||
|
|
||||||
if ("hangul" == sAttributeName)
|
if ("hangul" == sAttributeName)
|
||||||
arValues[(int)ELang::HANGUL] = oReader.GetInt();
|
arValues[(int)ELang::HANGUL] = oReader.GetInt();
|
||||||
else if ("latin" == sAttributeName)
|
else if ("latin" == sAttributeName)
|
||||||
@ -208,7 +212,7 @@ CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, int nTagNum, int
|
|||||||
oBuffer.RemoveLastSavedPos();
|
oBuffer.RemoveLastSavedPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_HWP_CHAR_SHAPE, 0, 0), m_pParent(&oDocInfo),
|
: CHWPRecord(EHWPTag::HWPTAG_HWP_CHAR_SHAPE, 0, 0), m_pParent(&oDocInfo),
|
||||||
m_nHeight(1000), m_bItalic(false), m_bBold(false), m_eUnderline(EUnderline::NONE),
|
m_nHeight(1000), m_bItalic(false), m_bBold(false), m_eUnderline(EUnderline::NONE),
|
||||||
m_eUnderLineShape(ELineStyle1::SOLID), m_eOutline(EOutline::NONE), m_eShadow(EShadow::NONE), m_bEmboss(false), m_bEngrave(false),
|
m_eUnderLineShape(ELineStyle1::SOLID), m_eOutline(EOutline::NONE), m_eShadow(EShadow::NONE), m_bEmboss(false), m_bEngrave(false),
|
||||||
@ -216,26 +220,26 @@ CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oRea
|
|||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("height" == sAttributeName)
|
if (GetAttributeName(EAttribute::Height, eType) == sAttributeName)
|
||||||
m_nHeight = oReader.GetInt();
|
m_nHeight = oReader.GetInt();
|
||||||
else if ("textColor" == sAttributeName)
|
else if (GetAttributeName(EAttribute::TextColor, eType)== sAttributeName)
|
||||||
m_nTextColor = oReader.GetColor();
|
m_nTextColor = oReader.GetColor();
|
||||||
else if ("shadeColor" == sAttributeName)
|
else if (GetAttributeName(EAttribute::ShadeColor, eType) == sAttributeName)
|
||||||
m_nShadeColor = oReader.GetColor(0xFFFFFFFF);
|
m_nShadeColor = oReader.GetColor(0xFFFFFFFF);
|
||||||
else if ("useFontSpace" == sAttributeName)
|
else if (GetAttributeName(EAttribute::UseFontSpace, eType) == sAttributeName)
|
||||||
m_bUseFontSpace = oReader.GetBool();
|
m_bUseFontSpace = oReader.GetBool();
|
||||||
else if ("useKerning" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Height, eType) == sAttributeName)
|
||||||
m_bUseKerning = oReader.GetBool();
|
m_bUseKerning = oReader.GetBool();
|
||||||
else if ("symMark" == sAttributeName)
|
else if (GetAttributeName(EAttribute::SymMask, eType) == sAttributeName)
|
||||||
m_eSymMark = GetAccent(oReader.GetText());
|
m_eSymMark = GetAccent(oReader.GetText());
|
||||||
else if ("borderFillIDRef" == sAttributeName)
|
else if (GetAttributeName(EAttribute::BorderFillId, eType) == sAttributeName)
|
||||||
m_shBorderFillIDRef = oReader.GetInt();
|
m_shBorderFillIDRef = oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hh:fontRef" == sNodeName)
|
if (GetNodeName(ENode::FontId, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
if (nullptr == m_pParent)
|
if (nullptr == m_pParent)
|
||||||
continue;
|
continue;
|
||||||
@ -251,6 +255,8 @@ CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oRea
|
|||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
|
TO_LOWER(sAttributeName);
|
||||||
|
|
||||||
if ("hangul" == sAttributeName)
|
if ("hangul" == sAttributeName)
|
||||||
UPDATE_FACENAME(ELang::HANGUL)
|
UPDATE_FACENAME(ELang::HANGUL)
|
||||||
else if ("latin" == sAttributeName)
|
else if ("latin" == sAttributeName)
|
||||||
@ -268,76 +274,76 @@ CHWPRecordCharShape::CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oRea
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:ratio" == sNodeName)
|
else if (GetNodeName(ENode::Ratio, eType) == sNodeName)
|
||||||
ReadContainerData(oReader, m_arRatios, 100);
|
ReadContainerData(oReader, m_arRatios, 100);
|
||||||
else if ("hh:spacing" == sNodeName)
|
else if (GetNodeName(ENode::CharSpacing, eType) == sNodeName)
|
||||||
ReadContainerData(oReader, m_arSpacings);
|
ReadContainerData(oReader, m_arSpacings);
|
||||||
else if ("hh:relSz" == sNodeName)
|
else if (GetNodeName(ENode::RelSize, eType) == sNodeName)
|
||||||
ReadContainerData(oReader, m_arRelSizes, 100);
|
ReadContainerData(oReader, m_arRelSizes, 100);
|
||||||
else if ("hh:offset" == sNodeName)
|
else if (GetNodeName(ENode::CharOffset, eType) == sNodeName)
|
||||||
ReadContainerData(oReader, m_arCharOffset);
|
ReadContainerData(oReader, m_arCharOffset);
|
||||||
else if ("hh:underline" == sNodeName)
|
else if (GetNodeName(ENode::Underline, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
m_eUnderline = GetUnderline(oReader.GetText());
|
m_eUnderline = GetUnderline(oReader.GetText());
|
||||||
else if ("shape" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Shape, eType) == sAttributeName)
|
||||||
m_eUnderLineShape = GetLineStyle1(oReader.GetText());
|
m_eUnderLineShape = GetLineStyle1(oReader.GetText());
|
||||||
else if ("color" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Color, eType) == sAttributeName)
|
||||||
m_nUnderlineColor = oReader.GetColor();
|
m_nUnderlineColor = oReader.GetColor();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:strikeout" == sNodeName)
|
else if (GetNodeName(ENode::Outline, eType) == sNodeName)
|
||||||
|
m_eOutline = GetOutline(oReader.GetAttribute(GetAttributeName(EAttribute::Type, eType)));
|
||||||
|
else if (GetNodeName(ENode::Shadow, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("shape" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
m_eStrikeOutShape = GetLineStyle2(oReader.GetText());
|
|
||||||
else if ("color" == sAttributeName)
|
|
||||||
m_nStrikeOutColor = oReader.GetColor();
|
|
||||||
}
|
|
||||||
END_READ_ATTRIBUTES(oReader)
|
|
||||||
}
|
|
||||||
else if ("hh:outline" == sNodeName)
|
|
||||||
m_eOutline = GetOutline(oReader.GetAttribute("type"));
|
|
||||||
else if ("hh:shadow" == sNodeName)
|
|
||||||
{
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
|
||||||
{
|
|
||||||
if ("type" == sAttributeName)
|
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("DROP" == sType)
|
if (GetValueName(EValue::Drop, eType))
|
||||||
m_eShadow = EShadow::DISCRETE;
|
m_eShadow = EShadow::DISCRETE;
|
||||||
else if ("CONTINUOUS" == sType)
|
else if (GetValueName(EValue::Continuous, eType))
|
||||||
m_eShadow = EShadow::CONTINUOUS;
|
m_eShadow = EShadow::CONTINUOUS;
|
||||||
else
|
else
|
||||||
m_eShadow = EShadow::NONE;
|
m_eShadow = EShadow::NONE;
|
||||||
}
|
}
|
||||||
else if ("color" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Color, eType) == sAttributeName)
|
||||||
m_nShadowColor = oReader.GetColor();
|
m_nShadowColor = oReader.GetColor();
|
||||||
else if ("offsetX" == sAttributeName)
|
else if (GetAttributeName(EAttribute::OffsetX, eType) == sAttributeName)
|
||||||
m_chShadowOffsetX = (HWP_BYTE)oReader.GetInt();
|
m_chShadowOffsetX = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("offsetY" == sAttributeName)
|
else if (GetAttributeName(EAttribute::OffsetY, eType) == sAttributeName)
|
||||||
m_chShadowOffsetY = (HWP_BYTE)oReader.GetInt();
|
m_chShadowOffsetY = (HWP_BYTE)oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:italic" == sNodeName)
|
else if (GetNodeName(ENode::Italic, eType) == sNodeName)
|
||||||
m_bItalic = true;
|
m_bItalic = true;
|
||||||
else if ("hh:bold" == sNodeName)
|
else if (GetNodeName(ENode::Bold, eType) == sNodeName)
|
||||||
m_bBold = true;
|
m_bBold = true;
|
||||||
else if ("hh:emboss" == sNodeName)
|
else if (GetNodeName(ENode::Emboss, eType) == sNodeName)
|
||||||
m_bEmboss = true;
|
m_bEmboss = true;
|
||||||
else if ("hh:engrave" == sNodeName)
|
else if (GetNodeName(ENode::Engrave, eType) == sNodeName)
|
||||||
m_bEngrave = true;
|
m_bEngrave = true;
|
||||||
else if ("hh:supscript" == sNodeName)
|
else if (GetNodeName(ENode::SuperScript, eType) == sNodeName)
|
||||||
m_bSuperScript = true;
|
m_bSuperScript = true;
|
||||||
else if ("hh:subscript" == sNodeName)
|
else if (GetNodeName(ENode::SubScript, eType) == sNodeName)
|
||||||
m_bSubScript = true;
|
m_bSubScript = true;
|
||||||
|
else if (EHanType::HWPX == eType && "hh:strikeout" == sNodeName)
|
||||||
|
{
|
||||||
|
START_READ_ATTRIBUTES(oReader)
|
||||||
|
{
|
||||||
|
if (GetAttributeName(EAttribute::Shape, eType) == sAttributeName)
|
||||||
|
m_eStrikeOutShape = GetLineStyle2(oReader.GetText());
|
||||||
|
else if (GetAttributeName(EAttribute::Color, eType) == sAttributeName)
|
||||||
|
m_nStrikeOutColor = oReader.GetColor();
|
||||||
|
}
|
||||||
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,7 +103,7 @@ class CHWPRecordCharShape : public CHWPRecord
|
|||||||
void ReadContainerData(CXMLReader& oReader, short arValues[], int nDefaultValue = 0);
|
void ReadContainerData(CXMLReader& oReader, short arValues[], int nDefaultValue = 0);
|
||||||
public:
|
public:
|
||||||
CHWPRecordCharShape(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordCharShape(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordCharShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
bool Bold() const;
|
bool Bold() const;
|
||||||
bool Italic() const;
|
bool Italic() const;
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
#include "HWPRecordFaceName.h"
|
#include "HWPRecordFaceName.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
|
|
||||||
EAltType GetAltType(int nValue)
|
EAltType GetAltType(int nValue)
|
||||||
{
|
{
|
||||||
switch(static_cast<EAltType>(nValue))
|
switch(static_cast<EAltType>(nValue))
|
||||||
@ -53,28 +54,29 @@ CHWPRecordFaceName::CHWPRecordFaceName(CHWPDocInfo& oDocInfo, int nTagNum, int n
|
|||||||
oBuffer.ReadString(m_sBasicFaceName, EStringCharacter::UTF16);
|
oBuffer.ReadString(m_sBasicFaceName, EStringCharacter::UTF16);
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordFaceName::CHWPRecordFaceName(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordFaceName::CHWPRecordFaceName(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_FACE_NAME, 0, 0), m_pParent(&oDocInfo)
|
: CHWPRecord(EHWPTag::HWPTAG_FACE_NAME, 0, 0), m_pParent(&oDocInfo)
|
||||||
{
|
{
|
||||||
m_sFaceName = oReader.GetAttribute("face");
|
m_sFaceName = oReader.GetAttribute(GetAttributeName(EAttribute::FontName, eType));
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hh:substFont" == sNodeName)
|
if (GetNodeName(ENode::SubFont, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
m_bSubstExists = true;
|
m_bSubstExists = true;
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("face" == sAttributeName)
|
if (GetAttributeName(EAttribute::FontName, eType) == sAttributeName)
|
||||||
m_sSubstFace = oReader.GetText();
|
m_sSubstFace = oReader.GetText();
|
||||||
else if ("type" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
std::string sType{oReader.GetTextA()};
|
||||||
|
TO_LOWER(sType);
|
||||||
|
|
||||||
if ("TTF" == sType)
|
if ("ttf" == sType)
|
||||||
m_eSubstType = EAltType::FFT;
|
m_eSubstType = EAltType::FFT;
|
||||||
else if ("HFT" == sType)
|
else if ("hft" == sType)
|
||||||
m_eSubstType = EAltType::HFT;
|
m_eSubstType = EAltType::HFT;
|
||||||
else
|
else
|
||||||
m_eSubstType = EAltType::UNKNOWN;
|
m_eSubstType = EAltType::UNKNOWN;
|
||||||
@ -82,36 +84,36 @@ CHWPRecordFaceName::CHWPRecordFaceName(CHWPDocInfo& oDocInfo, CXMLReader& oReade
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else if ("hh:typeInfo" == sNodeName)
|
else if (GetNodeName(ENode::TypeInfo, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
m_bAttrExists = true;
|
m_bAttrExists = true;
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("familyType" == sAttributeName)
|
if (GetAttributeName(EAttribute::FamilyType, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
m_sBasicFaceName = oReader.GetText();
|
m_sBasicFaceName = oReader.GetText();
|
||||||
|
|
||||||
if (!m_sBasicFaceName.empty())
|
if (!m_sBasicFaceName.empty())
|
||||||
m_bBasicFaceExists = true;
|
m_bBasicFaceExists = true;
|
||||||
}
|
}
|
||||||
else if ("serifStyle" == sAttributeName)
|
else if (GetAttributeName(EAttribute::SerifStyle, eType) == sAttributeName)
|
||||||
m_chSerifStyle = (HWP_BYTE)oReader.GetInt();
|
m_chSerifStyle = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("weight" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Weight, eType) == sAttributeName)
|
||||||
m_shWeight = oReader.GetInt();
|
m_shWeight = oReader.GetInt();
|
||||||
else if ("proportion" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Proportion, eType) == sAttributeName)
|
||||||
m_shPropotion = oReader.GetInt();
|
m_shPropotion = oReader.GetInt();
|
||||||
else if ("contrast" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Contrast, eType) == sAttributeName)
|
||||||
m_shContrast = oReader.GetInt();
|
m_shContrast = oReader.GetInt();
|
||||||
else if ("strokeVariation" == sAttributeName)
|
else if (GetAttributeName(EAttribute::StrokeVariation, eType) == sAttributeName)
|
||||||
m_shStrokeVariation = oReader.GetInt();
|
m_shStrokeVariation = oReader.GetInt();
|
||||||
else if ("armStyle" == sAttributeName)
|
else if (GetAttributeName(EAttribute::ArmStyle, eType) == sAttributeName)
|
||||||
m_shArmStyle = oReader.GetInt();
|
m_shArmStyle = oReader.GetInt();
|
||||||
else if ("letterform" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Letterform, eType) == sAttributeName)
|
||||||
m_shLetterform = oReader.GetInt();
|
m_shLetterform = oReader.GetInt();
|
||||||
else if ("midline" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Midline, eType) == sAttributeName)
|
||||||
m_shMidLine = oReader.GetInt();
|
m_shMidLine = oReader.GetInt();
|
||||||
else if ("xHeight" == sAttributeName)
|
else if (GetAttributeName(EAttribute::XHeight, eType) == sAttributeName)
|
||||||
m_shXHeight = oReader.GetInt();
|
m_shXHeight = oReader.GetInt();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|||||||
@ -41,7 +41,7 @@ class CHWPRecordFaceName : public CHWPRecord
|
|||||||
short m_shXHeight;
|
short m_shXHeight;
|
||||||
public:
|
public:
|
||||||
CHWPRecordFaceName(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordFaceName(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordFaceName(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordFaceName(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
HWP_STRING GetFaceName() const;
|
HWP_STRING GetFaceName() const;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "HWPRecordNumbering.h"
|
#include "HWPRecordNumbering.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion)
|
CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion)
|
||||||
@ -54,10 +56,10 @@ CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, int nTagNum, int
|
|||||||
oBuffer.RemoveLastSavedPos();
|
oBuffer.RemoveLastSavedPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_NUMBERING, 0, 0), m_pParent(&oDocInfo)
|
: CHWPRecord(EHWPTag::HWPTAG_NUMBERING, 0, 0), m_pParent(&oDocInfo)
|
||||||
{
|
{
|
||||||
m_shStart = oReader.GetAttributeInt("start", 1);
|
m_shStart = oReader.GetAttributeInt(GetAttributeName(EAttribute::Start, eType), 1);
|
||||||
|
|
||||||
unsigned int unIndex = 0;
|
unsigned int unIndex = 0;
|
||||||
short shLevel = 0;
|
short shLevel = 0;
|
||||||
@ -65,139 +67,142 @@ CHWPRecordNumbering::CHWPRecordNumbering(CHWPDocInfo& oDocInfo, CXMLReader& oRea
|
|||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hh:paraHead" == sNodeName ||
|
TO_LOWER(sNodeName);
|
||||||
"paraHead" == sNodeName)
|
|
||||||
|
if (GetNodeName(ENode::ParaHead, eType) != sNodeName &&
|
||||||
|
(EHanType::HWPX == eType && "parahead" != sNodeName))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
if (GetAttributeName(EAttribute::Aligment, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
if ("align" == sAttributeName)
|
const std::string sType{oReader.GetTextA()};
|
||||||
{
|
|
||||||
const std::string sType{oReader.GetTextA()};
|
|
||||||
|
|
||||||
if ("LEFT" == sType)
|
if (GetValueName(EValue::Left, eType) == sType)
|
||||||
m_arNumbering[unIndex].m_chAlign = 0;
|
m_arNumbering[unIndex].m_chAlign = 0;
|
||||||
else if ("CENTER" == sType)
|
else if (GetValueName(EValue::Center, eType) == sType)
|
||||||
m_arNumbering[unIndex].m_chAlign = 1;
|
m_arNumbering[unIndex].m_chAlign = 1;
|
||||||
else if ("RIGHT" == sType)
|
else if (GetValueName(EValue::Right, eType) == sType)
|
||||||
m_arNumbering[unIndex].m_chAlign = 2;
|
m_arNumbering[unIndex].m_chAlign = 2;
|
||||||
}
|
}
|
||||||
else if ("useInstWidth" == sAttributeName)
|
else if (GetAttributeName(EAttribute::UseInstWidth, eType) == sAttributeName)
|
||||||
m_arNumbering[unIndex].m_bUseInstWidth = oReader.GetBool();
|
m_arNumbering[unIndex].m_bUseInstWidth = oReader.GetBool();
|
||||||
else if ("autoIndent" == sAttributeName)
|
else if (GetAttributeName(EAttribute::AutoIndent, eType) == sAttributeName)
|
||||||
m_arNumbering[unIndex].m_bAutoIndent = oReader.GetBool();
|
m_arNumbering[unIndex].m_bAutoIndent = oReader.GetBool();
|
||||||
else if ("widthAdjust" == sAttributeName)
|
else if (GetAttributeName(EAttribute::WidthAdjust, eType) == sAttributeName)
|
||||||
m_arNumbering[unIndex].m_shWidthAdjust = oReader.GetInt();
|
m_arNumbering[unIndex].m_shWidthAdjust = oReader.GetInt();
|
||||||
else if ("textOffsetType" == sAttributeName)
|
else if (GetAttributeName(EAttribute::TextOffsetType, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("PERCENT" == sType)
|
if (GetValueName(EValue::Percent, eType) == sType)
|
||||||
m_arNumbering[unIndex].m_chTextOffsetType = 0;
|
m_arNumbering[unIndex].m_chTextOffsetType = 0;
|
||||||
else if ("HWPUNIT" == sType)
|
else if (GetValueName(EValue::HwpUnit, eType) == sType)
|
||||||
m_arNumbering[unIndex].m_chTextOffsetType = 1;
|
m_arNumbering[unIndex].m_chTextOffsetType = 1;
|
||||||
}
|
|
||||||
else if ("textOffset" == sAttributeName)
|
|
||||||
m_arNumbering[unIndex].m_shTextOffset = oReader.GetInt();
|
|
||||||
else if ("charPrIDRef" == sAttributeName)
|
|
||||||
m_arNumbering[unIndex].m_nCharShape = std::abs(oReader.GetInt());
|
|
||||||
else if ("start" == sAttributeName)
|
|
||||||
m_arNumbering[unIndex].m_nStartNumber = oReader.GetInt();
|
|
||||||
else if ("numFormat" == sAttributeName)
|
|
||||||
sNumFormat = oReader.GetTextA();
|
|
||||||
else if ("level" == sAttributeName)
|
|
||||||
shLevel = oReader.GetInt();
|
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
else if (GetAttributeName(EAttribute::TextOffset, eType) == sAttributeName)
|
||||||
|
m_arNumbering[unIndex].m_shTextOffset = oReader.GetInt();
|
||||||
if ("DIGIT" == sNumFormat)
|
else if (GetAttributeName(EAttribute::CharShape, eType) == sAttributeName)
|
||||||
{
|
m_arNumbering[unIndex].m_nCharShape = std::abs(oReader.GetInt());
|
||||||
if (shLevel > 0 && shLevel < 11)
|
else if (GetAttributeName(EAttribute::Start, eType) == sAttributeName)
|
||||||
m_arNumbering[unIndex].m_sNumFormat = L'^' + std::to_wstring(shLevel) + L'.';
|
m_arNumbering[unIndex].m_nStartNumber = oReader.GetInt();
|
||||||
}
|
else if (GetAttributeName(EAttribute::NumFormat, eType) == sAttributeName)
|
||||||
else if ("HANGUL_SYLLABLE" == sNumFormat ||
|
sNumFormat = oReader.GetTextA();
|
||||||
"HANGUL_JAMO" == sNumFormat)
|
else if (GetAttributeName(EAttribute::Level, eType) == sAttributeName)
|
||||||
{
|
shLevel = oReader.GetInt();
|
||||||
switch (shLevel)
|
|
||||||
{
|
|
||||||
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^가."; break;
|
|
||||||
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^나."; break;
|
|
||||||
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^다."; break;
|
|
||||||
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^라."; break;
|
|
||||||
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^마."; break;
|
|
||||||
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^바."; break;
|
|
||||||
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^사."; break;
|
|
||||||
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^아."; break;
|
|
||||||
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^자."; break;
|
|
||||||
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^차."; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ("CIRCLED_DIGIT" == sNumFormat)
|
|
||||||
{
|
|
||||||
switch (shLevel)
|
|
||||||
{
|
|
||||||
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u2460."; break;
|
|
||||||
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u2461."; break;
|
|
||||||
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u2462."; break;
|
|
||||||
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u2463."; break;
|
|
||||||
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u2464."; break;
|
|
||||||
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u2465."; break;
|
|
||||||
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u2466."; break;
|
|
||||||
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u2467."; break;
|
|
||||||
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u2468."; break;
|
|
||||||
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u2469."; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ("LATIN_SMALL" == sNumFormat)
|
|
||||||
{
|
|
||||||
switch (shLevel)
|
|
||||||
{
|
|
||||||
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^a."; break;
|
|
||||||
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^b."; break;
|
|
||||||
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^c."; break;
|
|
||||||
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^d."; break;
|
|
||||||
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^e."; break;
|
|
||||||
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^f."; break;
|
|
||||||
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^g."; break;
|
|
||||||
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^h."; break;
|
|
||||||
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^i."; break;
|
|
||||||
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^j."; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ("CIRCLED_HANGUL_SYLLABLE" == sNumFormat)
|
|
||||||
{
|
|
||||||
switch (shLevel)
|
|
||||||
{
|
|
||||||
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u326E."; break;
|
|
||||||
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u326F."; break;
|
|
||||||
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u3270."; break;
|
|
||||||
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u3271."; break;
|
|
||||||
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u3272."; break;
|
|
||||||
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u3273."; break;
|
|
||||||
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u3274."; break;
|
|
||||||
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u3275."; break;
|
|
||||||
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u3276."; break;
|
|
||||||
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u3277."; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ("ROMAN_SMALL" == sNumFormat)
|
|
||||||
{
|
|
||||||
switch (shLevel)
|
|
||||||
{
|
|
||||||
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u2170."; break;
|
|
||||||
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u2171."; break;
|
|
||||||
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u2172."; break;
|
|
||||||
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u2173."; break;
|
|
||||||
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u2174."; break;
|
|
||||||
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u2175."; break;
|
|
||||||
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u2176."; break;
|
|
||||||
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u2177."; break;
|
|
||||||
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u2178."; break;
|
|
||||||
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u2179."; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
++unIndex;
|
|
||||||
}
|
}
|
||||||
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
|
if (GetValueName(EValue::Digit, eType))
|
||||||
|
{
|
||||||
|
if (shLevel > 0 && shLevel < 11)
|
||||||
|
m_arNumbering[unIndex].m_sNumFormat = L'^' + std::to_wstring(shLevel) + L'.';
|
||||||
|
}
|
||||||
|
else if (GetValueName(EValue::HangulSyllable, eType) ||
|
||||||
|
GetValueName(EValue::HangulJamo, eType))
|
||||||
|
{
|
||||||
|
switch (shLevel)
|
||||||
|
{
|
||||||
|
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^가."; break;
|
||||||
|
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^나."; break;
|
||||||
|
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^다."; break;
|
||||||
|
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^라."; break;
|
||||||
|
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^마."; break;
|
||||||
|
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^바."; break;
|
||||||
|
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^사."; break;
|
||||||
|
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^아."; break;
|
||||||
|
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^자."; break;
|
||||||
|
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^차."; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (GetValueName(EValue::CircledDigit, eType))
|
||||||
|
{
|
||||||
|
switch (shLevel)
|
||||||
|
{
|
||||||
|
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u2460."; break;
|
||||||
|
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u2461."; break;
|
||||||
|
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u2462."; break;
|
||||||
|
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u2463."; break;
|
||||||
|
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u2464."; break;
|
||||||
|
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u2465."; break;
|
||||||
|
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u2466."; break;
|
||||||
|
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u2467."; break;
|
||||||
|
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u2468."; break;
|
||||||
|
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u2469."; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (GetValueName(EValue::LatinSmall, eType))
|
||||||
|
{
|
||||||
|
switch (shLevel)
|
||||||
|
{
|
||||||
|
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^a."; break;
|
||||||
|
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^b."; break;
|
||||||
|
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^c."; break;
|
||||||
|
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^d."; break;
|
||||||
|
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^e."; break;
|
||||||
|
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^f."; break;
|
||||||
|
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^g."; break;
|
||||||
|
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^h."; break;
|
||||||
|
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^i."; break;
|
||||||
|
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^j."; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (GetValueName(EValue::CircledHangulSyllable, eType) ||
|
||||||
|
GetValueName(EValue::CircledHangulJamo, eType))
|
||||||
|
{
|
||||||
|
switch (shLevel)
|
||||||
|
{
|
||||||
|
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u326E."; break;
|
||||||
|
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u326F."; break;
|
||||||
|
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u3270."; break;
|
||||||
|
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u3271."; break;
|
||||||
|
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u3272."; break;
|
||||||
|
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u3273."; break;
|
||||||
|
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u3274."; break;
|
||||||
|
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u3275."; break;
|
||||||
|
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u3276."; break;
|
||||||
|
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u3277."; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (GetValueName(EValue::RomanSmall, eType))
|
||||||
|
{
|
||||||
|
switch (shLevel)
|
||||||
|
{
|
||||||
|
case 1: m_arNumbering[unIndex].m_sNumFormat = L"^\u2170."; break;
|
||||||
|
case 2: m_arNumbering[unIndex].m_sNumFormat = L"^\u2171."; break;
|
||||||
|
case 3: m_arNumbering[unIndex].m_sNumFormat = L"^\u2172."; break;
|
||||||
|
case 4: m_arNumbering[unIndex].m_sNumFormat = L"^\u2173."; break;
|
||||||
|
case 5: m_arNumbering[unIndex].m_sNumFormat = L"^\u2174."; break;
|
||||||
|
case 6: m_arNumbering[unIndex].m_sNumFormat = L"^\u2175."; break;
|
||||||
|
case 7: m_arNumbering[unIndex].m_sNumFormat = L"^\u2176."; break;
|
||||||
|
case 8: m_arNumbering[unIndex].m_sNumFormat = L"^\u2177."; break;
|
||||||
|
case 9: m_arNumbering[unIndex].m_sNumFormat = L"^\u2178."; break;
|
||||||
|
case 10: m_arNumbering[unIndex].m_sNumFormat = L"^\u2179."; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
++unIndex;
|
||||||
|
|
||||||
if (7 == unIndex)
|
if (7 == unIndex)
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class CHWPRecordNumbering : public CHWPRecord
|
|||||||
int m_arExtLevelStart[3];
|
int m_arExtLevelStart[3];
|
||||||
public:
|
public:
|
||||||
CHWPRecordNumbering(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordNumbering(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordNumbering(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordNumbering(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
short GetStart() const;
|
short GetStart() const;
|
||||||
HWP_STRING GetNumFormat(unsigned short ushIndex) const;
|
HWP_STRING GetNumFormat(unsigned short ushIndex) const;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "HWPRecordParaShape.h"
|
#include "HWPRecordParaShape.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
EHeadingType GetHeadingType(int nValue)
|
EHeadingType GetHeadingType(int nValue)
|
||||||
@ -131,26 +133,155 @@ CHWPRecordParaShape::CHWPRecordParaShape(CHWPDocInfo& oDocInfo, int nTagNum, int
|
|||||||
oBuffer.Skip(8);
|
oBuffer.Skip(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordParaShape::CHWPRecordParaShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordParaShape::CHWPRecordParaShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_PARA_SHAPE, 0, 0), m_pParent(&oDocInfo),
|
: CHWPRecord(EHWPTag::HWPTAG_PARA_SHAPE, 0, 0), m_pParent(&oDocInfo),
|
||||||
m_eAlign(EHorizontalAlign::JUSTIFY), m_bWidowOrphan(false), m_bKeepWithNext(false),
|
m_eAlign(EHorizontalAlign::JUSTIFY), m_bWidowOrphan(false), m_bKeepWithNext(false),
|
||||||
m_bPageBreakBefore(false), m_eVertAlign(EVerticalAlign::BASELINE), m_eHeadingType(EHeadingType::NONE),
|
m_bPageBreakBefore(false), m_eVertAlign(EVerticalAlign::BASELINE), m_eHeadingType(EHeadingType::NONE),
|
||||||
|
m_nIndent(0), m_nMarginLeft(0), m_nMarginRight(0), m_nMarginPrev(0), m_nMarginNext(0),
|
||||||
m_bConnect(false), m_bIgnoreMargin(false), m_bParaTailShape(false)
|
m_bConnect(false), m_bIgnoreMargin(false), m_bParaTailShape(false)
|
||||||
{
|
{
|
||||||
|
//В HWPX в данной ноде данный пишутся по типу данный в нодах
|
||||||
|
//В HWPML в данной ноде данные пишуься по типк данные в аргументах
|
||||||
|
|
||||||
|
if (EHanType::HWPX == eType)
|
||||||
|
{
|
||||||
|
START_READ_ATTRIBUTES(oReader)
|
||||||
|
{
|
||||||
|
if (GetAttributeName(EAttribute::TabDef, eType))
|
||||||
|
m_shTabDef = oReader.GetInt();
|
||||||
|
else if (GetAttributeName(EAttribute::Condense, eType) == sAttributeName)
|
||||||
|
m_chCondense = (HWP_BYTE)oReader.GetInt();
|
||||||
|
else if (GetAttributeName(EAttribute::FontLineHeight, eType) == sAttributeName)
|
||||||
|
m_bFontLineHeight = oReader.GetBool();
|
||||||
|
else if (GetAttributeName(EAttribute::SnapToGrid, eType) == sAttributeName)
|
||||||
|
m_bSnapToGrid = oReader.GetBool();
|
||||||
|
}
|
||||||
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
|
RecursiveParaShape(oReader);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (EHanType::HWPML != eType)
|
||||||
|
return;
|
||||||
|
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("tabPrIDRef" == sAttributeName)
|
if ("Align" == sAttributeName)
|
||||||
|
m_eAlign = ::HWP::GetHorizontalAlign(oReader.GetText());
|
||||||
|
else if ("VerAlign" == sAttributeName)
|
||||||
|
m_eVertAlign = ::HWP::GetVerticalAlign(oReader.GetText());
|
||||||
|
else if ("HeadingType" == sAttributeName)
|
||||||
|
m_eHeadingType = ::HWP::GetHeadingType(oReader.GetText());
|
||||||
|
else if ("Heading" == sAttributeName)
|
||||||
|
m_shHeadingIdRef = oReader.GetInt();
|
||||||
|
else if ("Level" == sAttributeName)
|
||||||
|
m_chHeadingLevel = (HWP_BYTE)oReader.GetInt();
|
||||||
|
else if ("TabDef" == sAttributeName)
|
||||||
m_shTabDef = oReader.GetInt();
|
m_shTabDef = oReader.GetInt();
|
||||||
else if ("condense" == sAttributeName)
|
else if ("BreakLatinWord" == sAttributeName)
|
||||||
|
{
|
||||||
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
|
if ("KeepWord" == sType)
|
||||||
|
m_chBreakLatinWord = 0;
|
||||||
|
else if ("BreakWord" == sType)
|
||||||
|
m_chBreakLatinWord = 1;
|
||||||
|
else if ("Hyphenation" == sType)
|
||||||
|
m_chBreakLatinWord = 2;
|
||||||
|
}
|
||||||
|
else if ("BreakNonLatinWord" == sAttributeName)
|
||||||
|
{
|
||||||
|
//TODO:: проверить соответсвие hwpx и hwpml
|
||||||
|
}
|
||||||
|
else if ("Condense" == sAttributeName)
|
||||||
m_chCondense = (HWP_BYTE)oReader.GetInt();
|
m_chCondense = (HWP_BYTE)oReader.GetInt();
|
||||||
else if ("fontLineHeight" == sAttributeName)
|
else if ("WidowOrphan" == sAttributeName)
|
||||||
|
m_bWidowOrphan = oReader.GetBool();
|
||||||
|
else if ("KeepWithNext" == sAttributeName)
|
||||||
|
m_bKeepWithNext = oReader.GetBool();
|
||||||
|
else if ("KeepLines" == sAttributeName)
|
||||||
|
{ /*TODO:: проверить соответсвие hwpx и hwpml*/ }
|
||||||
|
else if ("PageBreakBefore" == sAttributeName)
|
||||||
|
m_bPageBreakBefore = oReader.GetBool();
|
||||||
|
else if ("FontLineHeight" == sAttributeName)
|
||||||
m_bFontLineHeight = oReader.GetBool();
|
m_bFontLineHeight = oReader.GetBool();
|
||||||
else if ("snapToGrid" == sAttributeName)
|
else if ("SnapToGrid" == sAttributeName)
|
||||||
m_bSnapToGrid = oReader.GetBool();
|
m_bSnapToGrid = oReader.GetBool();
|
||||||
|
else if ("LineWrap" == sAttributeName)
|
||||||
|
{
|
||||||
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
|
if ("Break" == sType)
|
||||||
|
m_chLineWrap = 0;
|
||||||
|
else if ("Squeeze" == sType)
|
||||||
|
m_chLineWrap = 1;
|
||||||
|
else if ("Keep" == sType)
|
||||||
|
m_chLineWrap = 2;
|
||||||
|
}
|
||||||
|
else if ("AutoSpaceEAsianEng" == sAttributeName)
|
||||||
|
m_bAutoSpaceEAsianEng = oReader.GetBool();
|
||||||
|
else if ("AutoSpaceEAsianNum" == sAttributeName)
|
||||||
|
m_bAutoSpaceEAsianNum = oReader.GetBool();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
RecursiveParaShape(oReader);
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
|
{
|
||||||
|
if ("PARAMARGIN" == sNodeName)
|
||||||
|
{
|
||||||
|
START_READ_ATTRIBUTES(oReader)
|
||||||
|
{
|
||||||
|
if ("Indent" == sAttributeName)
|
||||||
|
m_nIndent = oReader.GetInt();
|
||||||
|
else if ("Left" == sAttributeName)
|
||||||
|
m_nMarginLeft = oReader.GetInt();
|
||||||
|
else if ("Right" == sAttributeName)
|
||||||
|
m_nMarginRight = oReader.GetInt();
|
||||||
|
else if ("Prev" == sAttributeName)
|
||||||
|
m_nMarginPrev = oReader.GetInt();
|
||||||
|
else if ("Next" == sAttributeName)
|
||||||
|
m_nMarginNext = oReader.GetInt();
|
||||||
|
else if ("LineSpacingType" == sAttributeName)
|
||||||
|
{
|
||||||
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
|
if ("Percent" == sType)
|
||||||
|
m_nLineSpacingType = 0;
|
||||||
|
else if ("Fixed" == sType)
|
||||||
|
m_nLineSpacingType = 1;
|
||||||
|
else if ("BetweenLines" == sType)
|
||||||
|
m_nLineSpacingType = 2;
|
||||||
|
else if ("AtLeast" == sType)
|
||||||
|
m_nLineSpacingType = 4;
|
||||||
|
}
|
||||||
|
else if ("LineSpacing" == sAttributeName)
|
||||||
|
m_nLineSpacing = oReader.GetInt();
|
||||||
|
}
|
||||||
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
}
|
||||||
|
else if ("PARABORDER" == sNodeName)
|
||||||
|
{
|
||||||
|
START_READ_ATTRIBUTES(oReader)
|
||||||
|
{
|
||||||
|
if ("BorderFill" == sAttributeName)
|
||||||
|
m_shBorderFill = oReader.GetInt();
|
||||||
|
else if ("OffsetLeft" == sAttributeName)
|
||||||
|
m_shOffsetLeft = oReader.GetInt();
|
||||||
|
else if ("OffsetRigth" == sAttributeName)
|
||||||
|
m_shOffsetRight = oReader.GetInt();
|
||||||
|
else if ("OffsetTop" == sAttributeName)
|
||||||
|
m_shOffsetTop = oReader.GetInt();
|
||||||
|
else if ("OffsetBottom" == sAttributeName)
|
||||||
|
m_shOffsetBottom = oReader.GetInt();
|
||||||
|
else if ("Connect" == sAttributeName)
|
||||||
|
m_bConnect = oReader.GetBool();
|
||||||
|
else if ("IgnoreMargin" == sAttributeName)
|
||||||
|
m_bIgnoreMargin = oReader.GetBool();
|
||||||
|
}
|
||||||
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHWPRecordParaShape::RecursiveParaShape(CXMLReader& oReader)
|
void CHWPRecordParaShape::RecursiveParaShape(CXMLReader& oReader)
|
||||||
|
|||||||
@ -77,7 +77,7 @@ class CHWPRecordParaShape : public CHWPRecord
|
|||||||
void RecursiveParaShape(CXMLReader& oReader);
|
void RecursiveParaShape(CXMLReader& oReader);
|
||||||
public:
|
public:
|
||||||
CHWPRecordParaShape(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordParaShape(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordParaShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordParaShape(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EHorizontalAlign GetHorizantalAlign() const;
|
EHorizontalAlign GetHorizantalAlign() const;
|
||||||
EVerticalAlign GetVerticalAlign() const;
|
EVerticalAlign GetVerticalAlign() const;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "HWPRecordStyle.h"
|
#include "HWPRecordStyle.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
#include <iostream>
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
CHWPRecordStyle::CHWPRecordStyle(int nTagNum, int nLevel, int nSize)
|
CHWPRecordStyle::CHWPRecordStyle(int nTagNum, int nLevel, int nSize)
|
||||||
@ -20,33 +22,33 @@ CHWPRecordStyle::CHWPRecordStyle(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel,
|
|||||||
m_nCharShape = oBuffer.ReadShort();
|
m_nCharShape = oBuffer.ReadShort();
|
||||||
}
|
}
|
||||||
|
|
||||||
CHWPRecordStyle::CHWPRecordStyle(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHWPRecordStyle::CHWPRecordStyle(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_STYLE, 0, 0), m_pParent(&oDocInfo)
|
: CHWPRecord(EHWPTag::HWPTAG_STYLE, 0, 0), m_pParent(&oDocInfo)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("type" == sAttributeName)
|
if (GetAttributeName(EAttribute::Type, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
const std::string sType{oReader.GetTextA()};
|
const std::string sType{oReader.GetTextA()};
|
||||||
|
|
||||||
if ("PARA" == sType)
|
if (GetValueName(EValue::Para, eType) == sType)
|
||||||
m_chType = 0;
|
m_chType = 0;
|
||||||
else if ("CHAR" == sType)
|
else if (GetValueName(EValue::Char, eType) == sType)
|
||||||
m_chType = 1;
|
m_chType = 1;
|
||||||
}
|
}
|
||||||
else if ("name" == sAttributeName)
|
else if (GetAttributeName(EAttribute::Name, eType) == sAttributeName)
|
||||||
m_sName = oReader.GetText();
|
m_sName = oReader.GetText();
|
||||||
else if ("engName" == sAttributeName)
|
else if (GetAttributeName(EAttribute::EngName, eType) == sAttributeName)
|
||||||
m_sEngName = oReader.GetText();
|
m_sEngName = oReader.GetText();
|
||||||
else if ("paraPrIDRef" == sAttributeName)
|
else if (GetAttributeName(EAttribute::ParaShape, eType) == sAttributeName)
|
||||||
m_nParaShape = oReader.GetInt();
|
m_nParaShape = oReader.GetInt();
|
||||||
else if ("charPrIDRef" == sAttributeName)
|
else if (GetAttributeName(EAttribute::CharShape, eType) == sAttributeName)
|
||||||
m_nCharShape = oReader.GetInt();
|
m_nCharShape = oReader.GetInt();
|
||||||
else if ("nextStyleIDRef" == sAttributeName)
|
else if (GetAttributeName(EAttribute::NextStyle, eType) == sAttributeName)
|
||||||
m_chNextStyle = oReader.GetInt();
|
m_chNextStyle = oReader.GetInt();
|
||||||
else if ("langID" == sAttributeName)
|
else if (GetAttributeName(EAttribute::LangId, eType) == sAttributeName)
|
||||||
m_shLangID = oReader.GetInt();
|
m_shLangID = oReader.GetInt();
|
||||||
else if ("lockForm" == sAttributeName)
|
else if (GetAttributeName(EAttribute::LockForm, eType) == sAttributeName)
|
||||||
m_bLockForm = oReader.GetBool();
|
m_bLockForm = oReader.GetBool();
|
||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|||||||
@ -22,7 +22,7 @@ class CHWPRecordStyle : public CHWPRecord
|
|||||||
public:
|
public:
|
||||||
CHWPRecordStyle(int nTagNum, int nLevel, int nSize);
|
CHWPRecordStyle(int nTagNum, int nLevel, int nSize);
|
||||||
CHWPRecordStyle(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHWPRecordStyle(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHWPRecordStyle(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHWPRecordStyle(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
HWP_STRING GetName() const;
|
HWP_STRING GetName() const;
|
||||||
HWP_STRING GetEngName() const;
|
HWP_STRING GetEngName() const;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "HwpRecordTabDef.h"
|
#include "HwpRecordTabDef.h"
|
||||||
|
|
||||||
|
#include "../Common/NodeNames.h"
|
||||||
|
|
||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
TTab::TTab()
|
TTab::TTab()
|
||||||
@ -69,19 +71,19 @@ CHwpRecordTabDef::CHwpRecordTabDef(CHWPDocInfo& oDocInfo, int nTagNum, int nLeve
|
|||||||
oBuffer.RemoveLastSavedPos();
|
oBuffer.RemoveLastSavedPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
CHwpRecordTabDef::CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion)
|
CHwpRecordTabDef::CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CHWPRecord(EHWPTag::HWPTAG_TAB_DEF, 0, 0), m_pParent(&oDocInfo), m_nAttr(0)
|
: CHWPRecord(EHWPTag::HWPTAG_TAB_DEF, 0, 0), m_pParent(&oDocInfo), m_nAttr(0)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if ("autoTabLeft" == sAttributeName)
|
if (GetAttributeName(EAttribute::AutoTabLeft, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
if (oReader.GetBool())
|
if (oReader.GetBool())
|
||||||
m_nAttr |= 0x00000001;
|
m_nAttr |= 0x00000001;
|
||||||
else
|
else
|
||||||
m_nAttr &= 0xFFFFFFFE;
|
m_nAttr &= 0xFFFFFFFE;
|
||||||
}
|
}
|
||||||
else if ("autoTabRight" == sAttributeName)
|
else if (GetAttributeName(EAttribute::AutoTabRight, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
if (oReader.GetBool())
|
if (oReader.GetBool())
|
||||||
m_nAttr |= 0x00000002;
|
m_nAttr |= 0x00000002;
|
||||||
@ -91,6 +93,10 @@ CHwpRecordTabDef::CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, i
|
|||||||
}
|
}
|
||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
|
// Дальнейшая структура встречается лишь в HWPX формате
|
||||||
|
if (EHanType::HWPX != eType)
|
||||||
|
return;
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, "hp:switch")
|
WHILE_READ_NEXT_NODE_WITH_ONE_NAME(oReader, "hp:switch")
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Child, "hp:default")
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, Child, "hp:default")
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, TabChild, "hh:tabItem")
|
WHILE_READ_NEXT_NODE_WITH_DEPTH_ONE_NAME(oReader, TabChild, "hh:tabItem")
|
||||||
@ -98,7 +104,6 @@ CHwpRecordTabDef::CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, i
|
|||||||
END_WHILE
|
END_WHILE
|
||||||
END_WHILE
|
END_WHILE
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CHwpRecordTabDef::GetCount() const
|
int CHwpRecordTabDef::GetCount() const
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class CHwpRecordTabDef : public CHWPRecord
|
|||||||
public:
|
public:
|
||||||
CHwpRecordTabDef(int nTagNum, int nLevel, int nSize);
|
CHwpRecordTabDef(int nTagNum, int nLevel, int nSize);
|
||||||
CHwpRecordTabDef(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CHwpRecordTabDef(CHWPDocInfo& oDocInfo, int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion);
|
CHwpRecordTabDef(CHWPDocInfo& oDocInfo, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
int GetCount() const;
|
int GetCount() const;
|
||||||
const TTab* GetTab(unsigned int unIndex) const;
|
const TTab* GetTab(unsigned int unIndex) const;
|
||||||
|
|||||||
@ -6,7 +6,7 @@ namespace HWP
|
|||||||
{
|
{
|
||||||
|
|
||||||
CHWPMLFile::CHWPMLFile(const HWP_STRING &wsFilePath)
|
CHWPMLFile::CHWPMLFile(const HWP_STRING &wsFilePath)
|
||||||
: m_wsFilePath(wsFilePath)
|
: m_wsFilePath(wsFilePath), m_oDocInfo(this)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CHWPMLFile::~CHWPMLFile()
|
CHWPMLFile::~CHWPMLFile()
|
||||||
@ -57,12 +57,14 @@ bool CHWPMLFile::Detect() const
|
|||||||
void CHWPMLFile::Close()
|
void CHWPMLFile::Close()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
const CHWPDocInfo* CHWPMLFile::GetDocInfo() const
|
||||||
|
{
|
||||||
|
return &m_oDocInfo;
|
||||||
|
}
|
||||||
|
|
||||||
void CHWPMLFile::ReadHead(CXMLReader &oReader)
|
void CHWPMLFile::ReadHead(CXMLReader &oReader)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
m_oDocInfo.Parse(oReader);
|
||||||
{
|
|
||||||
}
|
|
||||||
END_WHILE
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHWPMLFile::ReadBody(CXMLReader &oReader)
|
void CHWPMLFile::ReadBody(CXMLReader &oReader)
|
||||||
|
|||||||
@ -8,7 +8,8 @@ namespace HWP
|
|||||||
{
|
{
|
||||||
class CHWPMLFile
|
class CHWPMLFile
|
||||||
{
|
{
|
||||||
HWP_STRING m_wsFilePath;
|
HWP_STRING m_wsFilePath;
|
||||||
|
CHWPDocInfo m_oDocInfo;
|
||||||
VECTOR<CHWPSection*> m_arSections;
|
VECTOR<CHWPSection*> m_arSections;
|
||||||
|
|
||||||
void ReadHead(CXMLReader& oReader);
|
void ReadHead(CXMLReader& oReader);
|
||||||
@ -23,7 +24,8 @@ public:
|
|||||||
bool Open();
|
bool Open();
|
||||||
bool Detect() const;
|
bool Detect() const;
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
|
const CHWPDocInfo* GetDocInfo() const;
|
||||||
VECTOR<const CHWPSection*> GetSections() const;
|
VECTOR<const CHWPSection*> GetSections() const;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,31 +25,31 @@ CCtrlContainer::CCtrlContainer(const HWP_STRING& sCtrlID, int nSize, CHWPStream&
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlContainer::CCtrlContainer(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlContainer::CCtrlContainer(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
{
|
{
|
||||||
if ("hp:container" == sNodeName)
|
if ("hp:container" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlContainer(L"noc$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlContainer(L"noc$", oReader, nVersion, eType));
|
||||||
else if ("hp:line" == sNodeName)
|
else if ("hp:line" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeLine(L"nil$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeLine(L"nil$", oReader, nVersion, eType));
|
||||||
else if ("hp:rect" == sNodeName)
|
else if ("hp:rect" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeRect(L"cer$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeRect(L"cer$", oReader, nVersion, eType));
|
||||||
else if ("hp:ellipse" == sNodeName)
|
else if ("hp:ellipse" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeEllipse(L"lle$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeEllipse(L"lle$", oReader, nVersion, eType));
|
||||||
else if ("hp:arc" == sNodeName)
|
else if ("hp:arc" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeArc(L"cra$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeArc(L"cra$", oReader, nVersion, eType));
|
||||||
else if ("hp:polygon" == sNodeName)
|
else if ("hp:polygon" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapePolygon(L"lop$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapePolygon(L"lop$", oReader, nVersion, eType));
|
||||||
else if ("hp:curve" == sNodeName)
|
else if ("hp:curve" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeCurve(L"ruc$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeCurve(L"ruc$", oReader, nVersion, eType));
|
||||||
else if ("hp:connectLine" == sNodeName)
|
else if ("hp:connectLine" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeConnectLine(L"loc$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeConnectLine(L"loc$", oReader, nVersion, eType));
|
||||||
else if ("hp:pic" == sNodeName)
|
else if ("hp:pic" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapePic(L"cip$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapePic(L"cip$", oReader, nVersion, eType));
|
||||||
else if ("hp:ole" == sNodeName)
|
else if ("hp:ole" == sNodeName)
|
||||||
m_arShapes.push_back(new CCtrlShapeOle(L"elo$", oReader, nVersion));
|
m_arShapes.push_back(new CCtrlShapeOle(L"elo$", oReader, nVersion, eType));
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public:
|
|||||||
CCtrlContainer(const HWP_STRING& sCtrlID);
|
CCtrlContainer(const HWP_STRING& sCtrlID);
|
||||||
CCtrlContainer(const CCtrlGeneralShape& oShape);
|
CCtrlContainer(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlContainer(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlContainer(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlContainer(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlContainer(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
~CCtrlContainer();
|
~CCtrlContainer();
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlEqEdit::CCtrlEqEdit(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuff
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlEqEdit::CCtrlEqEdit(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlEqEdit::CCtrlEqEdit(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
@ -49,7 +49,7 @@ CCtrlEqEdit::CCtrlEqEdit(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVe
|
|||||||
if ("hp:script" == oReader.GetName())
|
if ("hp:script" == oReader.GetName())
|
||||||
m_sEqn = oReader.GetText();
|
m_sEqn = oReader.GetText();
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ public:
|
|||||||
CCtrlEqEdit(const HWP_STRING& sCtrlID);
|
CCtrlEqEdit(const HWP_STRING& sCtrlID);
|
||||||
CCtrlEqEdit(const CCtrlGeneralShape& oShape);
|
CCtrlEqEdit(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlEqEdit(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlEqEdit(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlEqEdit(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlEqEdit(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -84,7 +84,7 @@ EShapeType CCtrlGeneralShape::GetShapeType() const
|
|||||||
return EShapeType::GeneralShape;
|
return EShapeType::GeneralShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCtrlGeneralShape::ParseChildren(CXMLReader& oReader, int nVersion)
|
void CCtrlGeneralShape::ParseChildren(CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
{
|
{
|
||||||
bool bHeadFill = false, bTailFill = false;
|
bool bHeadFill = false, bTailFill = false;
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ void CCtrlGeneralShape::ParseChildren(CXMLReader& oReader, int nVersion)
|
|||||||
m_eLineTail = ELineArrowStyle::NORMAL;
|
m_eLineTail = ELineArrowStyle::NORMAL;
|
||||||
}
|
}
|
||||||
else if ("hc:fillBrush" == sNodeName)
|
else if ("hc:fillBrush" == sNodeName)
|
||||||
m_pFill = new CFill(oReader);
|
m_pFill = new CFill(oReader, eType);
|
||||||
else if ("hp:drawText" == sNodeName)
|
else if ("hp:drawText" == sNodeName)
|
||||||
{
|
{
|
||||||
m_nMaxTxtWidth = oReader.GetAttributeInt("lastWidth");
|
m_nMaxTxtWidth = oReader.GetAttributeInt("lastWidth");
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public:
|
|||||||
ECtrlObjectType GetCtrlType() const override;
|
ECtrlObjectType GetCtrlType() const override;
|
||||||
virtual EShapeType GetShapeType() const;
|
virtual EShapeType GetShapeType() const;
|
||||||
|
|
||||||
void ParseChildren(CXMLReader& oReader, int nVersion);
|
void ParseChildren(CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
void SetParent(CHWPPargraph* pParent);
|
void SetParent(CHWPPargraph* pParent);
|
||||||
CHWPPargraph* GetParent();
|
CHWPPargraph* GetParent();
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeArc::CCtrlShapeArc(const HWP_STRING& sCtrlID, int nSize, CHWPStream& o
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeArc::CCtrlShapeArc(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeArc::CCtrlShapeArc(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_eType = GetArcType(oReader.GetAttributeInt("type"));
|
m_eType = GetArcType(oReader.GetAttributeInt("type"));
|
||||||
@ -58,7 +58,7 @@ CCtrlShapeArc::CCtrlShapeArc(const HWP_STRING& sCtrlID, CXMLReader& oReader, int
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ public:
|
|||||||
CCtrlShapeArc(const HWP_STRING& sCtrlID);
|
CCtrlShapeArc(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeArc(const CCtrlGeneralShape& oShape);
|
CCtrlShapeArc(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeArc(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeArc(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeArc(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeArc(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, int nSiz
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_eType = GetConnectLineType(oReader.GetAttributeInt("type"));
|
m_eType = GetConnectLineType(oReader.GetAttributeInt("type"));
|
||||||
@ -63,7 +63,7 @@ CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLRead
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ class CCtrlShapeConnectLine : public CCtrlGeneralShape
|
|||||||
TConnectPoint m_oEndPt;
|
TConnectPoint m_oEndPt;
|
||||||
public:
|
public:
|
||||||
CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeCurve::CCtrlShapeCurve(const HWP_STRING& sCtrlID, int nSize, CHWPStrea
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeCurve::CCtrlShapeCurve(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeCurve::CCtrlShapeCurve(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
// bool bReadedType
|
// bool bReadedType
|
||||||
@ -58,7 +58,7 @@ CCtrlShapeCurve::CCtrlShapeCurve(const HWP_STRING& sCtrlID, CXMLReader& oReader,
|
|||||||
m_arPoints.push_back(oPoint1);
|
m_arPoints.push_back(oPoint1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ public:
|
|||||||
CCtrlShapeCurve(const HWP_STRING& sCtrlID);
|
CCtrlShapeCurve(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeCurve(const CCtrlGeneralShape& oShape);
|
CCtrlShapeCurve(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeCurve(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeCurve(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeCurve(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeCurve(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ CCtrlShapeEllipse::CCtrlShapeEllipse(const HWP_STRING& sCtrlID, int nSize, CHWPS
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeEllipse::CCtrlShapeEllipse(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeEllipse::CCtrlShapeEllipse(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
@ -128,7 +128,7 @@ CCtrlShapeEllipse::CCtrlShapeEllipse(const HWP_STRING& sCtrlID, CXMLReader& oRea
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ public:
|
|||||||
CCtrlShapeEllipse(const HWP_STRING& sCtrlID);
|
CCtrlShapeEllipse(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeEllipse(const CCtrlGeneralShape& oShape);
|
CCtrlShapeEllipse(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeEllipse(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeEllipse(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeEllipse(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeEllipse(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeLine::CCtrlShapeLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream&
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeLine::CCtrlShapeLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeLine::CCtrlShapeLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_shAttr = (short)oReader.GetAttributeBool("isReverseHV");
|
m_shAttr = (short)oReader.GetAttributeBool("isReverseHV");
|
||||||
@ -47,7 +47,7 @@ CCtrlShapeLine::CCtrlShapeLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, i
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public:
|
|||||||
CCtrlShapeLine(const HWP_STRING& sCtrlID);
|
CCtrlShapeLine(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeLine(const CCtrlGeneralShape& oShape);
|
CCtrlShapeLine(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeOle::CCtrlShapeOle(const HWP_STRING& sCtrlID, int nSize, CHWPStream& o
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeOle::CCtrlShapeOle(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeOle::CCtrlShapeOle(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_sBinDataID = oReader.GetAttribute("binaryItemIDRef");
|
m_sBinDataID = oReader.GetAttribute("binaryItemIDRef");
|
||||||
@ -36,7 +36,7 @@ CCtrlShapeOle::CCtrlShapeOle(const HWP_STRING& sCtrlID, CXMLReader& oReader, int
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,7 @@ public:
|
|||||||
CCtrlShapeOle(const HWP_STRING& sCtrlID);
|
CCtrlShapeOle(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeOle(const CCtrlGeneralShape& oShape);
|
CCtrlShapeOle(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeOle(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeOle(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeOle(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeOle(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -256,7 +256,7 @@ CCtrlShapePic::CCtrlShapePic(const HWP_STRING& sCtrlID, int nSize, CHWPStream& o
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapePic::CCtrlShapePic(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapePic::CCtrlShapePic(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
|
||||||
@ -357,7 +357,7 @@ CCtrlShapePic::CCtrlShapePic(const HWP_STRING& sCtrlID, CXMLReader& oReader, int
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,7 +134,7 @@ public:
|
|||||||
CCtrlShapePic(const HWP_STRING& sCtrlID);
|
CCtrlShapePic(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapePic(const CCtrlGeneralShape& oShape);
|
CCtrlShapePic(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapePic(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapePic(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapePic(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapePic(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
~CCtrlShapePic();
|
~CCtrlShapePic();
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapePolygon::CCtrlShapePolygon(const HWP_STRING& sCtrlID, int nSize, CHWPS
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapePolygon::CCtrlShapePolygon(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapePolygon::CCtrlShapePolygon(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
TPoint oPoint{0, 0};
|
TPoint oPoint{0, 0};
|
||||||
@ -40,7 +40,7 @@ CCtrlShapePolygon::CCtrlShapePolygon(const HWP_STRING& sCtrlID, CXMLReader& oRea
|
|||||||
oPoint = {0, 0};
|
oPoint = {0, 0};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ public:
|
|||||||
CCtrlShapePolygon(const HWP_STRING& sCtrlID);
|
CCtrlShapePolygon(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapePolygon(const CCtrlGeneralShape& oShape);
|
CCtrlShapePolygon(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapePolygon(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapePolygon(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapePolygon(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapePolygon(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeRect::CCtrlShapeRect(const HWP_STRING& sCtrlID, int nSize, CHWPStream&
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeRect::CCtrlShapeRect(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeRect::CCtrlShapeRect(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_chCurv = (HWP_BYTE)oReader.GetAttributeInt("ratio");
|
m_chCurv = (HWP_BYTE)oReader.GetAttributeInt("ratio");
|
||||||
@ -45,7 +45,7 @@ CCtrlShapeRect::CCtrlShapeRect(const HWP_STRING& sCtrlID, CXMLReader& oReader, i
|
|||||||
else if ("hc:pt3" == sNodeName)
|
else if ("hc:pt3" == sNodeName)
|
||||||
READ_POINT(3)
|
READ_POINT(3)
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ public:
|
|||||||
CCtrlShapeRect(const HWP_STRING& sCtrlID);
|
CCtrlShapeRect(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeRect(const CCtrlGeneralShape& oShape);
|
CCtrlShapeRect(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeRect(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeRect(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeRect(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeRect(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ CCtrlShapeTextArt::CCtrlShapeTextArt(const HWP_STRING& sCtrlID, int nSize, CHWPS
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeTextArt::CCtrlShapeTextArt(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeTextArt::CCtrlShapeTextArt(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
m_sText = oReader.GetAttribute("text");
|
m_sText = oReader.GetAttribute("text");
|
||||||
@ -89,7 +89,7 @@ CCtrlShapeTextArt::CCtrlShapeTextArt(const HWP_STRING& sCtrlID, CXMLReader& oRea
|
|||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
}
|
}
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public:
|
|||||||
CCtrlShapeTextArt(const HWP_STRING& sCtrlID);
|
CCtrlShapeTextArt(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeTextArt(const CCtrlGeneralShape& oShape);
|
CCtrlShapeTextArt(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeTextArt(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeTextArt(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeTextArt(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeTextArt(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ CCtrlShapeVideo::CCtrlShapeVideo(const HWP_STRING& sCtrlID, int nSize, CHWPStrea
|
|||||||
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlShapeVideo::CCtrlShapeVideo(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlShapeVideo::CCtrlShapeVideo(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
: CCtrlGeneralShape(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
@ -38,7 +38,7 @@ CCtrlShapeVideo::CCtrlShapeVideo(const HWP_STRING& sCtrlID, CXMLReader& oReader,
|
|||||||
END_READ_ATTRIBUTES(oReader)
|
END_READ_ATTRIBUTES(oReader)
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE(oReader)
|
WHILE_READ_NEXT_NODE(oReader)
|
||||||
CCtrlGeneralShape::ParseChildren(oReader, nVersion);
|
CCtrlGeneralShape::ParseChildren(oReader, nVersion, eType);
|
||||||
END_WHILE
|
END_WHILE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ public:
|
|||||||
CCtrlShapeVideo(const HWP_STRING& sCtrlID);
|
CCtrlShapeVideo(const HWP_STRING& sCtrlID);
|
||||||
CCtrlShapeVideo(const CCtrlGeneralShape& oShape);
|
CCtrlShapeVideo(const CCtrlGeneralShape& oShape);
|
||||||
CCtrlShapeVideo(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlShapeVideo(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlShapeVideo(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlShapeVideo(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
|
|
||||||
EShapeType GetShapeType() const override;
|
EShapeType GetShapeType() const override;
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ CCtrlTable::CCtrlTable(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer
|
|||||||
: CCtrlCommon(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
: CCtrlCommon(sCtrlID, nSize, oBuffer, nOff, nVersion)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CCtrlTable::CCtrlTable(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion)
|
CCtrlTable::CCtrlTable(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: CCtrlCommon(sCtrlID, oReader, nVersion)
|
: CCtrlCommon(sCtrlID, oReader, nVersion)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class CCtrlTable : public CCtrlCommon
|
|||||||
public:
|
public:
|
||||||
CCtrlTable(const HWP_STRING& sCtrlID);
|
CCtrlTable(const HWP_STRING& sCtrlID);
|
||||||
CCtrlTable(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
CCtrlTable(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion);
|
||||||
CCtrlTable(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion);
|
CCtrlTable(const HWP_STRING& sCtrlID, CXMLReader& oReader, int nVersion, EHanType eType);
|
||||||
~CCtrlTable();
|
~CCtrlTable();
|
||||||
|
|
||||||
ECtrlObjectType GetCtrlType() const override;
|
ECtrlObjectType GetCtrlType() const override;
|
||||||
|
|||||||
@ -26,26 +26,26 @@
|
|||||||
namespace HWP
|
namespace HWP
|
||||||
{
|
{
|
||||||
CHWPPargraph::CHWPPargraph()
|
CHWPPargraph::CHWPPargraph()
|
||||||
: m_pLineSegs(nullptr)
|
: m_chBreakType(0), m_pLineSegs(nullptr), m_shParaShapeID(0), m_shParaStyleID(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
CHWPPargraph::CHWPPargraph(CXMLReader& oReader, int nVersion, EHanType eType)
|
CHWPPargraph::CHWPPargraph(CXMLReader& oReader, int nVersion, EHanType eType)
|
||||||
: m_chBreakType(0), m_pLineSegs(nullptr)
|
: m_chBreakType(0), m_pLineSegs(nullptr), m_shParaShapeID(0), m_shParaStyleID(0)
|
||||||
{
|
{
|
||||||
START_READ_ATTRIBUTES(oReader)
|
START_READ_ATTRIBUTES(oReader)
|
||||||
{
|
{
|
||||||
if (GetArgumentName(EArgument::ParaShape, eType) == sAttributeName)
|
if (GetAttributeName(EAttribute::ParaShape, eType) == sAttributeName)
|
||||||
m_shParaShapeID = oReader.GetInt();
|
m_shParaShapeID = oReader.GetInt();
|
||||||
else if (GetArgumentName(EArgument::Style, eType) == sAttributeName)
|
else if (GetAttributeName(EAttribute::Style, eType) == sAttributeName)
|
||||||
m_shParaStyleID = oReader.GetInt();
|
m_shParaStyleID = oReader.GetInt();
|
||||||
else if (GetArgumentName(EArgument::PageBreak, eType) == sAttributeName)
|
else if (GetAttributeName(EAttribute::PageBreak, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
if (oReader.GetBool())
|
if (oReader.GetBool())
|
||||||
m_chBreakType |= 0b00000100;
|
m_chBreakType |= 0b00000100;
|
||||||
else
|
else
|
||||||
m_chBreakType &= 0b11111011;
|
m_chBreakType &= 0b11111011;
|
||||||
}
|
}
|
||||||
else if (GetArgumentName(EArgument::ColumnBreak, eType) == sAttributeName)
|
else if (GetAttributeName(EAttribute::ColumnBreak, eType) == sAttributeName)
|
||||||
{
|
{
|
||||||
if (oReader.GetBool())
|
if (oReader.GetBool())
|
||||||
m_chBreakType |= 0b00001000;
|
m_chBreakType |= 0b00001000;
|
||||||
@ -61,7 +61,7 @@ CHWPPargraph::CHWPPargraph(CXMLReader& oReader, int nVersion, EHanType eType)
|
|||||||
{
|
{
|
||||||
if (GetNodeName(ENode::Text, eType) == sNodeName)
|
if (GetNodeName(ENode::Text, eType) == sNodeName)
|
||||||
{
|
{
|
||||||
nCharShapeID = oReader.GetAttributeInt(GetArgumentName(EArgument::CharShape, eType));
|
nCharShapeID = oReader.GetAttributeInt(GetAttributeName(EAttribute::CharShape, eType));
|
||||||
|
|
||||||
WHILE_READ_NEXT_NODE_WITH_DEPTH(oReader, Child)
|
WHILE_READ_NEXT_NODE_WITH_DEPTH(oReader, Child)
|
||||||
ParseHWPParagraph(oReader, nCharShapeID, nVersion, eType);
|
ParseHWPParagraph(oReader, nCharShapeID, nVersion, eType);
|
||||||
@ -89,7 +89,7 @@ CHWPPargraph::~CHWPPargraph()
|
|||||||
delete m_pLineSegs;
|
delete m_pLineSegs;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHWPPargraph::ParseHWPParagraph(CXMLReader& oReader, int nCharShapeID, int nVersion, HWP::EHanType eType)
|
bool CHWPPargraph::ParseHWPParagraph(CXMLReader& oReader, int nCharShapeID, int nVersion, EHanType eType)
|
||||||
{
|
{
|
||||||
const size_t unCurrentParaCount = m_arP.size();
|
const size_t unCurrentParaCount = m_arP.size();
|
||||||
|
|
||||||
@ -143,33 +143,33 @@ bool CHWPPargraph::ParseHWPParagraph(CXMLReader& oReader, int nCharShapeID, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (GetNodeName(ENode::Table, eType) == sNodeName)
|
else if (GetNodeName(ENode::Table, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlTable(L" lbt", oReader, nVersion));
|
m_arP.push_back(new CCtrlTable(L" lbt", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Picture, eType) == sNodeName)
|
else if (GetNodeName(ENode::Picture, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapePic(L"cip$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapePic(L"cip$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Container, eType) == sNodeName)
|
else if (GetNodeName(ENode::Container, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlContainer(L"noc$", oReader, nVersion));
|
m_arP.push_back(new CCtrlContainer(L"noc$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Ole, eType) == sNodeName)
|
else if (GetNodeName(ENode::Ole, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeOle(L"elo$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeOle(L"elo$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Equation, eType) == sNodeName)
|
else if (GetNodeName(ENode::Equation, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlEqEdit(L"deqe", oReader, nVersion));
|
m_arP.push_back(new CCtrlEqEdit(L"deqe", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Line, eType) == sNodeName)
|
else if (GetNodeName(ENode::Line, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeLine(L"nil$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeLine(L"nil$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Rectangle, eType) == sNodeName)
|
else if (GetNodeName(ENode::Rectangle, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeRect(L"cer$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeRect(L"cer$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Ellipse, eType) == sNodeName)
|
else if (GetNodeName(ENode::Ellipse, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeEllipse(L"lle$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeEllipse(L"lle$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Arc, eType) == sNodeName)
|
else if (GetNodeName(ENode::Arc, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeArc(L"cra$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeArc(L"cra$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Polygon, eType) == sNodeName)
|
else if (GetNodeName(ENode::Polygon, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapePolygon(L"lop$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapePolygon(L"lop$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Curve, eType) == sNodeName)
|
else if (GetNodeName(ENode::Curve, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeCurve(L"ruc$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeCurve(L"ruc$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::ConnectLine, eType) == sNodeName)
|
else if (GetNodeName(ENode::ConnectLine, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeConnectLine(L"loc$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeConnectLine(L"loc$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::TextArt, eType) == sNodeName)
|
else if (GetNodeName(ENode::TextArt, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeTextArt(L"tat$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeTextArt(L"tat$", oReader, nVersion, eType));
|
||||||
else if (GetNodeName(ENode::Video, eType) == sNodeName)
|
else if (GetNodeName(ENode::Video, eType) == sNodeName)
|
||||||
m_arP.push_back(new CCtrlShapeVideo(L"div$", oReader, nVersion));
|
m_arP.push_back(new CCtrlShapeVideo(L"div$", oReader, nVersion, eType));
|
||||||
|
|
||||||
if (unCurrentParaCount != m_arP.size())
|
if (unCurrentParaCount != m_arP.size())
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user