This commit is contained in:
ninja
2025-12-15 22:06:49 +08:00
commit 2b56cf87a8
225 changed files with 63711 additions and 0 deletions

View File

@@ -0,0 +1,164 @@
#include "HXmlElement.h"
#ifdef COMPUTE_RTF_STRING
#include <A3DSDKIncludes.h>
#endif
HXmlElement* HXmlElement::add_element( const char* pcText)
{
HXmlElement* psElement = new HXmlElement(pcText);
this->LinkEndChild( psElement);
return psElement;
}
HXmlElement* HXmlElement::add_element_with_id( const char* pcText, const char* pcTextId)
{
HXmlElement* psElement = new HXmlElement(pcText);
this->LinkEndChild( psElement);
psElement->SetAttribute("id", pcTextId);
return psElement;
}
HXmlElement* HXmlElement::add_header( const char* pcText)
{
HXmlElement* psElementHeader = this->add_element("h2");
psElementHeader->LinkEndChild( new TiXmlText(pcText));
return psElementHeader;
}
#ifdef COMPUTE_RTF_STRING
void HXmlElement::add_value( const char* pcValue, bool bRTF)
{
if(bRTF == false)
{
this->LinkEndChild( new TiXmlText(pcValue));
}
char acAttributValue[1024];
//A3DVoid* pRTFData = NULL;
A3DUTF8Char* pRTFString = (A3DUTF8Char*)pcValue;
A3DMkpRTFField* pRTF = NULL;
if (A3DMkpRTFFieldCreate(pRTFString, &pRTF) == A3D_SUCCESS)
{
A3DMkpRTFFieldData sRTFFieldData;
A3D_INITIALIZE_DATA(A3DRTFFieldData, sRTFFieldData);
//add_element( "rtf - ");
while (A3DMkpRTFFieldGet(pRTF, &sRTFFieldData) == A3D_SUCCESS)
{
if(sRTFFieldData.m_pcFamilyName)
sprintf(acAttributValue, "font-family:%s;", sRTFFieldData.m_pcFamilyName);
this->SetAttribute("style", acAttributValue);
this->LinkEndChild(new TiXmlText(sRTFFieldData.m_pcText));
A3DMkpRTFFieldGet(NULL, &sRTFFieldData);
}
//add_element( " -");
A3DMkpRTFFieldDelete(pRTF);
}
}
#else
void HXmlElement::add_value( const char* pcValue, bool /*bRTF*/)
{
this->LinkEndChild( new TiXmlText(pcValue));
}
#endif
void HXmlElement::add_value(double dValue, int idecimal)
{
char acValue[1024];
snprintf(acValue,sizeof(acValue), "%.*f", idecimal, dValue);
return add_value(acValue);
}
void HXmlElement::add_value(int iValue)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), " %d", iValue);
return add_value(acValue);
}
HXmlElement* HXmlElement::add_element_and_value( char* pcText, const char* pcValue, bool bRTF)
{
HXmlElement* psElement = new HXmlElement(pcText);
psElement->add_value( pcValue, bRTF);
//psElement->LinkEndChild( new TiXmlText(pcValue));
this->LinkEndChild( psElement);
return psElement;
}
HXmlElement* HXmlElement::add_element_and_value( char* pcText, double dValue)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%f", dValue);
return add_element_and_value( pcText, acValue);
}
HXmlElement* HXmlElement::add_element_and_value( char* pcText, int iValue)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%d", iValue);
return add_element_and_value( pcText, acValue);
}
HXmlElement* HXmlElement::add_element_and_value( char* pcText, double dValue, int idecimal)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%.*f", idecimal, dValue);
return add_element_and_value( pcText, acValue);
}
void HXmlTableRow::add_cell( char* pcText, int span_count)
{
TiXmlElement* psCell = add_element( "TD");
psCell->LinkEndChild( new TiXmlText(pcText));
char acValue[1024];
if(span_count>0)
{
snprintf(acValue, sizeof(acValue), "%d", span_count);
psCell->SetAttribute("rowspan", acValue);
}
else if(span_count<0)
{
snprintf(acValue, sizeof(acValue), "%d", -1*span_count);
psCell->SetAttribute("colspan", acValue);
}
}
void HXmlTableRow::add_cell( char* pcText, int row_span, int col_span)
{
TiXmlElement* psCell = add_element( "TD");
psCell->LinkEndChild( new TiXmlText(pcText));
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%d", row_span);
psCell->SetAttribute("rowspan", acValue);
snprintf(acValue, sizeof(acValue), "%d", col_span);
psCell->SetAttribute("colspan", acValue);
}
void HXmlTableRow::add_cell_double( double dValue, int span_count)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%f", dValue);
add_cell( acValue, span_count);
}
void HXmlTableRow::add_cell_int( int iValue, int span_count)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%d", iValue);
add_cell( acValue, span_count);
}
void HXmlTableRow::add_cell_double_formated( double dValue, int idecimal, int span_count)
{
char acValue[1024];
snprintf(acValue, sizeof(acValue), "%.*f", idecimal, dValue);
add_cell( acValue, span_count);
}
void HXmlTableRow::add_rtf_cell( char* /*pcText*/, int span_count)
{
add_cell( "rtf", span_count);
}