X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Flogical-model-impl.cpp;h=3d9440e6ff73e2616aa6a60f6dc67e3b310a4761;hp=b9921c2b1e424e847e06bdc79e53f5eb8f30cd14;hb=d48e9b8b161367ad699c0352dfeb0128832bbe59;hpb=73696fd1c7d5f263261a7114159aab66ead484ff diff --git a/dali-toolkit/internal/text/logical-model-impl.cpp b/dali-toolkit/internal/text/logical-model-impl.cpp old mode 100644 new mode 100755 index b9921c2..3d9440e --- a/dali-toolkit/internal/text/logical-model-impl.cpp +++ b/dali-toolkit/internal/text/logical-model-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,12 +38,26 @@ void FreeFontFamilyNames( Vector& fontDescriptionRuns ) it != endIt; ++it ) { - delete (*it).familyName; + delete[] (*it).familyName; } fontDescriptionRuns.Clear(); } +void FreeEmbeddedItems( Vector& embeddedItem ) +{ + for( Vector::Iterator it = embeddedItem.Begin(), + endIt = embeddedItem.End(); + it != endIt; + ++it ) + { + EmbeddedItem& item = *it; + delete[] item.url; + } + + embeddedItem.Clear(); +} + LogicalModelPtr LogicalModel::New() { return LogicalModelPtr( new LogicalModel() ); @@ -53,9 +67,10 @@ Script LogicalModel::GetScript( CharacterIndex characterIndex ) const { // If this operation is too slow, consider a binary search. + const ScriptRun* const scriptRunBuffer = mScriptRuns.Begin(); for( Length index = 0u, length = mScriptRuns.Count(); index < length; ++index ) { - const ScriptRun* const scriptRun = mScriptRuns.Begin() + index; + const ScriptRun* const scriptRun = scriptRunBuffer + index; if( ( scriptRun->characterRun.characterIndex <= characterIndex ) && ( characterIndex < scriptRun->characterRun.characterIndex + scriptRun->characterRun.numberOfCharacters ) ) @@ -274,6 +289,14 @@ void LogicalModel::UpdateTextStyleRuns( CharacterIndex index, int numberOfCharac mColorRuns, removedColorRuns ); + // Process the background color runs. + Vector removedBackgroundColorRuns; + UpdateCharacterRuns( index, + numberOfCharacters, + totalNumberOfCharacters, + mBackgroundColorRuns, + removedBackgroundColorRuns ); + // Process the font description runs. Vector removedFontDescriptionRuns; UpdateCharacterRuns( index, @@ -379,7 +402,7 @@ void LogicalModel::RetrieveStyle( CharacterIndex index, InputStyle& style ) const FontDescriptionRun& fontDescriptionRun = *( fontDescriptionRunsBuffer + nameIndex ); style.familyName = std::string( fontDescriptionRun.familyName, fontDescriptionRun.familyLength ); - style.familyDefined = true; + style.isFamilyDefined = true; } // Set the font's weight if it's overriden. @@ -388,7 +411,7 @@ void LogicalModel::RetrieveStyle( CharacterIndex index, InputStyle& style ) const FontDescriptionRun& fontDescriptionRun = *( fontDescriptionRunsBuffer + weightIndex ); style.weight = fontDescriptionRun.weight; - style.weightDefined = true; + style.isWeightDefined = true; } // Set the font's width if it's overriden. @@ -397,7 +420,7 @@ void LogicalModel::RetrieveStyle( CharacterIndex index, InputStyle& style ) const FontDescriptionRun& fontDescriptionRun = *( fontDescriptionRunsBuffer + widthIndex ); style.width = fontDescriptionRun.width; - style.widthDefined = true; + style.isWidthDefined = true; } // Set the font's slant if it's overriden. @@ -406,7 +429,7 @@ void LogicalModel::RetrieveStyle( CharacterIndex index, InputStyle& style ) const FontDescriptionRun& fontDescriptionRun = *( fontDescriptionRunsBuffer + slantIndex ); style.slant = fontDescriptionRun.slant; - style.slantDefined = true; + style.isSlantDefined = true; } // Set the font's size if it's overriden. @@ -415,7 +438,7 @@ void LogicalModel::RetrieveStyle( CharacterIndex index, InputStyle& style ) const FontDescriptionRun& fontDescriptionRun = *( fontDescriptionRunsBuffer + sizeIndex ); style.size = static_cast( fontDescriptionRun.size ) / 64.f; - style.sizeDefined = true; + style.isSizeDefined = true; } } @@ -549,9 +572,15 @@ void LogicalModel::FindParagraphs( CharacterIndex index, } } +void LogicalModel::ClearEmbeddedImages() +{ + FreeEmbeddedItems( mEmbeddedItems ); +} + LogicalModel::~LogicalModel() { ClearFontDescriptionRuns(); + ClearEmbeddedImages(); } LogicalModel::LogicalModel()