Files
GTASource/game/frontend/html/htmllanguage.cpp
T
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

210 lines
6.0 KiB
C++

//
// filename: htmllanguage.cpp
// description:
//
// --- Include Files ------------------------------------------------------------
// C headers
// Rage headers
#include "system/memory.h"
// Game headers
#include "htmllanguage.h"
// --- Defines ------------------------------------------------------------------
// --- Constants ----------------------------------------------------------------
// --- Structure/Class Definitions ----------------------------------------------
// --- Globals ------------------------------------------------------------------
// --- Static Globals -----------------------------------------------------------
// --- Static class members -----------------------------------------------------
CHtmlLanguage* CHtmlLanguage::sm_pCurrent = NULL;
// --- Code ---------------------------------------------------------------------
CHtmlLanguage::CHtmlLanguage()
{
SetElementTag(HTML_HTML, "html");
SetElementTag(HTML_TITLE, "title");
SetElementTag(HTML_HEAD, "head");
SetElementTag(HTML_A, "a");
SetElementTag(HTML_BODY, "body");
SetElementTag(HTML_DIV, "div");
SetElementTag(HTML_EMBED, "embed");
SetElementTag(HTML_HEADING1, "h1");
SetElementTag(HTML_HEADING2, "h2");
SetElementTag(HTML_HEADING3, "h3");
SetElementTag(HTML_HEADING4, "h4");
SetElementTag(HTML_HEADING5, "h5");
SetElementTag(HTML_HEADING6, "h6");
SetElementTag(HTML_LINK, "link");
SetElementTag(HTML_META, "meta");
SetElementTag(HTML_OBJECT, "object");
SetElementTag(HTML_PARAGRAPH, "p");
SetElementTag(HTML_SPAN, "span");
SetElementTag(HTML_PARAM, "param");
SetElementTag(HTML_BREAK, "br");
SetElementTag(HTML_EMPHASIZED, "em");
SetElementTag(HTML_STRONG, "strong");
SetElementTag(HTML_CODE, "code");
SetElementTag(HTML_BOLD, "b");
SetElementTag(HTML_ITALIC, "i");
SetElementTag(HTML_CENTER, "center");
SetElementTag(HTML_UNORDERED_LIST, "ul");
SetElementTag(HTML_LISTITEM, "li");
SetElementTag(HTML_ORDERED_LIST, "ol");
SetElementTag(HTML_SCRIPTOBJ, "scriptobj");
SetElementTag(HTML_STYLE, "style");
SetElementTag(HTML_TABLE, "table");
SetElementTag(HTML_TABLEROW, "tr");
SetElementTag(HTML_TABLEHEADER, "th");
SetElementTag(HTML_TABLEENTRY, "td");
SetElementTag(HTML_TEXT, "text");
SetElementTag(HTML_IMAGE, "img");
SetElementTag(HTML_DEFLIST, "dl");
SetElementTag(HTML_DEFTERM, "dt");
SetElementTag(HTML_DEFDESC, "dd");
SetAttributeTag(HTML_ATTR_ALIGN, "align");
SetAttributeTag(HTML_ATTR_ALINK, "alink");
SetAttributeTag(HTML_ATTR_LINK, "link");
SetAttributeTag(HTML_ATTR_ALT, "alt");
SetAttributeTag(HTML_ATTR_BACKGROUND, "background");
SetAttributeTag(HTML_ATTR_BGCOLOR, "bgcolor");
SetAttributeTag(HTML_ATTR_BORDER, "border");
SetAttributeTag(HTML_ATTR_BORDERCOLOR, "bordercolor");
SetAttributeTag(HTML_ATTR_CELLSPACING, "cellspacing");
SetAttributeTag(HTML_ATTR_CELLPADDING, "cellpadding");
SetAttributeTag(HTML_ATTR_CLASS, "class");
SetAttributeTag(HTML_ATTR_COLOR, "color");
SetAttributeTag(HTML_ATTR_COLSPAN, "colspan");
SetAttributeTag(HTML_ATTR_CONTENT, "content");
SetAttributeTag(HTML_ATTR_HEIGHT, "height");
SetAttributeTag(HTML_ATTR_HREF, "href");
SetAttributeTag(HTML_ATTR_MARGINHEIGHT, "marginheight");
SetAttributeTag(HTML_ATTR_MARGINWIDTH, "marginwidth");
SetAttributeTag(HTML_ATTR_NAME, "name");
SetAttributeTag(HTML_ATTR_ROWSPAN, "rowspan");
SetAttributeTag(HTML_ATTR_SRC, "src");
SetAttributeTag(HTML_ATTR_STYLE, "style");
SetAttributeTag(HTML_ATTR_VALIGN, "valign");
SetAttributeTag(HTML_ATTR_WIDTH, "width");
SetValueTag(HTML_ALIGN_LEFT, "left");
SetValueTag(HTML_ALIGN_RIGHT, "right");
SetValueTag(HTML_ALIGN_CENTER, "center");
SetValueTag(HTML_ALIGN_JUSTIFY, "justify");
SetValueTag(HTML_ALIGN_TOP, "top");
SetValueTag(HTML_ALIGN_BOTTOM, "bottom");
SetValueTag(HTML_ALIGN_MIDDLE, "middle");
SetValueTag(HTML_ALIGN_INHERIT, "inherit");
SetValueTag(HTML_XXLARGE, "xx-large");
SetValueTag(HTML_XLARGE, "x-large");
SetValueTag(HTML_LARGE, "large");
SetValueTag(HTML_MEDIUM, "medium");
SetValueTag(HTML_SMALL, "small");
SetValueTag(HTML_XSMALL, "x-small");
SetValueTag(HTML_XXSMALL, "xx-small");
SetValueTag(HTML_BLOCK, "block");
SetValueTag(HTML_INLINE, "inline");
SetValueTag(HTML_NONE, "none");
SetValueTag(HTML_SOLID, "solid");
SetValueTag(HTML_UNDERLINE, "underline");
SetValueTag(HTML_OVERLINE, "overline");
SetValueTag(HTML_LINETHROUGH, "line-through");
SetValueTag(HTML_BLINK, "blink");
SetValueTag(HTML_REPEAT, "repeat");
SetValueTag(HTML_NO_REPEAT, "no-repeat");
SetValueTag(HTML_REPEAT_X, "repeat-x");
SetValueTag(HTML_REPEAT_Y, "repeat-y");
SetValueTag(HTML_COLLAPSE, "collapse");
SetValueTag(HTML_SEPARATE, "separate");
}
CHtmlLanguage& CHtmlLanguage::GetCurrent()
{
if(sm_pCurrent == NULL)
sm_pCurrent = rage_new CHtmlLanguage;
return *sm_pCurrent;
}
void CHtmlLanguage::SetElementTag(HtmlElementTag id, const char* pTag)
{
atString tag(pTag);
tag.Lowercase();
m_elementTagMap.Insert(tag, id);
}
HtmlElementTag CHtmlLanguage::GetElementId(const char* pTag)
{
HtmlElementTag* pId;
sysMemStartTemp();
{
atString tag(pTag);
tag.Lowercase();
pId = m_elementTagMap.Access(tag);
}
sysMemEndTemp();
if(pId)
return *pId;
return HTML_ELEMENT_INVALID;
}
void CHtmlLanguage::SetAttributeTag(HtmlAttributeTag id, const char* pTag)
{
atString tag(pTag);
tag.Lowercase();
m_attrTagMap.Insert(tag, id);
}
HtmlAttributeTag CHtmlLanguage::GetAttributeId(const char* pTag)
{
atString tag(pTag);
tag.Lowercase();
HtmlAttributeTag* pId = m_attrTagMap.Access(tag);
if(pId)
return *pId;
return HTML_ATTR_INVALID;
}
void CHtmlLanguage::SetValueTag(HtmlValueTag id, const char* pTag)
{
atString tag(pTag);
tag.Lowercase();
m_valueTagMap.Insert(tag, id);
}
HtmlValueTag CHtmlLanguage::GetValueId(const char* pTag)
{
atString tag(pTag);
tag.Lowercase();
HtmlValueTag* pId = m_valueTagMap.Access(tag);
if(pId)
return *pId;
return HTML_VALUE_INVALID;
}
Color32 CHtmlLanguage::GetColor(const char* pColour)
{
u32 color=0xffffffff;
// hexadecimal colour
if(*pColour == '#')
{
sscanf(pColour+1, "%x", &color);
}
return Color32(color | 0xff000000);
}