#ifndef HWPPARGRAPH_H #define HWPPARGRAPH_H #include "LineSeg.h" #include "RangeTag.h" #include "Ctrl.h" #include "../Common/XMLReader.h" #include "../HanType.h" namespace HWP { enum class EParagraphType { Normal, Cap, Cell }; class CHWPPargraph : public IRef { short m_shParaShapeID; // HWPTAG_PARA_HEADER short m_shParaStyleID; // HWPTAG_PARA_HEADER HWP_BYTE m_chBreakType; // HWPTAG_PARA_HEADER CLineSeg *m_pLineSegs; // HWPTAG_PARA_LINE_SEG VECTOR m_arRangeTags; // HWPTAG_PARA_RANGE_TAG VECTOR m_arP; //HWPTAG_PARA_TEXT bool ParseHWPParagraph(CXMLReader& oReader, int nCharShapeID, EHanType eType); public: CHWPPargraph(); CHWPPargraph(CXMLReader& oReader, EHanType eType); virtual ~CHWPPargraph(); virtual EParagraphType GetType() const; void SetLineSeg(CLineSeg* pLineSeg); void AddRangeTag(const TRangeTag& oRangeTag); void AddCtrl(CCtrl* pCtrl); void AddCtrls(const LIST& arCtrls); bool SetCtrl(CCtrl* pCtrl, unsigned int unIndex); VECTOR& GetCtrls(); VECTOR GetCtrls() const; unsigned int GetCountCtrls() const; short GetShapeID() const; short GetStyleID() const; HWP_BYTE GetBreakType() const; const CLineSeg* GetLineSeg() const; VECTOR GetRangeTags() const; static CHWPPargraph* Parse(int nTagNum, int nLevel, int nSize, CHWPStream& oBuffer, int nOff, int nVersion); static int Parse(CHWPPargraph& oPara, int nSize, CHWPStream& oBuffer, int nOff, int nVersion); CCtrl* FindFirstElement(const HWP_STRING& sID, bool bFullfilled, unsigned int& nIndex) const; CCtrl* FindLastElement(const HWP_STRING& sID); int IndexOf(CCtrl* pCtrl); }; } #endif // HWPPARGRAPH_H