Files
Hoops_Exchange/exchange/exchangesource/DumpFeatureTree/HXmlElement.cpp
2025-12-15 23:22:33 +08:00

165 lines
4.4 KiB
C++

#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)
{
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);
SetAttribute("style", acAttributValue);
LinkEndChild(new TiXmlText(sRTFFieldData.m_pcText));
A3DMkpRTFFieldGet(NULL, &sRTFFieldData);
}
//add_element( " -");
A3DMkpRTFFieldDelete(pRTF);
}
}
#else // ifdef COMPUTE_RTF_STRING
void HXmlElement::add_value( const char* pcValue, bool /*bRTF*/)
{
this->LinkEndChild( new TiXmlText(pcValue));
}
#endif // ifdef COMPUTE_RTF_STRING
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( const 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( const 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);
}