Files
DocumentServer-v-9.2.0/core/HwpFile/HwpDoc/Paragraph/CtrlShapeConnectLine.cpp
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

117 lines
3.4 KiB
C++

#include "CtrlShapeConnectLine.h"
namespace HWP
{
EConnectLineType GetConnectLineType(int nValue)
{
switch(static_cast<EConnectLineType>(nValue))
{
case EConnectLineType::STRAIGHT_NOARROW:
case EConnectLineType::STRAIGHT_ONEWAY:
case EConnectLineType::STRAIGHT_BOTH:
case EConnectLineType::STROKE_NOARROW:
case EConnectLineType::STROKE_ONEWAY:
case EConnectLineType::STROKE_BOTH:
case EConnectLineType::ARC_NOARROW:
case EConnectLineType::ARC_ONEWAY:
case EConnectLineType::ARC_BOTH:
return static_cast<EConnectLineType>(nValue);
default:
return EConnectLineType::null;
}
}
CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, int nSize, CHWPStream& oBuffer, int nOff, int nVersion)
: CCtrlGeneralShape(sCtrlID, nSize, oBuffer, nOff, nVersion)
{}
CCtrlShapeConnectLine::CCtrlShapeConnectLine(const HWP_STRING& sCtrlID, CXMLReader& oReader, EHanType eType)
: CCtrlGeneralShape(sCtrlID, oReader, eType)
{
switch(eType)
{
case EHanType::HWPX: ReadFromHWPX (oReader); return;
case EHanType::HWPML: ReadFromHWPML(oReader); return;
default: break;
}
}
void CCtrlShapeConnectLine::ReadFromHWPX(CXMLReader &oReader)
{
m_eType = GetConnectLineType(oReader.GetAttributeInt("type"));
WHILE_READ_NEXT_NODE_WITH_NAME(oReader)
{
if ("hp:startPt" == sNodeName)
{
START_READ_ATTRIBUTES(oReader)
{
if ("x" == sAttributeName)
m_oStartPt.m_nX = oReader.GetInt();
else if ("y" == sAttributeName)
m_oStartPt.m_nY = oReader.GetInt();
else if ("subjectIDRef" == sAttributeName)
m_oStartPt.m_shSubjectIDRef = oReader.GetInt();
else if ("subjectIdx" == sAttributeName)
m_oStartPt.m_shSubjectIdx = oReader.GetInt();
}
END_READ_ATTRIBUTES(oReader)
}
else if ("hp:endPt" == sNodeName)
{
START_READ_ATTRIBUTES(oReader)
{
if ("x" == sAttributeName)
m_oEndPt.m_nX = oReader.GetInt();
else if ("y" == sAttributeName)
m_oEndPt.m_nY = oReader.GetInt();
else if ("subjectIDRef" == sAttributeName)
m_oEndPt.m_shSubjectIDRef = oReader.GetInt();
else if ("subjectIdx" == sAttributeName)
m_oEndPt.m_shSubjectIdx = oReader.GetInt();
}
END_READ_ATTRIBUTES(oReader)
}
else
CCtrlGeneralShape::ParseChildren(oReader, EHanType::HWPX);
}
END_WHILE
}
void CCtrlShapeConnectLine::ReadFromHWPML(CXMLReader &oReader)
{
START_READ_ATTRIBUTES(oReader)
{
if ("Type" == sAttributeName)
// TODO:: реализовать при встрече
m_eType = EConnectLineType::STRAIGHT_NOARROW;
else if ("StartX" == sAttributeName)
m_oStartPt.m_nX = oReader.GetInt();
else if ("StartY" == sAttributeName)
m_oStartPt.m_nY = oReader.GetInt();
else if ("EndX" == sAttributeName)
m_oEndPt.m_nX = oReader.GetInt();
else if ("EndY" == sAttributeName)
m_oEndPt.m_nY = oReader.GetInt();
else if ("StartSubjectID" == sAttributeName)
m_oStartPt.m_shSubjectIDRef = oReader.GetInt();
else if ("StartSubjectIndex" == sAttributeName)
m_oStartPt.m_shSubjectIdx = oReader.GetInt();
else if ("EndSubjectID" == sAttributeName)
m_oEndPt.m_shSubjectIDRef = oReader.GetInt();
else if ("EndSubjectIndex" == sAttributeName)
m_oEndPt.m_shSubjectIdx = oReader.GetInt();
}
END_READ_ATTRIBUTES(oReader)
WHILE_READ_NEXT_NODE(oReader)
CCtrlGeneralShape::ParseChildren(oReader, EHanType::HWPML);
END_WHILE
}
EShapeType CCtrlShapeConnectLine::GetShapeType() const
{
return EShapeType::ConnectLine;
}
}