Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

1468 lines
21 KiB
C++

#ifndef NODENAMES_H
#define NODENAMES_H
#include "../HanType.h"
#include <string>
namespace HWP
{
enum class ENode
{
//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,
Paragraph,
Text,
Char,
SectionDef,
Table,
Picture,
Container,
Ole,
Equation, //60
TextArt,
Line,
Rectangle,
Ellipse,
Arc,
Polygon,
Curve,
ConnectLine,
Tab,
LineBreak, //70
Hyphen,
NbSpace,
FwSpace,
Size,
Posistion,
OutSideMargin,
InSideMargin,
Caption,
TransformMatrix,
ScaleMatrix, //80
RotationMatrix,
LineShape,
ShadowEffect,
GlowEffect,
SoftEdgeEffect,
ReflectionEffect,
EffectsColor,
DrawText,
TextMargin,
Header, //90
Footer,
CellZoneList,
CellZone,
Row,
Cell,
AutoNum,
AutoNumFormat,
NewNum,
FieldBegin,
FieldEnd, //100
PageNum,
FootNote,
EndNote,
ParaList,
ColumnDef,
ColumnLine,
Script,
Point,
Segment,
StartNumber,
Hide,
PagePropertie,
PageMargin,
FootNotePropertie,
EndNotePropertie,
PageBorderFill,
PageOffset,
MasterPage,
//Only hwpx
Lineseg,
LinesegArray,
Video,
Switch,
Case,
Default,
Slash,
BackSlash
};
#define MAX_TYPES 2
#define MAX_NODES 126
static constexpr const char* NODE_NAMES[MAX_TYPES][MAX_NODES] =
{
// 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",
"hh: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",
"hp:p",
"hp:run",
"hp:t",
"hp:secPr",
"hp:tbl",
"hp:pic",
"hp:container",
"hp:ole",
"hp:equation", //60
"hp:textart",
"hp:line",
"hp:rect",
"hp:ellipse",
"hp:arc",
"hp:polygon",
"hp:curve",
"hp:connectLine",
"hp:tab",
"hp:lineBreak", //70
"hp:hyphen",
"hp:nbSpace",
"hp:fwSpace",
"hp:sz",
"hp:pos",
"hp:outMargin",
"hp:inMargin",
"hp:caption",
"hc:transMatrix",
"hc:scaMatrix",
"hc:rotMatrix",
"hp:lineShape",
"hp:shadow",
"hp:glow",
"hp:softEdge",
"hp:reflection",
"hp:effectsColor",
"hp:drawText",
"hp:textMargin",
"hp:header",
"hp:footer",
"hp:cellzoneList",
"hp:cellzone",
"hp:tr",
"hp:tc",
"hp:autoNum",
"hp:autoNumFormat",
"hp:newNum",
"hp:fieldBegin",
"hp:fieldEnd",
"hp:pageNum",
"hp:footNote",
"hp:endNote",
"hp:subList",
"hp:colPr",
"hp:colLine",
"hp:script",
"hc:pt",
"hp:seg",
"hp:startNum",
"hp:visibility",
"hp:pagePr",
"hp:margin",
"hp:footNotePr",
"hp:endNotePr",
"hp:pageBorderFill",
"hp:offset",
"hp:masterPage",
"hp:lineseg",
"hp:linesegarray",
"hp:video",
"hp:switch",
"hp:case",
"hp:default",
"hh:slash",
"hh:backSlash"
},
// HWPML
{
//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",
"P",
"TEXT",
"CHAR",
"SECDEF",
"TABLE",
"PICTURE",
"CONTAINER",
"OLE",
"EQUATION", //60
"TEXTART",
"LINE",
"RECTANGLE",
"ELLIPSE",
"ARC",
"POLYGON",
"CURVE",
"CONNECTLINE",
"TAB",
"LINEBREAK", //70
"HYPHEN",
"NBSPACE",
"FWSPACE",
"SIZE",
"POSITION",
"OUTSIDEMARGIN",
"INSIDEMARGIN",
"CAPTION",
"TRANSMATRIX",
"SCAMATRIX",
"ROTMATRIX",
"LINESHAPE",
"SHADOWEFFECT",
"GLOW",
"SOFTEDGE",
"REFLECTION",
"EFFECTSCOLOR",
"DRAWTEXT",
"TEXTMARGIN",
"HEADER",
"FOOTER",
"CELLZONELIST",
"CELLZONE",
"ROW",
"CELL",
"AUTONUM",
"AUTONUMFORMAT",
"NEWNUM",
"FIELDBEGIN",
"FIELDEND",
"PAGENUM",
"FOOTNOTE",
"ENDNOTE",
"PARALIST",
"COLDEF",
"COLUMNLINE",
"SCRIPT",
"POINT",
"SEGMENT",
"STARTNUMBER",
"HIDE",
"PAGEDEF",
"PAGEMARGIN",
"FOOTNOTESHAPE",
"ENDNOTESHAPE",
"PAGEBORDERFILL",
"PAGEOFFSET",
"MASTERPAGE",
"",
"",
"",
"",
"",
"",
"",
""
}
};
inline const char* GetNodeName(ENode eNode, EHanType eType)
{
switch (eType)
{
case EHanType::HWPX: return NODE_NAMES[0][static_cast<int>(eNode)];
case EHanType::HWPML: return NODE_NAMES[1][static_cast<int>(eNode)];
default: return "";
}
}
inline bool Equals(ENode eNode, EHanType eType, const std::string& sNodeName)
{
switch (eType)
{
case EHanType::HWPX: return NODE_NAMES[0][static_cast<int>(eNode)] == sNodeName;
case EHanType::HWPML: return NODE_NAMES[1][static_cast<int>(eNode)] == sNodeName;
default: return false;
}
}
enum class EAttribute
{
ParaShape,
StyleId,
CharShape,
Href,
SubPath,
MediaType,
Type,
FaceName,
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,
LockForm,
Name,
TextFlow,
TextWrap,
ZOrder,
NumberingType,
WidthRelTo,
HeightRelTo,
TreatAsChar, //110
AffectLSpacing,
VertRelTo,
VertAlign,
HorzRelTo,
HorzAlign,
VertOffset,
HorzOffset,
FlowWithText,
AllowOverlap,
Top, //120
Bottom,
Side,
FullSize,
Gap,
LastWidth,
MatrixElement1_1,
MatrixElement1_2,
MatrixElement2_1,
MatrixElement2_2,
MatrixElementOffsetX, // 130
MatrixElementOffsetY,
HeadStyle,
HeadSize,
TailStyle,
TailSize,
Radius,
Direction,
Distance,
RotationStyle,
FadeDirection, //140
BinData,
RepeatHeader,
RowCount,
ColCount,
CellSpacing,
StartRowAddr,
StartColAddr,
EndRowAddr,
EndColAddr,
NumberType, //150
SuperScript,
SubScript,
FieldId,
Pos,
FormatType,
SideChar,
ColumnCount,
SameSize,
SameGap,
Version, //160
BaseLine,
BaseUnit,
LineMode,
X,
Y,
X1,
Y1,
X2,
Y2,
FontName, //170
FontStyle,
FontType,
TextShape,
Spacing,
Style,
TextDirection,
SpaceColumns,
TabStop,
OutlineShapeId,
PageStartsOn,
Page,
Figure,
Table,
Equation,
HideHeader,
HideFooter,
HideMasterPage,
HideBorder,
HideFill,
HidePageNumPos,
HideEmptyLine,
Landscape,
GutterType,
Header,
Footer,
Gutter,
TextBorder,
HeaderInside,
FooterInside,
FillArea,
PageBreak,
ColumnBreak,
};
#define MAX_ATTRIBUTES 202
//TODO:: добавить все аргументы
static constexpr const char* ATTRUBUTE_NAMES[MAX_TYPES][MAX_ATTRIBUTES] =
{
// HWPX
{
"paraPrIDRef",
"styleIDRef",
"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",
"",
"align",
"verAlign",
"", //70
"tabPrIDRef",
"breakLatinWord",
"breakNonLatinWord",
"",
"widowOrphan",
"keepWithNext",
"",
"pageBreakBefore",
"",
"", //80
"LineWrap",
"eAsianEng",
"eAsianNum",
"indent",
"left",
"right",
"prev",
"next",
"",
"", //90
"borderFillIDRef",
"offsetLeft",
"offsetRight",
"offsetTop",
"offsetBottom",
"connect",
"ignoreMargin",
"engName",
"nextStyleIDRef",
"langID", //100
"id",
"lockForm",
"name",
"textFlow",
"textWrap",
"zOrder",
"numberingType",
"widthRelTo",
"heightRelTo",
"treatAsChar", //110
"affectLSpacing",
"vertRelTo",
"vertAlign",
"horzRelTo",
"horzAlign",
"vertOffset",
"horzOffset",
"flowWithText",
"allowOverlap",
"top", //120
"bottom",
"side",
"fullSz",
"gap",
"lastWidth",
"e1",
"e2",
"e4",
"e5",
"e3",
"e6",
"headStyle",
"headSz",
"tailStyle",
"tailSz",
"radius",
"direction",
"distance",
"rotationStyle",
"fadeDirection",
"id",
"repeatHeader",
"rowCnt",
"colCnt",
"cellSpacing",
"startRowAddr",
"startColAddr",
"endRowAddr",
"endColAddr",
"numType",
"supscript",
"subscript",
"fieldid",
"pos",
"formatType",
"sideChar",
"colCount",
"sameSz",
"sameGap",
"version",
"baseLine",
"baseUnit",
"lineMode",
"x",
"y",
"x1",
"y1",
"x2",
"y2",
"fontName",
"fontStyle",
"fontType",
"textShape",
"spacing",
"style",
"textDirection",
"spaceColumns",
"tabStop",
"outlineShapeIDRef",
"pageStartsOn",
"page",
"pic",
"tbl",
"equation",
"hideFirstHeader",
"hideFirstFooter",
"hideFirstMasterPage",
"border",
"fill",
"hideFirstPageNum",
"hideFirstEmptyLine",
"landscape",
"gutterType",
"header",
"footer",
"gutter",
"textBorder",
"headerInside",
"footerInside",
"fillArea",
"pageBreak",
"columnBreak"
},
// HWPML
{
"ParaShape",
"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",
"LockForm",
"Name",
"TextFlow",
"TextWrap",
"ZOrder",
"NumberingType",
"WidthRelTo",
"HeightRelTo",
"TreatAsChar",
"AffectLSpacing",
"VertRelTo",
"VertAlign",
"HorzRelTo",
"HorzAlign",
"VertOffset",
"HorzOffset",
"FlowWithText",
"AllowOverlap",
"Top",
"Bottom",
"Side",
"FullSize",
"Gap",
"LastWidth",
"E1",
"E2",
"E4",
"E5",
"E3",
"E6",
"HeadStyle",
"HeadSize",
"TailStyle",
"TailSize",
"Radius",
"Direction",
"Distance",
"RotationStyle",
"FadeDirection",
"BinData",
"RepeatHeader",
"RowCount",
"ColCount",
"CellSpacing",
"StartRowAddr",
"StartColAddr",
"EndRowAddr",
"EndColAddr",
"NumberType",
"Superscript",
"Subscript",
"InstId",
"Pos",
"FormatType",
"SideChar",
"Count",
"SameSize",
"SameGap",
"Version",
"BaseUnit",
"BaseLine",
"LineMode",
"X",
"Y",
"X1",
"Y1",
"X2",
"Y2",
"FontName",
"FontStyle",
"FontType",
"TextShape",
"Spacing",
"Style",
"TextDirection",
"SpaceColumns",
"TabStop",
"OutlineShape",
"PageStartsOn",
"Page",
"Figure",
"Table",
"Equation",
"Header",
"Footer",
"MasterPage",
"Border",
"Fill",
"PageNumPos",
"EmptyLine",
"Landscape",
"GutterType",
"Header",
"Footer",
"Gutter",
"TextBorder",
"HeaderInside",
"FooterInside",
"FillArea",
"PageBreak",
"ColumnBreak"
}
};
inline const char* GetAttributeName(EAttribute eNode, EHanType eType)
{
switch (eType)
{
case EHanType::HWPX: return ATTRUBUTE_NAMES[0][static_cast<int>(eNode)];
case EHanType::HWPML: return ATTRUBUTE_NAMES[1][static_cast<int>(eNode)];
default: return "";
}
}
inline bool Equals(EAttribute eAttribute, EHanType eType, const std::string& sAttributeName)
{
switch (eType)
{
case EHanType::HWPX: return ATTRUBUTE_NAMES[0][static_cast<int>(eAttribute)] == sAttributeName;
case EHanType::HWPML: return ATTRUBUTE_NAMES[1][static_cast<int>(eAttribute)] == sAttributeName;
default: return false;
}
}
// 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,
BothSides,
LeftOnly,
RightOnly,
LargestOnly,
Square,
TopAndBottom, //30
BehindText,
InFrontOfText,
Figure,
Table,
Equation,
Top,
Bottom,
SmallSmall,
SmallMedium,
SmallLarge, //40
MediumSmall,
MediumMedium,
MediumLarge,
LargeSmall,
LargeMedium,
LargeLarge,
Normal,
Arrow,
Spear,
ConcaveArrow, //50
EmptyDiamond,
EmptyCircle,
EmptyBox,
RomanCapital,
LatinCapital,
CircledLatinCapital,
CircledLatinSmall,
HangulPhonetic,
Ideograph,
CircledIdeograph, //60
DecagonCircle,
DecagonCircleHanja,
Symbol,
UserChar,
Hyperlink,
Bookmark,
Line,
Curve,
Page,
Footnote, //70
Endnote,
TotalPage,
Inside,
Outside,
Paper,
Column,
Absolute,
Solid,
Dash,
Dot, //80
DashDot,
DashDotDot,
LongDash,
Circle,
DoubleSlim,
Thick,
SlimThick,
ThickSlim,
SlimThickSlim,
Diamond, //90
Box,
Discrete,
Outline,
Number,
Bullet,
Distribute,
DistributeSpace,
Justify,
Baseline,
Pie, //100
Chord,
TopLeft,
TopCenter,
TopRight,
BottomLeft,
BottomCenter,
BottomRight,
TopOuter,
BottomOuter,
TopInner, //110
BottomInner,
Both,
Even,
Odd,
LeftRight,
TopBottom,
Border
};
#define MAX_VALUES 117
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",
"BOTH_SIDES",
"LEFT_ONLY",
"RIGHT_ONLY",
"LARGEST_ONLY",
"SQUARE",
"TOP_AND_BOTTOM",
"BEHIND_TEXT",
"IN_FRONT_OF_TEXT",
"PICTURE",
"TABLE",
"EQUATION",
"TOP",
"BOTTOM",
"SMALL_SMALL",
"SMALL_MEDIUM",
"SMALL_LARGE",
"MEDIUM_SMALL",
"MEDIUM_MEDIUM",
"MEDIUM_LARGE",
"LARGE_SMALL",
"LARGE_MEDIUM",
"LARGE_LARGE",
"NORMAL",
"ARROW",
"SPEAR",
"CONCAVE_ARROW",
"EMPTY_DIAMOND",
"EMPTY_CIRCLE",
"EMPTY_BOX",
"ROMAN_CAPITAL",
"LATIN_CAPITAL",
"CIRCLED_LATIN_CAPITAL",
"CIRCLED_LATIN_SMALL",
"HANGUL_PHONETIC",
"IDEOGRAPH",
"CIRCLED_IDEOGRAPH",
"DECAGON_CIRCLE",
"DECAGON_CRICLE_HANGJA",
"SYMBOL",
"USER_CHAR",
"HYPERLINK",
"BOOKMARK",
"LINE",
"CURVE",
"PAGE",
"FOOTNOTE",
"ENDNOTE",
"TOTAL_PAGE",
"INSIDE",
"OUTSIDE",
"PAPER",
"COLUMN",
"ABSOLUTE",
"SOLID",
"DASH",
"DOT",
"DASH_DOT",
"DASH_DOT_DOT",
"LONG_DASH",
"CIRCLE",
"DOUBLE_SLIM",
"THICK",
"SLIM_THICK",
"THICK_SLIM",
"SLIM_THICK_SLIM",
"DIAMOND",
"BOX",
"DISCRETE",
"OUTLINE",
"NUMBER",
"BULLET",
"DISTRIBUTE",
"DISTRIBUTE_SPACE",
"JUSTIFY",
"BASELINE",
"PIE",
"CHORD",
"TOP_LEFT",
"TOP_CENTER",
"TOP_RIGHT",
"BOTTOM_LEFT",
"BOTTOM_CENTER",
"BOTTOM_RIGHT",
"TOP_OUTER",
"BOTTOM_OUTER",
"TOP_INNER",
"BOTTOM_INNER",
"BOTH",
"EVEN",
"ODD",
"LEFT_RIGHT",
"TOP_BOTTOM",
"BORDER"
},
//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",
"BothSides",
"LeftOnly",
"RightOnly",
"LargestOnly",
"Square",
"TopAndBottom",
"BehindText",
"InFrontOfText",
"Figure",
"Table",
"Equation",
"Top",
"Bottom",
"SmallSmall",
"SmallMedium",
"SmallLarge",
"MediumSmall",
"MediumMedium",
"MediumLarge",
"LargeSmall",
"LargeMedium",
"LargeLarge",
"Normal",
"Arrow",
"Spear",
"ConcaveArrow",
"EmptyDiamond",
"EmptyCircle",
"EmptyBox",
"RomanCapital",
"LatinCapital",
"CircledLatinCapital",
"CircledLatinSmall",
"HangulPhonetic",
"Ideograph",
"CircledIdeograph",
"DecagonCircle",
"DecagonCircleHanja",
"Symbol",
"UserChar",
"Hyperlink",
"Bookmark",
"Line",
"Curve",
"Page",
"Footnote",
"Endnote",
"TotalPage",
"Inside",
"Outside",
"Paper",
"Column",
"Absolute",
"Solid",
"Dash",
"Dot",
"DashDot",
"DashDotDot",
"LongDash",
"Circle",
"DoubleSlim",
"Thick",
"SlimThick",
"ThickSlim",
"SlimThickSlim",
"Diamond",
"Box",
"Discrete",
"Outline",
"Number",
"Bullet",
"Distribute",
"DistributeSpace",
"Justify",
"Baseline",
"Pie",
"Chord",
"TopLeft",
"TopCenter",
"TopRight",
"BottomLeft",
"BottomCenter",
"BottomRight",
"TopOuter",
"BottomOuter",
"TopInner",
"BottomInner",
"Both",
"Even",
"Odd",
"LeftRight",
"TopBottom",
"Border"
}
};
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 "";
}
}
#define CHECK_IF_ATTRIBUTE(type) if (GetAttributeName(EAttribute::type, eType) == sAttributeName)
#define CHECK_ELSE_IF_ATTRIBUTE(type) else CHECK_IF_ATTRIBUTE(type)
}
#endif // NODENAMES_H