X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fmulti-language-helper-functions.cpp;h=f53bfef1b34752c08d9f63ea50720c2e98bb5f17;hp=3fad598e279ab8225c7cc2a3fb36ce7c11120018;hb=HEAD;hpb=2cf32ac170f397aacce527efd34909b3fd62efda diff --git a/dali-toolkit/internal/text/multi-language-helper-functions.cpp b/dali-toolkit/internal/text/multi-language-helper-functions.cpp index 3fad598..930cb8b 100644 --- a/dali-toolkit/internal/text/multi-language-helper-functions.cpp +++ b/dali-toolkit/internal/text/multi-language-helper-functions.cpp @@ -23,20 +23,18 @@ namespace Dali { - namespace Toolkit { - namespace Text { - -void MergeFontDescriptions( const Vector& fontDescriptions, - const TextAbstraction::FontDescription& defaultFontDescription, - TextAbstraction::PointSize26Dot6 defaultPointSize, - CharacterIndex characterIndex, - TextAbstraction::FontDescription& fontDescription, - TextAbstraction::PointSize26Dot6& fontPointSize, - bool& isDefaultFont ) +void MergeFontDescriptions(const Vector& fontDescriptions, + const TextAbstraction::FontDescription& defaultFontDescription, + TextAbstraction::PointSize26Dot6 defaultPointSize, + float fontSizeScale, + CharacterIndex characterIndex, + TextAbstraction::FontDescription& fontDescription, + TextAbstraction::PointSize26Dot6& fontPointSize, + bool& isDefaultFont) { // Initialize with the default font's point size. fontPointSize = defaultPointSize; @@ -51,115 +49,115 @@ void MergeFontDescriptions( const Vector& fontDescriptions, Length familyIndex = 0u; Length weightIndex = 0u; - Length widthIndex = 0u; - Length slantIndex = 0u; - Length sizeIndex = 0u; + Length widthIndex = 0u; + Length slantIndex = 0u; + Length sizeIndex = 0u; bool familyOverriden = false; bool weightOverriden = false; - bool widthOverriden = false; - bool slantOverriden = false; - bool sizeOverriden = false; + bool widthOverriden = false; + bool slantOverriden = false; + bool sizeOverriden = false; // Traverse all the font descriptions. const FontDescriptionRun* const fontDescriptionsBuffer = fontDescriptions.Begin(); - for( Vector::ConstIterator it = fontDescriptionsBuffer, - endIt = fontDescriptions.End(); - it != endIt; - ++it, ++runIndex ) + for(Vector::ConstIterator it = fontDescriptionsBuffer, + endIt = fontDescriptions.End(); + it != endIt; + ++it, ++runIndex) { // Check whether the character's font is modified by the current font description. const FontDescriptionRun& fontRun = *it; - if( ( characterIndex >= fontRun.characterRun.characterIndex ) && - ( characterIndex < fontRun.characterRun.characterIndex + fontRun.characterRun.numberOfCharacters ) ) + if((characterIndex >= fontRun.characterRun.characterIndex) && + (characterIndex < fontRun.characterRun.characterIndex + fontRun.characterRun.numberOfCharacters)) { - if( fontRun.familyDefined ) + if(fontRun.familyDefined) { - isDefaultFont = false; + isDefaultFont = false; familyOverriden = true; - familyIndex = runIndex; + familyIndex = runIndex; } - if( fontRun.weightDefined ) + if(fontRun.weightDefined) { - isDefaultFont = false; + isDefaultFont = false; weightOverriden = true; - weightIndex = runIndex; + weightIndex = runIndex; } - if( fontRun.widthDefined ) + if(fontRun.widthDefined) { - isDefaultFont = false; + isDefaultFont = false; widthOverriden = true; - widthIndex = runIndex; + widthIndex = runIndex; } - if( fontRun.slantDefined ) + if(fontRun.slantDefined) { - isDefaultFont = false; + isDefaultFont = false; slantOverriden = true; - slantIndex = runIndex; + slantIndex = runIndex; } - if( fontRun.sizeDefined ) + if(fontRun.sizeDefined) { isDefaultFont = false; sizeOverriden = true; - sizeIndex = runIndex; + sizeIndex = runIndex; } } } // Get the font's description if is not the default font. - if( !isDefaultFont ) + if(!isDefaultFont) { - if( familyOverriden ) + if(familyOverriden) { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + familyIndex ); - fontDescription.family = std::string( fontRun.familyName, fontRun.familyLength ); + const FontDescriptionRun& fontRun = *(fontDescriptionsBuffer + familyIndex); + fontDescription.family = std::string(fontRun.familyName, fontRun.familyLength); } - if( weightOverriden ) + if(weightOverriden) { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + weightIndex ); - fontDescription.weight = fontRun.weight; + const FontDescriptionRun& fontRun = *(fontDescriptionsBuffer + weightIndex); + fontDescription.weight = fontRun.weight; } - if( widthOverriden ) + if(widthOverriden) { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + widthIndex ); - fontDescription.width = fontRun.width; + const FontDescriptionRun& fontRun = *(fontDescriptionsBuffer + widthIndex); + fontDescription.width = fontRun.width; } - if( slantOverriden ) + if(slantOverriden) { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + slantIndex ); - fontDescription.slant = fontRun.slant; + const FontDescriptionRun& fontRun = *(fontDescriptionsBuffer + slantIndex); + fontDescription.slant = fontRun.slant; } - if( sizeOverriden ) + if(sizeOverriden) { - const FontDescriptionRun& fontRun = *( fontDescriptionsBuffer + sizeIndex ); - fontPointSize = fontRun.size; + const FontDescriptionRun& fontRun = *(fontDescriptionsBuffer + sizeIndex); + fontPointSize = static_cast(fontRun.size * fontSizeScale); } } } -Script GetScript( Length index, - Vector::ConstIterator& scriptRunIt, - const Vector::ConstIterator& scriptRunEndIt ) +Script GetScript(Length index, + Vector::ConstIterator& scriptRunIt, + const Vector::ConstIterator& scriptRunEndIt) { Script script = TextAbstraction::UNKNOWN; - while( scriptRunIt != scriptRunEndIt ) + while(scriptRunIt != scriptRunEndIt) { const ScriptRun& scriptRun = *scriptRunIt; - if( index >= scriptRun.characterRun.characterIndex + scriptRun.characterRun.numberOfCharacters ) + if(index >= scriptRun.characterRun.characterIndex + scriptRun.characterRun.numberOfCharacters) { ++scriptRunIt; } - else if( index >= scriptRun.characterRun.characterIndex ) + else if(index >= scriptRun.characterRun.characterIndex) { script = scriptRun.script; - if( index + 1u == scriptRun.characterRun.characterIndex + scriptRun.characterRun.numberOfCharacters ) + if(index + 1u == scriptRun.characterRun.characterIndex + scriptRun.characterRun.numberOfCharacters) { // All the characters of the current run have been traversed. Get the next one for the next iteration. ++scriptRunIt;