// INTERNAL INCLUDES
#include <dali-toolkit/internal/text/font-description-run.h>
+#include <dali-toolkit/internal/text/markup-processor-attribute-helper-functions.h>
#include <dali-toolkit/internal/text/markup-processor-helper-functions.h>
+#include <dali-toolkit/internal/text/markup-tags-and-attributes.h>
#include <dali-toolkit/internal/text/text-font-style.h>
namespace Dali
{
namespace
{
-const std::string XHTML_FAMILY_ATTRIBUTE("family");
-const std::string XHTML_SIZE_ATTRIBUTE("size");
-const std::string XHTML_WEIGHT_ATTRIBUTE("weight");
-const std::string XHTML_WIDTH_ATTRIBUTE("width");
-const std::string XHTML_SLANT_ATTRIBUTE("slant");
-
const std::string FONT_PREFIX("font-");
const unsigned int FONT_PREFIX_LENGTH = 5u;
const unsigned int MIN_FONT_ATTRIBUTE_SIZE = 4u; ///< The minimum length of any of the possible 'weight', 'width' , 'slant' or 'size' values.
void ProcessFontSize(const Attribute& attribute, FontDescriptionRun& fontRun)
{
// 64.f is used to convert from point size to 26.6 pixel format.
- fontRun.size = static_cast<PointSize26Dot6>(StringToFloat(attribute.valueBuffer) * PIXEL_FORMAT_64_FACTOR);
+ fontRun.size = static_cast<PointSize26Dot6>(ProcessFloatAttribute(attribute) * PIXEL_FORMAT_64_FACTOR);
fontRun.sizeDefined = true;
}
void ProcessFontWeight(const Attribute& attribute, FontDescriptionRun& fontRun)
{
- char value[MAX_FONT_ATTRIBUTE_SIZE + 1u];
- processFontAttributeValue(value, attribute);
-
- fontRun.weight = StringToWeight(value);
- fontRun.weightDefined = true;
+ fontRun.weightDefined = ProcessEnumerationAttribute<FontWeight>(attribute, MAX_FONT_ATTRIBUTE_SIZE, &StringToWeight, fontRun.weight);
}
void ProcessFontWidth(const Attribute& attribute, FontDescriptionRun& fontRun)
{
- char value[MAX_FONT_ATTRIBUTE_SIZE + 1u];
- processFontAttributeValue(value, attribute);
-
- fontRun.width = StringToWidth(value);
- fontRun.widthDefined = true;
+ fontRun.widthDefined = ProcessEnumerationAttribute<FontWidth>(attribute, MAX_FONT_ATTRIBUTE_SIZE, &StringToWidth, fontRun.width);
}
void ProcessFontSlant(const Attribute& attribute, FontDescriptionRun& fontRun)
{
- char value[MAX_FONT_ATTRIBUTE_SIZE + 1u];
- processFontAttributeValue(value, attribute);
-
- fontRun.slant = StringToSlant(value);
- fontRun.slantDefined = true;
+ fontRun.slantDefined = ProcessEnumerationAttribute<FontSlant>(attribute, MAX_FONT_ATTRIBUTE_SIZE, &StringToSlant, fontRun.slant);
}
void ProcessFontTag(const Tag& tag, FontDescriptionRun& fontRun)
{
const Attribute& attribute(*it);
- if(TokenComparison(XHTML_FAMILY_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
+ if(TokenComparison(MARKUP::FONT_ATTRIBUTES::FAMILY, attribute.nameBuffer, attribute.nameLength))
{
ProcessFontFamily(attribute, fontRun);
}
- else if(TokenComparison(XHTML_SIZE_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
+ else if(TokenComparison(MARKUP::FONT_ATTRIBUTES::SIZE, attribute.nameBuffer, attribute.nameLength))
{
ProcessFontSize(attribute, fontRun);
}
- else if(TokenComparison(XHTML_WEIGHT_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
+ else if(TokenComparison(MARKUP::FONT_ATTRIBUTES::WEIGHT, attribute.nameBuffer, attribute.nameLength))
{
ProcessFontWeight(attribute, fontRun);
}
- else if(TokenComparison(XHTML_WIDTH_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
+ else if(TokenComparison(MARKUP::FONT_ATTRIBUTES::WIDTH, attribute.nameBuffer, attribute.nameLength))
{
ProcessFontWidth(attribute, fontRun);
}
- else if(TokenComparison(XHTML_SLANT_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
+ else if(TokenComparison(MARKUP::FONT_ATTRIBUTES::SLANT, attribute.nameBuffer, attribute.nameLength))
{
ProcessFontSlant(attribute, fontRun);
}