This commit is contained in:
Elena Subbotina
2026-04-30 14:45:11 +03:00
parent a868451b5d
commit 4eca22efde
4 changed files with 139 additions and 102 deletions

View File

@ -17,7 +17,6 @@
namespace HTML
{
template<>
bool CAnchorTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -27,7 +26,6 @@ bool CAnchorTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
return true;
}
template<>
void CAnchorTag<CMDWriter>::Close(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -48,7 +46,6 @@ void CAnchorTag<CMDWriter>::Close(const NSCSS::CNode& oTagNode)
m_pWriter->WriteString(L")");
}
template<>
bool CBreakTag<CMDWriter>::Read(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -59,7 +56,6 @@ bool CBreakTag<CMDWriter>::Read(const NSCSS::CNode& oTagNode)
return true;
}
template<>
bool CPreformattedTag<CMDWriter>::Open()
{
if (!Valid())
@ -71,7 +67,6 @@ bool CPreformattedTag<CMDWriter>::Open()
return true;
}
template<>
void CPreformattedTag<CMDWriter>::Close(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -98,7 +93,6 @@ void CPreformattedTag<CMDWriter>::Close(const std::vector<NSCSS::CNode>& arSelec
m_pWriter->WriteBreakLine(false);
}
template<>
bool CHeaderTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -119,7 +113,6 @@ bool CHeaderTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
return true;
}
template<>
void CHeaderTag<CMDWriter>::Close()
{
if (Valid())
@ -383,7 +376,6 @@ bool ConvertFileToBase64(const std::wstring& wsFilePath, UINT unWidth, UINT unHe
return bResult;
}
template<>
bool CImageTag<CMDWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -492,7 +484,6 @@ bool CImageTag<CMDWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors)
return true;
}
template<>
bool CImageTag<CMDWriter>::ReadSVG(const std::vector<NSCSS::CNode>& arSelectors, const std::wstring& wsSVG)
{
if (!Valid())
@ -508,7 +499,6 @@ bool CImageTag<CMDWriter>::ReadSVG(const std::vector<NSCSS::CNode>& arSelectors,
return true;
}
template<>
bool CHorizontalRuleTag<CMDWriter>::Write(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -521,7 +511,6 @@ bool CHorizontalRuleTag<CMDWriter>::Write(const std::vector<NSCSS::CNode>& arSel
return true;
}
template<>
bool CBlockquoteTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -533,7 +522,6 @@ bool CBlockquoteTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelector
return true;
}
template<>
void CBlockquoteTag<CMDWriter>::Close()
{
if (!Valid())
@ -544,7 +532,6 @@ void CBlockquoteTag<CMDWriter>::Close()
m_pWriter->WriteBreakLine(false);
}
template<>
bool CListTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -566,7 +553,6 @@ bool CListTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
return true;
}
template<>
void CListTag<CMDWriter>::Close()
{
if (!Valid())
@ -575,7 +561,6 @@ void CListTag<CMDWriter>::Close()
m_pWriter->OutList();
}
template<>
bool CListElementTag<CMDWriter>::Open()
{
if (!Valid())
@ -598,11 +583,9 @@ bool CListElementTag<CMDWriter>::Open()
return true;
}
template<>
void CListElementTag<CMDWriter>::Close()
{}
template<>
bool CCodeTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -623,7 +606,6 @@ bool CCodeTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode)
return true;
}
template<>
void CCodeTag<CMDWriter>::Close()
{
if (!Valid())

View File

@ -7,51 +7,87 @@
namespace HTML
{
template<>
bool CAnchorTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors);
template<>
void CAnchorTag<CMDWriter>::Close(const NSCSS::CNode& oTagNode);
#define CLASS_TAG_LIGHT_MD(class_name)\
template<>\
class C ## class_name ## Tag<CMDWriter> : public INTERFACE_TAGS::I ## class_name ## Tag, public INTERFACE_TAGS::ITag<CMDWriter>
template<>
bool CBreakTag<CMDWriter>::Read(const NSCSS::CNode& oTagNode);
CLASS_TAG_LIGHT_MD(Anchor)
{
public:
CAnchorTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open(const std::vector<NSCSS::CNode>& arSelectors) override;
void Close(const NSCSS::CNode& oTagNode) override;
};
template<>
bool CPreformattedTag<CMDWriter>::Open();
template<>
void CPreformattedTag<CMDWriter>::Close(const std::vector<NSCSS::CNode>& arSelectors);
CLASS_TAG_LIGHT_MD(Break)
{
public:
CBreakTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Read(const NSCSS::CNode& oTagNode) override;
};
template<>
bool CHeaderTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode);
template<>
void CHeaderTag<CMDWriter>::Close();
CLASS_TAG_LIGHT_MD(Preformatted)
{
public:
CPreformattedTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open() override;
void Close(const std::vector<NSCSS::CNode>& arSelectors) override;
};
template<>
bool CImageTag<CMDWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors);
template<>
bool CImageTag<CMDWriter>::ReadSVG(const std::vector<NSCSS::CNode>& arSelectors, const std::wstring& wsSVG);
CLASS_TAG_LIGHT_MD(Header)
{
public:
CHeaderTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open(const NSCSS::CNode& oTagNode) override;
void Close() override;
};
template<>
bool CBlockquoteTag<CMDWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors);
template<>
void CBlockquoteTag<CMDWriter>::Close();
CLASS_TAG_LIGHT_MD(Image)
{
public:
CImageTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Read(const std::vector<NSCSS::CNode>& arSelectors) override;
bool ReadSVG(const std::vector<NSCSS::CNode>& arSelectors, const std::wstring& wsSVG) override;
};
template<>
bool CListTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode);
template<>
void CListTag<CMDWriter>::Close();
CLASS_TAG_LIGHT_MD(Blockquote)
{
public:
CBlockquoteTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open(const std::vector<NSCSS::CNode>& arSelectors) override;
void Close() override;
};
template<>
bool CHorizontalRuleTag<CMDWriter>::Write(const std::vector<NSCSS::CNode>& arSelectors);
CLASS_TAG_LIGHT_MD(List)
{
public:
CListTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open(const NSCSS::CNode& oTagNode) override;
void Close() override;
};
template<>
bool CListElementTag<CMDWriter>::Open();
template<>
void CListElementTag<CMDWriter>::Close();
CLASS_TAG_LIGHT_MD(HorizontalRule)
{
public:
CHorizontalRuleTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Write(const std::vector<NSCSS::CNode>& arSelectors) override;
};
template<>
bool CCodeTag<CMDWriter>::Open(const NSCSS::CNode& oTagNode);
template<>
void CCodeTag<CMDWriter>::Close();
CLASS_TAG_LIGHT_MD(ListElement)
{
public:
CListElementTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open() override;
void Close() override;
};
CLASS_TAG_LIGHT_MD(Code)
{
public:
CCodeTag(CMDWriter* pWriter) : INTERFACE_TAGS::ITag<CMDWriter>(pWriter) {}
bool Open(const NSCSS::CNode& oTagNode) override;
void Close() override;
};
struct TElementInfo
{

View File

@ -37,7 +37,6 @@ bool UpdateImageData(const std::wstring& wsImagePath, TImageData& oImageData);
const static double HTML_FONTS[7] = {7.5, 10, 12, 13.5, 18, 24, 36};
template<>
bool CAnchorTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
{
if(!Valid())
@ -84,7 +83,6 @@ bool CAnchorTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors
return true;
}
template<>
void CAnchorTag<COOXMLWriter>::Close(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -93,7 +91,6 @@ void CAnchorTag<COOXMLWriter>::Close(const NSCSS::CNode& oTagNode)
m_pWriter->ClearHyperlinkData();
}
template<>
bool CAbbrTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
{
if(!Valid())
@ -116,7 +113,6 @@ bool CAbbrTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors)
return true;
}
template<>
void CAbbrTag<COOXMLWriter>::Close()
{
if (!Valid())
@ -125,7 +121,6 @@ void CAbbrTag<COOXMLWriter>::Close()
m_pWriter->GetCurrentDocument()->WriteString(L"<w:r><w:fldChar w:fldCharType=\"end\"/></w:r>");
}
template<>
bool CBreakTag<COOXMLWriter>::Read(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -437,7 +432,6 @@ bool CImageTag<COOXMLWriter>::ReadSVG(const std::vector<NSCSS::CNode>& arSelecto
return true;
}
template<>
bool CFontTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode, size_t unLevel)
{
if (!Valid())
@ -473,7 +467,6 @@ bool CFontTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode, size_t unLevel)
return true;
}
template<>
bool CInputTag<COOXMLWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors)
{
if (!Valid())
@ -503,7 +496,6 @@ bool CInputTag<COOXMLWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors)
return true;
}
template<>
bool CBaseFontTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -728,7 +720,6 @@ bool CHorizontalRuleTag<COOXMLWriter>::Write(const std::vector<NSCSS::CNode>& ar
}
template<>
bool CListTag<COOXMLWriter>::Open(const NSCSS::CNode& oTagNode)
{
if (!Valid())
@ -772,7 +763,6 @@ bool CListTag<COOXMLWriter>::Open(const NSCSS::CNode& oTagNode)
return true;
}
template<>
void CListTag<COOXMLWriter>::Close()
{
if (!Valid())
@ -781,13 +771,11 @@ void CListTag<COOXMLWriter>::Close()
m_pWriter->CloseP();
}
template<>
bool CListElementTag<COOXMLWriter>::Open()
{
return Valid();
}
template<>
void CListElementTag<COOXMLWriter>::Close()
{
if (!Valid())
@ -1145,7 +1133,6 @@ std::wstring CalculateSidesToClean(UINT unColumnNumber, const std::vector<CTable
}
template<>
bool CHTMLTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode)
{
if (!Valid())

View File

@ -9,45 +9,77 @@
namespace HTML
{
template<>
bool CAnchorTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors);
template<>
void CAnchorTag<COOXMLWriter>::Close(const NSCSS::CNode& oTagNode);
template<>
bool CAbbrTag<COOXMLWriter>::Open(const std::vector<NSCSS::CNode>& arSelectors);
template<>
void CAbbrTag<COOXMLWriter>::Close();
template<>
bool CBreakTag<COOXMLWriter>::Read(const NSCSS::CNode& oTagNode);
template<>
bool CFontTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode, size_t unLevel);
template<>
bool CInputTag<COOXMLWriter>::Read(const std::vector<NSCSS::CNode>& arSelectors);
template<>
bool CBaseFontTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode);
template<>
bool CListTag<COOXMLWriter>::Open(const NSCSS::CNode& oTagNode);
template<>
void CListTag<COOXMLWriter>::Close();
template<>
bool CListElementTag<COOXMLWriter>::Open();
template<>
void CListElementTag<COOXMLWriter>::Close();
template<>
bool CHTMLTag<COOXMLWriter>::Apply(const NSCSS::CNode& oTagNode);
#define CLASS_TAG_LIGHT(class_name)\
template<>\
class C ## class_name ## Tag<COOXMLWriter> : public INTERFACE_TAGS::I ## class_name ## Tag, public INTERFACE_TAGS::ITag<COOXMLWriter>
CLASS_TAG_LIGHT(Anchor)
{
public:
CAnchorTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Open(const std::vector<NSCSS::CNode>& arSelectors) override;
void Close(const NSCSS::CNode& oTagNode) override;
};
CLASS_TAG_LIGHT(Abbr)
{
public:
CAbbrTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Open(const std::vector<NSCSS::CNode>& arSelectors) override;
void Close() override;
};
CLASS_TAG_LIGHT(Break)
{
public:
CBreakTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Read(const NSCSS::CNode& oTagNode) override;
};
CLASS_TAG_LIGHT(Font)
{
public:
CFontTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Apply(const NSCSS::CNode& oTagNode, size_t unLevel) override;
};
CLASS_TAG_LIGHT(Input)
{
public:
CInputTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Read(const std::vector<NSCSS::CNode>& arSelectors) override;
};
CLASS_TAG_LIGHT(BaseFont)
{
public:
CBaseFontTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Apply(const NSCSS::CNode& oTagNode) override;
};
CLASS_TAG_LIGHT(List)
{
public:
CListTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Open(const NSCSS::CNode& oTagNode) override;
void Close() override;
};
CLASS_TAG_LIGHT(ListElement)
{
public:
CListElementTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Open() override;
void Close() override;
};
CLASS_TAG_LIGHT(HTML)
{
public:
CHTMLTag(COOXMLWriter* pWriter) : INTERFACE_TAGS::ITag<COOXMLWriter>(pWriter) {}
bool Apply(const NSCSS::CNode& oTagNode) override;
};
CLASS_TAG_LIGHT(Division)
{
std::stack<UINT> m_arFootnoteIDs;