X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Text-Layout.cpp;h=6ec3bfe1b8adca96dde03a737873627ddfa31ae2;hp=bc9d08b8fe2faf0a5b629c1a8527490d3e1717bf;hb=c427acac5f2616578c05987c99e7b430c9ab0137;hpb=88800f19377ddecd0ef13be3045682f7eecacc9a diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp old mode 100755 new mode 100644 index bc9d08b..6ec3bfe --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Layout.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -15,15 +15,15 @@ * */ -#include #include #include +#include +#include +#include #include #include #include -#include -#include #include using namespace Dali; @@ -36,33 +36,33 @@ using namespace Text; namespace { - -const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); +const std::string DEFAULT_FONT_DIR("/resources/fonts"); struct LayoutTextData { - std::string description; - std::string text; - Size textArea; - unsigned int numberOfFonts; - FontDescriptionRun* fontDescriptions; - Size layoutSize; - unsigned int totalNumberOfGlyphs; - float* positions; - unsigned int numberOfLines; - LineRun* lines; - Layout::Engine::Type layout; - unsigned int startIndex; - unsigned int numberOfGlyphs; - bool ellipsis:1; - bool updated:1; + std::string description; + std::string text; + Size textArea; + unsigned int numberOfFonts; + FontDescriptionRun* fontDescriptions; + Size layoutSize; + unsigned int totalNumberOfGlyphs; + float* positions; + unsigned int numberOfLines; + LineRun* lines; + Layout::Engine::Type layout; + unsigned int startIndex; + unsigned int numberOfGlyphs; + bool ellipsis : 1; + DevelText::EllipsisPosition::Type ellipsisPosition; + bool updated : 1; }; -void Print( const LineRun& line ) +void Print(const LineRun& line) { std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl; std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl; - std::cout << " width : " << line.width << std::endl; + std::cout << " width : " << floor(line.width) << std::endl; std::cout << " ascender : " << line.ascender << std::endl; std::cout << " descender : " << line.descender << std::endl; std::cout << " extraLength : " << line.extraLength << std::endl; @@ -71,245 +71,241 @@ void Print( const LineRun& line ) std::cout << " ellipsis : " << line.ellipsis << std::endl; } -bool LayoutTextTest( const LayoutTextData& data ) +bool LayoutTextTest(const LayoutTextData& data) { // Load some fonts. TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - fontClient.SetDpi( 96u, 96u ); + fontClient.SetDpi(96u, 96u); - char* pathNamePtr = get_current_dir_name(); - const std::string pathName( pathNamePtr ); - free( pathNamePtr ); + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" ); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf"); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf"); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf"); // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; - Size layoutSize; + Size layoutSize; Vector fontDescriptionRuns; - if( 0u != data.numberOfFonts ) + if(0u != data.numberOfFonts) { - fontDescriptionRuns.Insert( fontDescriptionRuns.End(), - data.fontDescriptions, - data.fontDescriptions + data.numberOfFonts ); + fontDescriptionRuns.Insert(fontDescriptionRuns.End(), + data.fontDescriptions, + data.fontDescriptions + data.numberOfFonts); } LayoutOptions options; - options.reorder = false; options.align = false; - CreateTextModel( data.text, - data.textArea, - fontDescriptionRuns, - options, - layoutSize, - logicalModel, - visualModel, - metrics, - false ); + CreateTextModel(data.text, + data.textArea, + fontDescriptionRuns, + options, + layoutSize, + textModel, + metrics, + false, + LineWrap::WORD, + false, + Toolkit::DevelText::EllipsisPosition::END, + 0.0f, // lineSpacing + 0.0f // characterSpacing + ); + + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; // 2) Clear the layout. Vector& lines = visualModel->mLines; - const Length numberOfCharacters = logicalModel->mText.Count(); - const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) ); - const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u; - const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() ); + const Length numberOfCharacters = logicalModel->mText.Count(); + const bool isLastNewParagraph = (0u == numberOfCharacters) ? false : TextAbstraction::IsNewParagraph(*(logicalModel->mText.Begin() + (numberOfCharacters - 1u))); + const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u; + const bool removeLastLine = isLastNewParagraph && (lastGlyphIndex + 1u == visualModel->mGlyphs.Count()); LineIndex startRemoveIndex = 0u; - if( 0u != lines.Count() ) + if(0u != lines.Count()) { - startRemoveIndex = lines.Count(); + startRemoveIndex = lines.Count(); LineIndex endRemoveIndex = startRemoveIndex; - ClearGlyphRuns( data.startIndex, - lastGlyphIndex + ( removeLastLine ? 1u : 0u ), - lines, - startRemoveIndex, - endRemoveIndex ); + ClearGlyphRuns(data.startIndex, + lastGlyphIndex + (removeLastLine ? 1u : 0u), + lines, + startRemoveIndex, + endRemoveIndex); // Update the character runs of the lines. const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin(); - const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin(); - const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex ); - const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u; - ClearCharacterRuns( startCharacterIndex, - lastCharacterIndex + ( removeLastLine ? 1u : 0u ), - lines, - startRemoveIndex, - endRemoveIndex ); - - lines.Erase( lines.Begin() + startRemoveIndex, - lines.Begin() + endRemoveIndex ); + const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin(); + const CharacterIndex startCharacterIndex = *(glyphsToCharactersBuffer + data.startIndex); + const CharacterIndex lastCharacterIndex = *(glyphsToCharactersBuffer + lastGlyphIndex) + *(charactersPerGlyph + lastGlyphIndex) - 1u; + ClearCharacterRuns(startCharacterIndex, + lastCharacterIndex + (removeLastLine ? 1u : 0u), + lines, + startRemoveIndex, + endRemoveIndex); + + lines.Erase(lines.Begin() + startRemoveIndex, + lines.Begin() + endRemoveIndex); } Vector& glyphPositions = visualModel->mGlyphPositions; - glyphPositions.Erase( glyphPositions.Begin() + data.startIndex, - glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs ); + glyphPositions.Erase(glyphPositions.Begin() + data.startIndex, + glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs); // 3) Layout Layout::Engine engine; - engine.SetMetrics( metrics ); - engine.SetLayout( data.layout ); - - const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count(); - float outlineWidth = visualModel->GetOutlineWidth(); - - Layout::Parameters layoutParameters( data.textArea, - logicalModel->mText.Begin(), - logicalModel->mLineBreakInfo.Begin(), - logicalModel->mWordBreakInfo.Begin(), - ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL, - visualModel->mGlyphs.Begin(), - visualModel->mGlyphsToCharacters.Begin(), - visualModel->mCharactersPerGlyph.Begin(), - visualModel->mCharactersToGlyph.Begin(), - visualModel->mGlyphsPerCharacter.Begin(), - totalNumberOfGlyphs, - Text::HorizontalAlignment::BEGIN, - Text::LineWrap::WORD, - outlineWidth, - true, - false ); + engine.SetMetrics(metrics); + engine.SetLayout(data.layout); + + textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN; + textModel->mLineWrapMode = LineWrap::WORD; + textModel->mIgnoreSpacesAfterText = true; + Layout::Parameters layoutParameters(data.textArea, + textModel); layoutParameters.isLastNewParagraph = isLastNewParagraph; // The initial glyph and the number of glyphs to layout. - layoutParameters.startGlyphIndex = data.startIndex; - layoutParameters.numberOfGlyphs = data.numberOfGlyphs; - layoutParameters.startLineIndex = startRemoveIndex; + layoutParameters.startGlyphIndex = data.startIndex; + layoutParameters.numberOfGlyphs = data.numberOfGlyphs; + layoutParameters.startLineIndex = startRemoveIndex; layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count(); layoutSize = Vector2::ZERO; - const bool updated = engine.LayoutText( layoutParameters, - glyphPositions, - lines, - layoutSize, - data.ellipsis ); + bool isAutoScroll = false; + bool isAutoScrollMaxTextureExceeded = false; + const bool updated = engine.LayoutText(layoutParameters, + layoutSize, + data.ellipsis, + isAutoScroll, + isAutoScrollMaxTextureExceeded, + data.ellipsisPosition); // 4) Compare the results. - if( updated != data.updated ) + if(updated != data.updated) { std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl; return false; } - if( layoutSize != data.layoutSize ) + if(layoutSize != data.layoutSize) { std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl; return false; } - for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index ) + for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index) { - const Vector2& position = *( glyphPositions.Begin() + index ); + const Vector2& position = *(glyphPositions.Begin() + index); - if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 ) + if(fabsf(std::round(position.x) - *(data.positions + 2u * index)) > Math::MACHINE_EPSILON_1000) { - std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl; + std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl; return false; } - if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 ) + if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000) { - std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl; + std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl; return false; } } - if( lines.Count() != data.numberOfLines ) + if(lines.Count() != data.numberOfLines) { std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl; return false; } - for( unsigned int index = 0u; index < data.numberOfLines; ++index ) + for(unsigned int index = 0u; index < data.numberOfLines; ++index) { - const LineRun& line = *( lines.Begin() + index ); - const LineRun& expectedLine = *( data.lines + index ); + const LineRun& line = *(lines.Begin() + index); + const LineRun& expectedLine = *(data.lines + index); - if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex ) + if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs ) + if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex ) + if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters ) + if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 ) + if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 ) + if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 ) + if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 ) + if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } - if( line.ellipsis != expectedLine.ellipsis ) + if(line.ellipsis != expectedLine.ellipsis) { std::cout << " Different line info for line : " << index << std::endl; - Print( line ); + Print(line); std::cout << " expected" << std::endl; - Print( expectedLine ); + Print(expectedLine); return false; } @@ -322,206 +318,99 @@ bool LayoutTextTest( const LayoutTextData& data ) ////////////////////////////////////////////////////////// -struct ReLayoutRightToLeftLinesData -{ - std::string description; - std::string text; - Size textArea; - unsigned int numberOfFonts; - FontDescriptionRun* fontDescriptions; - unsigned int totalNumberOfGlyphs; - float* positions; - unsigned int startIndex; - unsigned int numberOfCharacters; -}; - -bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data ) -{ - // Load some fonts. - TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - fontClient.SetDpi( 96u, 96u ); - - char* pathNamePtr = get_current_dir_name(); - const std::string pathName( pathNamePtr ); - free( pathNamePtr ); - - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" ); - - // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; - MetricsPtr metrics; - Size layoutSize; - - Vector fontDescriptionRuns; - if( 0u != data.numberOfFonts ) - { - fontDescriptionRuns.Insert( fontDescriptionRuns.End(), - data.fontDescriptions, - data.fontDescriptions + data.numberOfFonts ); - } - - LayoutOptions options; - options.reorder = false; - options.align = false; - CreateTextModel( data.text, - data.textArea, - fontDescriptionRuns, - options, - layoutSize, - logicalModel, - visualModel, - metrics, - false ); - - // 2) Call the ReLayoutRightToLeftLines() method. - Layout::Engine engine; - engine.SetMetrics( metrics ); - - float outlineWidth = visualModel->GetOutlineWidth(); - Layout::Parameters layoutParameters( data.textArea, - logicalModel->mText.Begin(), - logicalModel->mLineBreakInfo.Begin(), - logicalModel->mWordBreakInfo.Begin(), - ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL, - visualModel->mGlyphs.Begin(), - visualModel->mGlyphsToCharacters.Begin(), - visualModel->mCharactersPerGlyph.Begin(), - visualModel->mCharactersToGlyph.Begin(), - visualModel->mGlyphsPerCharacter.Begin(), - visualModel->mGlyphs.Count(), - Text::HorizontalAlignment::BEGIN, - Text::LineWrap::WORD, - outlineWidth, - true, - false ); - - layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count(); - layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin(); - - engine.ReLayoutRightToLeftLines( layoutParameters, - data.startIndex, - data.numberOfCharacters, - visualModel->mGlyphPositions ); - - // 3) Compare the results. - Vector& glyphPositions = visualModel->mGlyphPositions; - - if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() ) - { - std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl; - return false; - } - - for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index ) - { - const Vector2& position = *( glyphPositions.Begin() + index ); - - if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 ) - { - std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl; - return false; - } - if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 ) - { - std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl; - return false; - } - } - - return true; -} - -////////////////////////////////////////////////////////// - struct AlignData { - std::string description; - std::string text; - Size textArea; - unsigned int numberOfFonts; - FontDescriptionRun* fontDescriptions; - Text::HorizontalAlignment::Type horizontalAlignment; - Text::VerticalAlignment::Type verticalAlignment; - unsigned int startIndex; - unsigned int numberOfCharacters; - unsigned int numberOfLines; - float* lineOffsets; - Dali::LayoutDirection::Type layoutDirection; - bool matchSystemLanguageDirection; + std::string description; + std::string text; + Size textArea; + unsigned int numberOfFonts; + FontDescriptionRun* fontDescriptions; + Text::HorizontalAlignment::Type horizontalAlignment; + Text::VerticalAlignment::Type verticalAlignment; + unsigned int startIndex; + unsigned int numberOfCharacters; + unsigned int numberOfLines; + float* lineOffsets; + Dali::LayoutDirection::Type layoutDirection; + bool matchSystemLanguageDirection; }; -bool AlignTest( const AlignData& data ) +bool AlignTest(const AlignData& data) { // Load some fonts. TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - fontClient.SetDpi( 96u, 96u ); + fontClient.SetDpi(96u, 96u); - char* pathNamePtr = get_current_dir_name(); - const std::string pathName( pathNamePtr ); - free( pathNamePtr ); + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" ); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf"); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf"); // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; - Size layoutSize; + Size layoutSize; Vector fontDescriptionRuns; - if( 0u != data.numberOfFonts ) + if(0u != data.numberOfFonts) { - fontDescriptionRuns.Insert( fontDescriptionRuns.End(), - data.fontDescriptions, - data.fontDescriptions + data.numberOfFonts ); + fontDescriptionRuns.Insert(fontDescriptionRuns.End(), + data.fontDescriptions, + data.fontDescriptions + data.numberOfFonts); } LayoutOptions options; options.align = false; - CreateTextModel( data.text, - data.textArea, - fontDescriptionRuns, - options, - layoutSize, - logicalModel, - visualModel, - metrics, - false ); + CreateTextModel(data.text, + data.textArea, + fontDescriptionRuns, + options, + layoutSize, + textModel, + metrics, + false, + LineWrap::WORD, + false, + Toolkit::DevelText::EllipsisPosition::END, + 0.0f, // lineSpacing + 0.0f // characterSpacing + ); + + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; // Call the Align method. Layout::Engine engine; - engine.SetMetrics( metrics ); + engine.SetMetrics(metrics); float alignmentOffset = 0.f; - engine.Align( data.textArea, - data.startIndex, - data.numberOfCharacters, - data.horizontalAlignment, - visualModel->mLines, - alignmentOffset, - data.layoutDirection, - data.matchSystemLanguageDirection ); + engine.Align(data.textArea, + data.startIndex, + data.numberOfCharacters, + data.horizontalAlignment, + visualModel->mLines, + alignmentOffset, + data.layoutDirection, + data.matchSystemLanguageDirection); // Compare results. - if( data.numberOfLines != visualModel->mLines.Count() ) + if(data.numberOfLines != visualModel->mLines.Count()) { std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl; return false; } const LineRun* const linesBuffer = visualModel->mLines.Begin(); - for( unsigned int index = 0u; index < data.numberOfLines; ++index ) + for(unsigned int index = 0u; index < data.numberOfLines; ++index) { - const LineRun& line = *( linesBuffer + index ); + const LineRun& line = *(linesBuffer + index); - if( line.alignmentOffset != *( data.lineOffsets + index ) ) + if(line.alignmentOffset != *(data.lineOffsets + index)) { - std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl; + std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl; return false; } } @@ -545,6 +434,7 @@ bool AlignTest( const AlignData& data ) // UtcDaliTextLayoutMultilineText03 // UtcDaliTextLayoutMultilineText04 // UtcDaliTextLayoutMultilineText05 +// UtcDaliTextLayoutMultilineText06 // UtcDaliTextUpdateLayout01 // UtcDaliTextUpdateLayout02 // UtcDaliTextUpdateLayout03 @@ -576,10 +466,10 @@ int UtcDaliTextLayoutSetGetLayout(void) Layout::Engine engine; - DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() ); + DALI_TEST_CHECK(Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout()); - engine.SetLayout( Layout::Engine::MULTI_LINE_BOX ); - DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() ); + engine.SetLayout(Layout::Engine::MULTI_LINE_BOX); + DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout()); tet_result(TET_PASS); END_TEST; @@ -592,10 +482,10 @@ int UtcDaliTextLayoutSetGetCursorWidth(void) Layout::Engine engine; - DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION); - engine.SetCursorWidth( 2 ); - DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION ); + engine.SetCursorWidth(2); + DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION); tet_result(TET_PASS); END_TEST; @@ -606,28 +496,28 @@ int UtcDaliTextLayoutNoText(void) ToolkitTestApplication application; tet_infoline(" UtcDaliTextLayoutNoText"); - Size textArea(100.f, 60.f); - Size layoutSize = Vector2::ZERO; + Size textArea(100.f, 60.f); + Size layoutSize = Vector2::ZERO; LayoutTextData data = - { - "No text", - "", - textArea, - 0u, - NULL, - layoutSize, - 0u, - NULL, - 0u, - NULL, - Layout::Engine::MULTI_LINE_BOX, - 0u, - 0u, - false, - false - }; - - if( !LayoutTextTest( data ) ) + { + "No text", + "", + textArea, + 0u, + NULL, + layoutSize, + 0u, + NULL, + 0u, + NULL, + Layout::Engine::MULTI_LINE_BOX, + 0u, + 0u, + false, + DevelText::EllipsisPosition::END, + false}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -643,45 +533,45 @@ int UtcDaliTextLayoutSmallTextArea01(void) // Won't layout the text in multi-line if the width is too small. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun; - fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.characterIndex = 0u; fontDescriptionRun.characterRun.numberOfCharacters = 11u; - fontDescriptionRun.familyLength = fontFamily.size(); - fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; - memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength ); + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); fontDescriptionRun.familyDefined = true; fontDescriptionRun.weightDefined = false; - fontDescriptionRun.widthDefined = false; - fontDescriptionRun.slantDefined = false; - fontDescriptionRun.sizeDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun ); - Size textArea(1.f, 1.f); - Size layoutSize = Vector2::ZERO; + fontDescriptionRuns.PushBack(fontDescriptionRun); + Size textArea(1.f, 1.f); + Size layoutSize = Vector2::ZERO; LayoutTextData data = - { - "Layout text in a small area", - "Hello world", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 0u, - NULL, - 0u, - NULL, - Layout::Engine::MULTI_LINE_BOX, - 0u, - 11u, - false, - false - }; - - if( !LayoutTextTest( data ) ) + { + "Layout text in a small area", + "Hello world", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 0u, + NULL, + 0u, + NULL, + Layout::Engine::MULTI_LINE_BOX, + 0u, + 11u, + false, + DevelText::EllipsisPosition::END, + false}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -697,62 +587,61 @@ int UtcDaliTextLayoutSmallTextArea02(void) // Will layout the text in single line as it can be scrolled. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun; - fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.characterIndex = 0u; fontDescriptionRun.characterRun.numberOfCharacters = 11u; - fontDescriptionRun.familyLength = fontFamily.size(); - fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; - memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength ); + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); fontDescriptionRun.familyDefined = true; fontDescriptionRun.weightDefined = false; - fontDescriptionRun.widthDefined = false; - fontDescriptionRun.slantDefined = false; - fontDescriptionRun.sizeDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun ); - Size textArea(1.f, 1.f); - Size layoutSize(80.f, 20.f); - float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f }; + fontDescriptionRuns.PushBack(fontDescriptionRun); + Size textArea(1.f, 1.f); + Size layoutSize(81.f, 20.f); + float positions[] = {0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f}; struct LineRun line = - { - { 0u, 11u }, - { 0u, 11u }, - 80.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 11u}, + {0u, 11u}, + 81.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line ); + lines.PushBack(line); LayoutTextData data = - { - "Layout text in a small area", - "Hello world", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 11u, - positions, - 1u, - lines.Begin(), - Layout::Engine::SINGLE_LINE_BOX, - 0u, - 11u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout text in a small area", + "Hello world", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 11u, + positions, + 1u, + lines.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 11u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -768,139 +657,129 @@ int UtcDaliTextLayoutMultilineText01(void) // Layout some lines of left to right text. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun1; - fontDescriptionRun1.characterRun.characterIndex = 0u; + fontDescriptionRun1.characterRun.characterIndex = 0u; fontDescriptionRun1.characterRun.numberOfCharacters = 18u; - fontDescriptionRun1.familyLength = fontFamily.size(); - fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; - memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength ); + fontDescriptionRun1.familyLength = fontFamily.size(); + fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; + memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength); fontDescriptionRun1.familyDefined = true; fontDescriptionRun1.weightDefined = false; - fontDescriptionRun1.widthDefined = false; - fontDescriptionRun1.slantDefined = false; - fontDescriptionRun1.sizeDefined = false; + fontDescriptionRun1.widthDefined = false; + fontDescriptionRun1.slantDefined = false; + fontDescriptionRun1.sizeDefined = false; FontDescriptionRun fontDescriptionRun2; - fontDescriptionRun2.characterRun.characterIndex = 18u; + fontDescriptionRun2.characterRun.characterIndex = 18u; fontDescriptionRun2.characterRun.numberOfCharacters = 31u; - fontDescriptionRun2.familyLength = fontFamily.size(); - fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; - memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength ); + fontDescriptionRun2.familyLength = fontFamily.size(); + fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; + memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength); fontDescriptionRun2.familyDefined = true; fontDescriptionRun2.weightDefined = false; - fontDescriptionRun2.widthDefined = false; - fontDescriptionRun2.slantDefined = false; - fontDescriptionRun2.sizeDefined = false; + fontDescriptionRun2.widthDefined = false; + fontDescriptionRun2.slantDefined = false; + fontDescriptionRun2.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun1 ); - fontDescriptionRuns.PushBack( fontDescriptionRun2 ); - Size textArea(100.f, 300.f); - Size layoutSize(95.f, 97.f); + fontDescriptionRuns.PushBack(fontDescriptionRun1); + fontDescriptionRuns.PushBack(fontDescriptionRun2); + Size textArea(100.f, 300.f); + Size layoutSize(98.f, 97.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -12.f, 9.f, -9.f, 17.f, -9.f, 27.f, -9.f, 36.f, -9.f, 45.f, -11.f, 51.f, -0.f, - 1.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 41.f, -9.f, 50.f, -9.f, 59.f, -11.f, 65.f, -0.f, - 1.f, -12.f, 5.f, -12.f, 9.f, -9.f, 19.f, -9.f, 28.f, -9.f, 35.f, -0.f, 41.f, -9.f, 50.f, -12.f, 54.f, -0.f, 59.f, -11.f, 66.f, -9.f, 75.f, -9.f, 83.f, -11.f, 91.f, -2.f - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f, 0.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, 0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.f, -9.f, 42.f, -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f, 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 36.f, -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f, -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f}; struct LineRun line0 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line1 = - { - { 12u, 6u }, - { 12u, 6u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 6u}, + {12u, 6u}, + 44.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line2 = - { - { 18u, 7u }, - { 18u, 7u }, - 52.f, - 15.f, - -4.f, - 5.f, - 0.f, - 0.f, - false, - false - }; + { + {18u, 7u}, + {18u, 7u}, + 54.f, + 15.f, + -4.f, + 6.f, + 0.f, + 0.f, + false, + false}; struct LineRun line3 = - { - { 25u, 9u }, - { 25u, 10u }, - 66.f, - 15.f, - -4.f, - 5.f, - 0.f, - 0.f, - false, - false - }; + { + {25u, 9u}, + {25u, 10u}, + 68.f, + 15.f, + -4.f, + 6.f, + 0.f, + 0.f, + false, + false}; struct LineRun line4 = - { - { 34u, 14u }, - { 35u, 14u }, - 95.f, - 15.f, - -4.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {34u, 14u}, + {35u, 14u}, + 98.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line0 ); - lines.PushBack( line1 ); - lines.PushBack( line2 ); - lines.PushBack( line3 ); - lines.PushBack( line4 ); + lines.PushBack(line0); + lines.PushBack(line1); + lines.PushBack(line2); + lines.PushBack(line3); + lines.PushBack(line4); LayoutTextData data = - { - "Layout simple multi-line text", - "Hello world demo.\n" - "Layout different lines of text.", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 48u, - positions, - 5u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 48u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout simple multi-line text", + "Hello world demo.\n" + "Layout different lines of text.", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 48u, + positions, + 5u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 48u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -916,205 +795,280 @@ int UtcDaliTextLayoutMultilineText02(void) // Layout some lines of bidirectional text. - const std::string fontFamily1( "TizenSans" ); + const std::string fontFamily1("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun1; - fontDescriptionRun1.characterRun.characterIndex = 0u; + fontDescriptionRun1.characterRun.characterIndex = 0u; fontDescriptionRun1.characterRun.numberOfCharacters = 17u; - fontDescriptionRun1.familyLength = fontFamily1.size(); - fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; - memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength ); + fontDescriptionRun1.familyLength = fontFamily1.size(); + fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; + memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength); fontDescriptionRun1.familyDefined = true; fontDescriptionRun1.weightDefined = false; - fontDescriptionRun1.widthDefined = false; - fontDescriptionRun1.slantDefined = false; - fontDescriptionRun1.sizeDefined = false; + fontDescriptionRun1.widthDefined = false; + fontDescriptionRun1.slantDefined = false; + fontDescriptionRun1.sizeDefined = false; - const std::string fontFamily2( "TizenSansHebrew" ); + const std::string fontFamily2("TizenSansHebrew"); // Set a known font description FontDescriptionRun fontDescriptionRun2; - fontDescriptionRun2.characterRun.characterIndex = 17u; + fontDescriptionRun2.characterRun.characterIndex = 17u; fontDescriptionRun2.characterRun.numberOfCharacters = 9u; - fontDescriptionRun2.familyLength = fontFamily2.size(); - fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; - memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength ); + fontDescriptionRun2.familyLength = fontFamily2.size(); + fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; + memcpy(fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength); fontDescriptionRun2.familyDefined = true; fontDescriptionRun2.weightDefined = false; - fontDescriptionRun2.widthDefined = false; - fontDescriptionRun2.slantDefined = false; - fontDescriptionRun2.sizeDefined = false; + fontDescriptionRun2.widthDefined = false; + fontDescriptionRun2.slantDefined = false; + fontDescriptionRun2.sizeDefined = false; - const std::string fontFamily3( "TizenSans" ); + const std::string fontFamily3("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun3; - fontDescriptionRun3.characterRun.characterIndex = 26u; + fontDescriptionRun3.characterRun.characterIndex = 26u; fontDescriptionRun3.characterRun.numberOfCharacters = 2u; - fontDescriptionRun3.familyLength = fontFamily3.size(); - fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength]; - memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength ); + fontDescriptionRun3.familyLength = fontFamily3.size(); + fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength]; + memcpy(fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength); fontDescriptionRun3.familyDefined = true; fontDescriptionRun3.weightDefined = false; - fontDescriptionRun3.widthDefined = false; - fontDescriptionRun3.slantDefined = false; - fontDescriptionRun3.sizeDefined = false; + fontDescriptionRun3.widthDefined = false; + fontDescriptionRun3.slantDefined = false; + fontDescriptionRun3.sizeDefined = false; - const std::string fontFamily4( "TizenSansHebrew" ); + const std::string fontFamily4("TizenSansHebrew"); // Set a known font description FontDescriptionRun fontDescriptionRun4; - fontDescriptionRun4.characterRun.characterIndex = 28u; + fontDescriptionRun4.characterRun.characterIndex = 28u; fontDescriptionRun4.characterRun.numberOfCharacters = 10u; - fontDescriptionRun4.familyLength = fontFamily4.size(); - fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength]; - memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength ); + fontDescriptionRun4.familyLength = fontFamily4.size(); + fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength]; + memcpy(fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength); fontDescriptionRun4.familyDefined = true; fontDescriptionRun4.weightDefined = false; - fontDescriptionRun4.widthDefined = false; - fontDescriptionRun4.slantDefined = false; - fontDescriptionRun4.sizeDefined = false; + fontDescriptionRun4.widthDefined = false; + fontDescriptionRun4.slantDefined = false; + fontDescriptionRun4.sizeDefined = false; - const std::string fontFamily5( "TizenSans" ); + const std::string fontFamily5("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun5; - fontDescriptionRun5.characterRun.characterIndex = 38u; + fontDescriptionRun5.characterRun.characterIndex = 38u; fontDescriptionRun5.characterRun.numberOfCharacters = 17u; - fontDescriptionRun5.familyLength = fontFamily5.size(); - fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength]; - memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength ); + fontDescriptionRun5.familyLength = fontFamily5.size(); + fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength]; + memcpy(fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength); fontDescriptionRun5.familyDefined = true; fontDescriptionRun5.weightDefined = false; - fontDescriptionRun5.widthDefined = false; - fontDescriptionRun5.slantDefined = false; - fontDescriptionRun5.sizeDefined = false; + fontDescriptionRun5.widthDefined = false; + fontDescriptionRun5.slantDefined = false; + fontDescriptionRun5.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun1 ); - fontDescriptionRuns.PushBack( fontDescriptionRun2 ); - fontDescriptionRuns.PushBack( fontDescriptionRun3 ); - fontDescriptionRuns.PushBack( fontDescriptionRun4 ); - fontDescriptionRuns.PushBack( fontDescriptionRun5 ); - Size textArea(100.f, 300.f); - Size layoutSize(80.f, 120.f); + fontDescriptionRuns.PushBack(fontDescriptionRun1); + fontDescriptionRuns.PushBack(fontDescriptionRun2); + fontDescriptionRuns.PushBack(fontDescriptionRun3); + fontDescriptionRuns.PushBack(fontDescriptionRun4); + fontDescriptionRuns.PushBack(fontDescriptionRun5); + Size textArea(100.f, 300.f); + Size layoutSize(81.f, 120.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 12 .. 21 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 22 .. 27 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 28 .. 37 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 38 .. 49 + 4.f, + -13.f, + 13.f, + -9.f, + 23.f, + -9.f, + 36.f, + -9.f, + 0.f, + -2.f, // 50 .. 54 + }; struct LineRun line0 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line1 = - { - { 12u, 10u }, - { 12u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 10u}, + {12u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line2 = - { - { 22u, 6u }, - { 22u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {22u, 6u}, + {22u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line3 = - { - { 28u, 10u }, - { 28u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {28u, 10u}, + {28u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line4 = - { - { 38u, 12u }, - { 38u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {38u, 12u}, + {38u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line5 = - { - { 50u, 5u }, - { 50u, 5u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {50u, 5u}, + {50u, 5u}, + 45.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line0 ); - lines.PushBack( line1 ); - lines.PushBack( line2 ); - lines.PushBack( line3 ); - lines.PushBack( line4 ); - lines.PushBack( line5 ); + lines.PushBack(line0); + lines.PushBack(line1); + lines.PushBack(line2); + lines.PushBack(line3); + lines.PushBack(line4); + lines.PushBack(line5); LayoutTextData data = - { - "Layout bidirectional text.", - "Hello world demo שלום עולם.\n" - "שלום עולם hello world demo.", - textArea, - 5u, - fontDescriptionRuns.Begin(), - layoutSize, - 55u, - positions, - 6u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 55u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout bidirectional text.", + "Hello world demo שלום עולם.\n" + "שלום עולם hello world demo.", + textArea, + 5u, + fontDescriptionRuns.Begin(), + layoutSize, + 55u, + positions, + 6u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 55u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -1130,95 +1084,147 @@ int UtcDaliTextLayoutMultilineText03(void) // Layout a long word which doesn't fit in the width of the text area. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun; - fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.characterIndex = 0u; fontDescriptionRun.characterRun.numberOfCharacters = 29u; - fontDescriptionRun.familyLength = fontFamily.size(); - fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; - memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength ); + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); fontDescriptionRun.familyDefined = true; fontDescriptionRun.weightDefined = false; - fontDescriptionRun.widthDefined = false; - fontDescriptionRun.slantDefined = false; - fontDescriptionRun.sizeDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun ); - Size textArea(100.f, 300.f); - Size layoutSize(96.f, 60.f); + fontDescriptionRuns.PushBack(fontDescriptionRun); + Size textArea(100.f, 300.f); + Size layoutSize(98.f, 60.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f, - 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, - }; + { + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -9.f, + 48.f, + -9.f, + 58.f, + -9.f, + 65.f, + -13.f, + 68.f, + -13.f, + 77.f, + -13.f, + 86.f, + -9.f, + 0.f, + -9.f, + 13.f, + -9.f, + 23.f, + -13.f, + 31.f, + -9.f, + 41.f, + -13.f, + 45.f, + -13.f, + 48.f, + -9.f, + 57.f, + -9.f, + 69.f, + -9.f, + 79.f, + -9.f, + 85.f, + -13.f, + 88.f, + -13.f, + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -2.f, + }; struct LineRun line0 = - { - { 0u, 12u }, - { 0u, 12u }, - 93.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 95.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line1 = - { - { 12u, 12u }, - { 12u, 12u }, - 96.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 12u}, + {12u, 12u}, + 98.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line2 = - { - { 24u, 5u }, - { 24u, 5u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {24u, 5u}, + {24u, 5u}, + 44.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line0 ); - lines.PushBack( line1 ); - lines.PushBack( line2 ); + lines.PushBack(line0); + lines.PushBack(line1); + lines.PushBack(line2); LayoutTextData data = - { - "Layout a long word which doesn't fit in the width of the text area.", - "Helloworlddemohelloworlddemo.", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 29u, - positions, - 3u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 29u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout a long word which doesn't fit in the width of the text area.", + "Helloworlddemohelloworlddemo.", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 29u, + positions, + 3u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 29u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -1234,78 +1240,75 @@ int UtcDaliTextLayoutMultilineText04(void) // Layout simple text ending with a \n. It has to add a void line at the end. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun; - fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.characterIndex = 0u; fontDescriptionRun.characterRun.numberOfCharacters = 13u; - fontDescriptionRun.familyLength = fontFamily.size(); - fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; - memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength ); + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); fontDescriptionRun.familyDefined = true; fontDescriptionRun.weightDefined = false; - fontDescriptionRun.widthDefined = false; - fontDescriptionRun.slantDefined = false; - fontDescriptionRun.sizeDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun ); - Size textArea(100.f, 300.f); - Size layoutSize(83.f, 40.f); + fontDescriptionRuns.PushBack(fontDescriptionRun); + Size textArea(100.f, 300.f); + Size layoutSize(84.f, 40.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f}; struct LineRun line0 = - { - { 0u, 13u }, - { 0u, 13u }, - 83.f, - 15.f, - -5.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 13u}, + {0u, 13u}, + 84.f, + 15.f, + -5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line1 = - { - { 13u, 0u }, - { 13u, 0u }, - 0.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {13u, 0u}, + {13u, 0u}, + 0.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line0 ); - lines.PushBack( line1 ); + lines.PushBack(line0); + lines.PushBack(line1); LayoutTextData data = - { - "Layout simple text ending with a \n.", - "Hello world.\n", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 13u, - positions, - 2u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 13u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout simple text ending with a \n.", + "Hello world.\n", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 13u, + positions, + 2u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 13u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -1321,107 +1324,103 @@ int UtcDaliTextLayoutMultilineText05(void) // Layout simple text with one character with a different font size. - const std::string fontFamily( "TizenSans" ); + const std::string fontFamily("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun1; - fontDescriptionRun1.characterRun.characterIndex = 0u; + fontDescriptionRun1.characterRun.characterIndex = 0u; fontDescriptionRun1.characterRun.numberOfCharacters = 6u; - fontDescriptionRun1.familyLength = fontFamily.size(); - fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; - memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength ); + fontDescriptionRun1.familyLength = fontFamily.size(); + fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength]; + memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength); fontDescriptionRun1.familyDefined = true; fontDescriptionRun1.weightDefined = false; - fontDescriptionRun1.widthDefined = false; - fontDescriptionRun1.slantDefined = false; - fontDescriptionRun1.sizeDefined = false; + fontDescriptionRun1.widthDefined = false; + fontDescriptionRun1.slantDefined = false; + fontDescriptionRun1.sizeDefined = false; FontDescriptionRun fontDescriptionRun2; - fontDescriptionRun2.characterRun.characterIndex = 6u; + fontDescriptionRun2.characterRun.characterIndex = 6u; fontDescriptionRun2.characterRun.numberOfCharacters = 1u; - fontDescriptionRun2.familyLength = fontFamily.size(); - fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; - memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength ); - fontDescriptionRun2.size = 1280u; + fontDescriptionRun2.familyLength = fontFamily.size(); + fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; + memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength); + fontDescriptionRun2.size = 1280u; fontDescriptionRun2.familyDefined = true; fontDescriptionRun2.weightDefined = false; - fontDescriptionRun2.widthDefined = false; - fontDescriptionRun2.slantDefined = false; - fontDescriptionRun2.sizeDefined = true; + fontDescriptionRun2.widthDefined = false; + fontDescriptionRun2.slantDefined = false; + fontDescriptionRun2.sizeDefined = true; FontDescriptionRun fontDescriptionRun3; - fontDescriptionRun3.characterRun.characterIndex = 7u; + fontDescriptionRun3.characterRun.characterIndex = 7u; fontDescriptionRun3.characterRun.numberOfCharacters = 10u; - fontDescriptionRun3.familyLength = fontFamily.size(); - fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength]; - memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength ); + fontDescriptionRun3.familyLength = fontFamily.size(); + fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength]; + memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength); fontDescriptionRun3.familyDefined = true; fontDescriptionRun3.weightDefined = false; - fontDescriptionRun3.widthDefined = false; - fontDescriptionRun3.slantDefined = false; - fontDescriptionRun3.sizeDefined = false; + fontDescriptionRun3.widthDefined = false; + fontDescriptionRun3.slantDefined = false; + fontDescriptionRun3.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun1 ); - fontDescriptionRuns.PushBack( fontDescriptionRun2 ); - fontDescriptionRuns.PushBack( fontDescriptionRun3 ); - Size textArea(100.f, 300.f); - Size layoutSize(88.f, 53.f); + fontDescriptionRuns.PushBack(fontDescriptionRun1); + fontDescriptionRuns.PushBack(fontDescriptionRun2); + fontDescriptionRuns.PushBack(fontDescriptionRun3); + Size textArea(100.f, 300.f); + Size layoutSize(89.f, 53.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f}; struct LineRun line0 = - { - { 0u, 12u }, - { 0u, 12u }, - 88.f, - 25.f, - -8.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 89.f, + 25.f, + -8.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line1 = - { - { 12u, 5u }, - { 12u, 5u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 5u}, + {12u, 5u}, + 44.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line0 ); - lines.PushBack( line1 ); + lines.PushBack(line0); + lines.PushBack(line1); LayoutTextData data = - { - "Layout simple text with one character with a different font size.", - "Hello world demo.", - textArea, - 3u, - fontDescriptionRuns.Begin(), - layoutSize, - 17u, - positions, - 2u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 17u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout simple text with one character with a different font size.", + "Hello world demo.", + textArea, + 3u, + fontDescriptionRuns.Begin(), + layoutSize, + 17u, + positions, + 2u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 17u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -1430,573 +1429,1078 @@ int UtcDaliTextLayoutMultilineText05(void) END_TEST; } -int UtcDaliTextUpdateLayout01(void) +int UtcDaliTextLayoutMultilineText06(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextUpdateLayout01"); - - // Layout some lines of bidirectional text. Update the paragraphs at the beginning. + tet_infoline(" UtcDaliTextLayoutMultilineText06"); - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontFamily("TizenSansHebrew"); // Set a known font description - FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 17u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); - fontDescriptionRun01.familyDefined = true; - fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + FontDescriptionRun fontDescriptionRun; + fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.numberOfCharacters = 10u; + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); + fontDescriptionRun.familyDefined = true; + fontDescriptionRun.weightDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; - // Set a known font description - FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 9u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); - fontDescriptionRun02.familyDefined = true; - fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + Vector fontDescriptionRuns; + fontDescriptionRuns.PushBack(fontDescriptionRun); - // Set a known font description - FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; - fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); - fontDescriptionRun03.familyDefined = true; - fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + Size textArea(64.f, 100.f); + Size layoutSize(34.f, 40.f); + float positions[] = + { + 27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f, 22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f}; + struct LineRun line0 = + { + {0u, 5u}, + {0u, 5u}, + 32.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + true, + false}; + struct LineRun line1 = + { + {5u, 5u}, + {5u, 5u}, + 34.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + true, + false}; + Vector lines; + lines.PushBack(line0); + lines.PushBack(line1); - // Set a known font description - FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; - fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); - fontDescriptionRun04.familyDefined = true; - fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + LayoutTextData data = + { + "Layout right to left text that doesn't fit in the text area after reordering.", + "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues. + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 10u, + positions, + 2u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 10u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) + { + tet_result(TET_FAIL); + } - // Set a known font description - FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextLayoutMultilineText07(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextLayoutMultilineText07"); + + const std::string fontFamily("TizenSansHebrew"); + + // Set a known font description + FontDescriptionRun fontDescriptionRun; + fontDescriptionRun.characterRun.characterIndex = 0u; + fontDescriptionRun.characterRun.numberOfCharacters = 9u; + fontDescriptionRun.familyLength = fontFamily.size(); + fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength]; + memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength); + fontDescriptionRun.familyDefined = true; + fontDescriptionRun.weightDefined = false; + fontDescriptionRun.widthDefined = false; + fontDescriptionRun.slantDefined = false; + fontDescriptionRun.sizeDefined = false; + + Vector fontDescriptionRuns; + fontDescriptionRuns.PushBack(fontDescriptionRun); + + Size textArea(26.f, 100.f); + Size layoutSize(24.f, 60.f); + float positions[] = + { + 10.f, -10.f, 4.f, -10.f, 0.f, -10.f, 13.f, -10.f, 9.f, -10.f, 0.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -10.f}; + struct LineRun line0 = + { + {0u, 3u}, + {0u, 3u}, + 21.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + true, + false}; + struct LineRun line1 = + { + {3u, 3u}, + {3u, 3u}, + 22.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + true, + false}; + struct LineRun line2 = + { + {6u, 3u}, + {6u, 3u}, + 24.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + true, + false}; + Vector lines; + lines.PushBack(line0); + lines.PushBack(line1); + lines.PushBack(line2); + + LayoutTextData data = + { + "Layout a single word of right to left text that doesn't fit in one single line. When layouting ltr a piece of word fits in the line but it doesn't after reordering.", + "שנורולכאן", // If a piece of this text is laid-out ltr the width is 26. When reordered, the length is 27. This might cause alignment issues. + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 9u, + positions, + 3u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 9u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) + { + tet_result(TET_FAIL); + } + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextUpdateLayout01(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextUpdateLayout01"); + + // Layout some lines of bidirectional text. Update the paragraphs at the beginning. + + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); + + // Set a known font description + FontDescriptionRun fontDescriptionRun01; + fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.numberOfCharacters = 17u; + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); + fontDescriptionRun01.familyDefined = true; + fontDescriptionRun01.weightDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun02; + fontDescriptionRun02.characterRun.characterIndex = 17u; + fontDescriptionRun02.characterRun.numberOfCharacters = 9u; + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); + fontDescriptionRun02.familyDefined = true; + fontDescriptionRun02.weightDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun03; + fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.numberOfCharacters = 2u; + fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength); + fontDescriptionRun03.familyDefined = true; + fontDescriptionRun03.weightDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun04; + fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.numberOfCharacters = 14u; + fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength); + fontDescriptionRun04.familyDefined = true; + fontDescriptionRun04.weightDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun05; + fontDescriptionRun05.characterRun.characterIndex = 42u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; - fontDescriptionRun06.familyLength = fontHebrew.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontHebrew.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.characterIndex = 64u; fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); - fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; + memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; - fontDescriptionRun07.widthDefined = false; - fontDescriptionRun07.slantDefined = false; - fontDescriptionRun07.sizeDefined = false; + fontDescriptionRun07.widthDefined = false; + fontDescriptionRun07.slantDefined = false; + fontDescriptionRun07.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; + fontDescriptionRun08.characterRun.characterIndex = 74u; fontDescriptionRun08.characterRun.numberOfCharacters = 18u; - fontDescriptionRun08.familyLength = fontLatin.size(); - fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; - memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); + fontDescriptionRun08.familyLength = fontLatin.size(); + fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; + memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength); fontDescriptionRun08.familyDefined = true; fontDescriptionRun08.weightDefined = false; - fontDescriptionRun08.widthDefined = false; - fontDescriptionRun08.slantDefined = false; - fontDescriptionRun08.sizeDefined = false; + fontDescriptionRun08.widthDefined = false; + fontDescriptionRun08.slantDefined = false; + fontDescriptionRun08.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.characterIndex = 92u; fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); - fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; + memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; - fontDescriptionRun09.widthDefined = false; - fontDescriptionRun09.slantDefined = false; - fontDescriptionRun09.sizeDefined = false; + fontDescriptionRun09.widthDefined = false; + fontDescriptionRun09.slantDefined = false; + fontDescriptionRun09.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.characterIndex = 104u; fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); - fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; + memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; - fontDescriptionRun10.widthDefined = false; - fontDescriptionRun10.slantDefined = false; - fontDescriptionRun10.sizeDefined = false; + fontDescriptionRun10.widthDefined = false; + fontDescriptionRun10.slantDefined = false; + fontDescriptionRun10.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.characterIndex = 118u; fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); - fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; + memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; - fontDescriptionRun11.widthDefined = false; - fontDescriptionRun11.slantDefined = false; - fontDescriptionRun11.sizeDefined = false; + fontDescriptionRun11.widthDefined = false; + fontDescriptionRun11.slantDefined = false; + fontDescriptionRun11.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.characterIndex = 128u; fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); - fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; + memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; - fontDescriptionRun12.widthDefined = false; - fontDescriptionRun12.slantDefined = false; - fontDescriptionRun12.sizeDefined = false; + fontDescriptionRun12.widthDefined = false; + fontDescriptionRun12.slantDefined = false; + fontDescriptionRun12.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; + fontDescriptionRun13.characterRun.characterIndex = 145u; fontDescriptionRun13.characterRun.numberOfCharacters = 9u; - fontDescriptionRun13.familyLength = fontHebrew.size(); - fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; - memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); + fontDescriptionRun13.familyLength = fontHebrew.size(); + fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; + memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength); fontDescriptionRun13.familyDefined = true; fontDescriptionRun13.weightDefined = false; - fontDescriptionRun13.widthDefined = false; - fontDescriptionRun13.slantDefined = false; - fontDescriptionRun13.sizeDefined = false; + fontDescriptionRun13.widthDefined = false; + fontDescriptionRun13.slantDefined = false; + fontDescriptionRun13.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; + fontDescriptionRun14.characterRun.characterIndex = 154u; fontDescriptionRun14.characterRun.numberOfCharacters = 2u; - fontDescriptionRun14.familyLength = fontLatin.size(); - fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; - memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); + fontDescriptionRun14.familyLength = fontLatin.size(); + fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; + memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength); fontDescriptionRun14.familyDefined = true; fontDescriptionRun14.weightDefined = false; - fontDescriptionRun14.widthDefined = false; - fontDescriptionRun14.slantDefined = false; - fontDescriptionRun14.sizeDefined = false; + fontDescriptionRun14.widthDefined = false; + fontDescriptionRun14.slantDefined = false; + fontDescriptionRun14.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.characterIndex = 156u; fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); - fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; + memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; - fontDescriptionRun15.widthDefined = false; - fontDescriptionRun15.slantDefined = false; - fontDescriptionRun15.sizeDefined = false; + fontDescriptionRun15.widthDefined = false; + fontDescriptionRun15.slantDefined = false; + fontDescriptionRun15.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; + fontDescriptionRun16.characterRun.characterIndex = 166u; fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); + fontDescriptionRun16.familyLength = fontLatin.size(); + fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; + memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength); fontDescriptionRun16.familyDefined = true; fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; + fontDescriptionRun17.characterRun.characterIndex = 178u; fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); + fontDescriptionRun17.familyLength = fontArabic.size(); + fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; + memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength); fontDescriptionRun17.familyDefined = true; fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - fontDescriptionRuns.PushBack( fontDescriptionRun07 ); - fontDescriptionRuns.PushBack( fontDescriptionRun08 ); - fontDescriptionRuns.PushBack( fontDescriptionRun09 ); - fontDescriptionRuns.PushBack( fontDescriptionRun10 ); - fontDescriptionRuns.PushBack( fontDescriptionRun11 ); - fontDescriptionRuns.PushBack( fontDescriptionRun12 ); - fontDescriptionRuns.PushBack( fontDescriptionRun13 ); - fontDescriptionRuns.PushBack( fontDescriptionRun14 ); - fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); - Size textArea(100.f, 300.f); - Size layoutSize(92.f, 380.f); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); + fontDescriptionRuns.PushBack(fontDescriptionRun07); + fontDescriptionRuns.PushBack(fontDescriptionRun08); + fontDescriptionRuns.PushBack(fontDescriptionRun09); + fontDescriptionRuns.PushBack(fontDescriptionRun10); + fontDescriptionRuns.PushBack(fontDescriptionRun11); + fontDescriptionRuns.PushBack(fontDescriptionRun12); + fontDescriptionRuns.PushBack(fontDescriptionRun13); + fontDescriptionRuns.PushBack(fontDescriptionRun14); + fontDescriptionRuns.PushBack(fontDescriptionRun15); + fontDescriptionRuns.PushBack(fontDescriptionRun16); + fontDescriptionRuns.PushBack(fontDescriptionRun17); + Size textArea(100.f, 300.f); + Size layoutSize(100.f, 380.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, - 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 12 .. 21 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 22 .. 27 + 58.f, + -8.f, + 52.f, + -6.f, + 45.f, + -8.f, + 41.f, + -7.f, + 39.f, + -11.f, + 34.f, + -0.f, + 30.f, + -7.f, + 28.f, + -11.f, + 23.f, + -11.f, + 16.f, + -8.f, + 15.f, + -11.f, + 9.f, + -11.f, + 4.f, + -8.f, + 0.f, + -0.f, + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, // 28 .. 47 + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, + 59.f, + -10.f, + 50.f, + -13.f, + 46.f, + -10.f, + 36.f, + -10.f, + 32.f, + -0.f, // 48 .. 58 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 0.f, + -0.f, // 59 .. 63 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 64 .. 73 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 74 .. 85 + 4.f, + -13.f, + 13.f, + -9.f, + 23.f, + -9.f, + 36.f, + -9.f, + 0.f, + -2.f, + 0.f, + -12.f, // 86 .. 91 + 0.f, + -13.f, + 8.f, + -9.f, + 18.f, + -13.f, + 22.f, + -13.f, + 25.f, + -9.f, + 34.f, + -0.f, + 38.f, + -9.f, + 50.f, + -9.f, + 60.f, + -9.f, + 66.f, + -13.f, + 69.f, + -13.f, + 79.f, + -0.f, // 92 .. 103 + 92.f, + -8.f, + 86.f, + -6.f, + 79.f, + -8.f, + 75.f, + -7.f, + 73.f, + -11.f, + 68.f, + -0.f, + 64.f, + -7.f, + 62.f, + -11.f, + 57.f, + -11.f, + 50.f, + -8.f, + 49.f, + -11.f, + 43.f, + -11.f, + 38.f, + -8.f, + 34.f, + -0.f, + 23.f, + -10.f, + 14.f, + -13.f, + 10.f, + -10.f, + 0.f, + -10.f, + 99.f, + -0.f, // 104 .. 122 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -0.f, // 123 .. 127 + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -0.f, + 40.f, + -9.f, + 52.f, + -9.f, + 62.f, + -9.f, + 69.f, + -13.f, + 72.f, + -13.f, + 81.f, + -0.f, // 128 .. 139 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 140 .. 149 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 150 .. 155 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 156 .. 165 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 166 .. 177 + 54.f, + -8.f, + 49.f, + -6.f, + 41.f, + -8.f, + 37.f, + -7.f, + 35.f, + -11.f, + 31.f, + -0.f, + 26.f, + -7.f, + 24.f, + -11.f, + 19.f, + -11.f, + 12.f, + -8.f, + 11.f, + -11.f, + 5.f, + -11.f, + 0.f, + -8.f, + 0.f, + -0.f, // 178 .. 191 + }; struct LineRun line01 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line02 = - { - { 12u, 10u }, - { 12u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 10u}, + {12u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line03 = - { - { 22u, 6u }, - { 22u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {22u, 6u}, + {22u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line04 = - { - { 28u, 20u }, - { 28u, 20u }, - 92.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {28u, 14u}, + {28u, 14u}, + 63.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + true, + false}; struct LineRun line05 = - { - { 48u, 11u }, - { 48u, 11u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {42, 12u}, + {42, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + true, + false}; struct LineRun line06 = - { - { 59u, 5u }, - { 59u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {54u, 10u}, + {54u, 10u}, + 70.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line07 = - { - { 64u, 10u }, - { 64u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {64u, 10u}, + {64u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + true, + false}; struct LineRun line08 = - { - { 74u, 12u }, - { 74u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 1.f, - 0.f, - false, - false - }; + { + {74u, 12u}, + {74u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + true, + false}; struct LineRun line09 = - { - { 86u, 6u }, - { 86u, 6u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {86u, 6u}, + {86u, 6u}, + 45.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line10 = - { - { 92u, 12u }, - { 92u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {92u, 12u}, + {92u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line11 = - { - { 104u, 19u }, - { 104u, 19u }, - 90.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {104u, 19u}, + {104u, 19u}, + 100.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line12 = - { - { 123u, 5u }, - { 123u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {123u, 5u}, + {123u, 5u}, + 32.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line13 = - { - { 128u, 12u }, - { 128u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {128u, 12u}, + {128u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line14 = - { - { 140u, 10u }, - { 140u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {140u, 10u}, + {140u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line15 = - { - { 150u, 6u }, - { 150u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {150u, 6u}, + {150u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line16 = - { - { 156u, 10u }, - { 156u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {156u, 10u}, + {156u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + true, + false}; struct LineRun line17 = - { - { 166u, 12u }, - { 166u, 12u }, - 79.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {166u, 12u}, + {166u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line18 = - { - { 178u, 14u }, - { 178u, 14u }, - 55.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {178u, 14u}, + {178u, 14u}, + 63.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line19 = - { - { 192u, 0u }, - { 192u, 0u }, - 0.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {192u, 0u}, + {192u, 0u}, + 0.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line01 ); - lines.PushBack( line02 ); - lines.PushBack( line03 ); - lines.PushBack( line04 ); - lines.PushBack( line05 ); - lines.PushBack( line06 ); - lines.PushBack( line07 ); - lines.PushBack( line08 ); - lines.PushBack( line09 ); - lines.PushBack( line10 ); - lines.PushBack( line11 ); - lines.PushBack( line12 ); - lines.PushBack( line13 ); - lines.PushBack( line14 ); - lines.PushBack( line15 ); - lines.PushBack( line16 ); - lines.PushBack( line17 ); - lines.PushBack( line18 ); - lines.PushBack( line19 ); + lines.PushBack(line01); + lines.PushBack(line02); + lines.PushBack(line03); + lines.PushBack(line04); + lines.PushBack(line05); + lines.PushBack(line06); + lines.PushBack(line07); + lines.PushBack(line08); + lines.PushBack(line09); + lines.PushBack(line10); + lines.PushBack(line11); + lines.PushBack(line12); + lines.PushBack(line13); + lines.PushBack(line14); + lines.PushBack(line15); + lines.PushBack(line16); + lines.PushBack(line17); + lines.PushBack(line18); + lines.PushBack(line19); LayoutTextData data = - { - "Layout bidirectional text.", - "Hello world demo שלום עולם.\n" - "مرحبا بالعالم hello world שלום עולם\n" - "שלום עולם hello world demo.\n" - "hello world مرحبا بالعالم שלום עולם\n" - "Hello world demo שלום עולם.\n" - "שלום עולם hello world مرحبا بالعالم\n", - textArea, - 17u, - fontDescriptionRuns.Begin(), - layoutSize, - 192u, - positions, - 19u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 64u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout bidirectional text.", + "Hello world demo שלום עולם.\n" + "مرحبا بالعالم hello world שלום עולם\n" + "שלום עולם hello world demo.\n" + "hello world مرحبا بالعالم שלום עולם\n" + "Hello world demo שלום עולם.\n" + "שלום עולם hello world مرحبا بالعالم\n", + textArea, + 17u, + fontDescriptionRuns.Begin(), + layoutSize, + 192u, + positions, + 19u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 64u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -2012,566 +2516,890 @@ int UtcDaliTextUpdateLayout02(void) // Layout some lines of bidirectional text. Update the paragraphs at the middle. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 17u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 17u; + fontDescriptionRun02.characterRun.characterIndex = 17u; fontDescriptionRun02.characterRun.numberOfCharacters = 9u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.characterIndex = 26u; fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.characterIndex = 28u; fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; + fontDescriptionRun05.characterRun.characterIndex = 42u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; - fontDescriptionRun06.familyLength = fontHebrew.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontHebrew.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.characterIndex = 64u; fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); - fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; + memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; - fontDescriptionRun07.widthDefined = false; - fontDescriptionRun07.slantDefined = false; - fontDescriptionRun07.sizeDefined = false; + fontDescriptionRun07.widthDefined = false; + fontDescriptionRun07.slantDefined = false; + fontDescriptionRun07.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; + fontDescriptionRun08.characterRun.characterIndex = 74u; fontDescriptionRun08.characterRun.numberOfCharacters = 18u; - fontDescriptionRun08.familyLength = fontLatin.size(); - fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; - memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); + fontDescriptionRun08.familyLength = fontLatin.size(); + fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; + memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength); fontDescriptionRun08.familyDefined = true; fontDescriptionRun08.weightDefined = false; - fontDescriptionRun08.widthDefined = false; - fontDescriptionRun08.slantDefined = false; - fontDescriptionRun08.sizeDefined = false; + fontDescriptionRun08.widthDefined = false; + fontDescriptionRun08.slantDefined = false; + fontDescriptionRun08.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.characterIndex = 92u; fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); - fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; + memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; - fontDescriptionRun09.widthDefined = false; - fontDescriptionRun09.slantDefined = false; - fontDescriptionRun09.sizeDefined = false; + fontDescriptionRun09.widthDefined = false; + fontDescriptionRun09.slantDefined = false; + fontDescriptionRun09.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.characterIndex = 104u; fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); - fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; + memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; - fontDescriptionRun10.widthDefined = false; - fontDescriptionRun10.slantDefined = false; - fontDescriptionRun10.sizeDefined = false; + fontDescriptionRun10.widthDefined = false; + fontDescriptionRun10.slantDefined = false; + fontDescriptionRun10.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.characterIndex = 118u; fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); - fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; + memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; - fontDescriptionRun11.widthDefined = false; - fontDescriptionRun11.slantDefined = false; - fontDescriptionRun11.sizeDefined = false; + fontDescriptionRun11.widthDefined = false; + fontDescriptionRun11.slantDefined = false; + fontDescriptionRun11.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.characterIndex = 128u; fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); - fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; + memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; - fontDescriptionRun12.widthDefined = false; - fontDescriptionRun12.slantDefined = false; - fontDescriptionRun12.sizeDefined = false; + fontDescriptionRun12.widthDefined = false; + fontDescriptionRun12.slantDefined = false; + fontDescriptionRun12.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; + fontDescriptionRun13.characterRun.characterIndex = 145u; fontDescriptionRun13.characterRun.numberOfCharacters = 9u; - fontDescriptionRun13.familyLength = fontHebrew.size(); - fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; - memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); + fontDescriptionRun13.familyLength = fontHebrew.size(); + fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; + memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength); fontDescriptionRun13.familyDefined = true; fontDescriptionRun13.weightDefined = false; - fontDescriptionRun13.widthDefined = false; - fontDescriptionRun13.slantDefined = false; - fontDescriptionRun13.sizeDefined = false; + fontDescriptionRun13.widthDefined = false; + fontDescriptionRun13.slantDefined = false; + fontDescriptionRun13.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; + fontDescriptionRun14.characterRun.characterIndex = 154u; fontDescriptionRun14.characterRun.numberOfCharacters = 2u; - fontDescriptionRun14.familyLength = fontLatin.size(); - fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; - memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); + fontDescriptionRun14.familyLength = fontLatin.size(); + fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; + memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength); fontDescriptionRun14.familyDefined = true; fontDescriptionRun14.weightDefined = false; - fontDescriptionRun14.widthDefined = false; - fontDescriptionRun14.slantDefined = false; - fontDescriptionRun14.sizeDefined = false; + fontDescriptionRun14.widthDefined = false; + fontDescriptionRun14.slantDefined = false; + fontDescriptionRun14.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.characterIndex = 156u; fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); - fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; + memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; - fontDescriptionRun15.widthDefined = false; - fontDescriptionRun15.slantDefined = false; - fontDescriptionRun15.sizeDefined = false; + fontDescriptionRun15.widthDefined = false; + fontDescriptionRun15.slantDefined = false; + fontDescriptionRun15.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; + fontDescriptionRun16.characterRun.characterIndex = 166u; fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); + fontDescriptionRun16.familyLength = fontLatin.size(); + fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; + memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength); fontDescriptionRun16.familyDefined = true; fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; + fontDescriptionRun17.characterRun.characterIndex = 178u; fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); + fontDescriptionRun17.familyLength = fontArabic.size(); + fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; + memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength); fontDescriptionRun17.familyDefined = true; fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - fontDescriptionRuns.PushBack( fontDescriptionRun07 ); - fontDescriptionRuns.PushBack( fontDescriptionRun08 ); - fontDescriptionRuns.PushBack( fontDescriptionRun09 ); - fontDescriptionRuns.PushBack( fontDescriptionRun10 ); - fontDescriptionRuns.PushBack( fontDescriptionRun11 ); - fontDescriptionRuns.PushBack( fontDescriptionRun12 ); - fontDescriptionRuns.PushBack( fontDescriptionRun13 ); - fontDescriptionRuns.PushBack( fontDescriptionRun14 ); - fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); - Size textArea(100.f, 300.f); - Size layoutSize(92.f, 380.f); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); + fontDescriptionRuns.PushBack(fontDescriptionRun07); + fontDescriptionRuns.PushBack(fontDescriptionRun08); + fontDescriptionRuns.PushBack(fontDescriptionRun09); + fontDescriptionRuns.PushBack(fontDescriptionRun10); + fontDescriptionRuns.PushBack(fontDescriptionRun11); + fontDescriptionRuns.PushBack(fontDescriptionRun12); + fontDescriptionRuns.PushBack(fontDescriptionRun13); + fontDescriptionRuns.PushBack(fontDescriptionRun14); + fontDescriptionRuns.PushBack(fontDescriptionRun15); + fontDescriptionRuns.PushBack(fontDescriptionRun16); + fontDescriptionRuns.PushBack(fontDescriptionRun17); + Size textArea(100.f, 300.f); + Size layoutSize(100.f, 380.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, - 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 12 .. 21 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 22 .. 27 + 58.f, + -8.f, + 52.f, + -6.f, + 45.f, + -8.f, + 41.f, + -7.f, + 39.f, + -11.f, + 34.f, + -0.f, + 30.f, + -7.f, + 28.f, + -11.f, + 23.f, + -11.f, + 16.f, + -8.f, + 15.f, + -11.f, + 9.f, + -11.f, + 4.f, + -8.f, + 0.f, + -0.f, + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, // 28 .. 47 + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, + 59.f, + -10.f, + 50.f, + -13.f, + 46.f, + -10.f, + 36.f, + -10.f, + 32.f, + -0.f, // 48 .. 58 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 0.f, + -0.f, // 59 .. 63 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 64 .. 73 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 74 .. 85 + 4.f, + -13.f, + 13.f, + -9.f, + 23.f, + -9.f, + 36.f, + -9.f, + 0.f, + -2.f, + 0.f, + -12.f, // 86 .. 91 + 0.f, + -13.f, + 8.f, + -9.f, + 18.f, + -13.f, + 22.f, + -13.f, + 25.f, + -9.f, + 34.f, + -0.f, + 38.f, + -9.f, + 50.f, + -9.f, + 60.f, + -9.f, + 66.f, + -13.f, + 69.f, + -13.f, + 79.f, + -0.f, // 92 .. 103 + 92.f, + -8.f, + 86.f, + -6.f, + 79.f, + -8.f, + 75.f, + -7.f, + 73.f, + -11.f, + 68.f, + -0.f, + 64.f, + -7.f, + 62.f, + -11.f, + 57.f, + -11.f, + 50.f, + -8.f, + 49.f, + -11.f, + 43.f, + -11.f, + 38.f, + -8.f, + 34.f, + -0.f, + 23.f, + -10.f, + 14.f, + -13.f, + 10.f, + -10.f, + 0.f, + -10.f, + 99.f, + -0.f, // 104 .. 122 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -0.f, // 123 .. 127 + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -0.f, + 40.f, + -9.f, + 52.f, + -9.f, + 62.f, + -9.f, + 69.f, + -13.f, + 72.f, + -13.f, + 81.f, + -0.f, // 128 .. 139 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 140 .. 149 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 150 .. 155 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 156 .. 165 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 166 .. 177 + 54.f, + -8.f, + 49.f, + -6.f, + 41.f, + -8.f, + 37.f, + -7.f, + 35.f, + -11.f, + 31.f, + -0.f, + 26.f, + -7.f, + 24.f, + -11.f, + 19.f, + -11.f, + 12.f, + -8.f, + 11.f, + -11.f, + 5.f, + -11.f, + 0.f, + -8.f, + 0.f, + -0.f, // 178 .. 191 + }; struct LineRun line01 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line02 = - { - { 12u, 10u }, - { 12u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 10u}, + {12u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line03 = - { - { 22u, 6u }, - { 22u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {22u, 6u}, + {22u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line04 = - { - { 28u, 20u }, - { 28u, 20u }, - 92.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {28u, 14u}, + {28u, 14u}, + 63.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + true, + false}; struct LineRun line05 = - { - { 48u, 11u }, - { 48u, 11u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {42u, 12u}, + {42u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line06 = - { - { 59u, 5u }, - { 59u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {54u, 10u}, + {54u, 10u}, + 70.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line07 = - { - { 64u, 10u }, - { 64u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {64u, 10u}, + {64u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line08 = - { - { 74u, 12u }, - { 74u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 1.f, - 0.f, - false, - false - }; + { + {74u, 12u}, + {74u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 1.f, + 0.f, + false, + false}; struct LineRun line09 = - { - { 86u, 6u }, - { 86u, 6u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {86u, 6u}, + {86u, 6u}, + 45.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line10 = - { - { 92u, 12u }, - { 92u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {92u, 12u}, + {92u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line11 = - { - { 104u, 19u }, - { 104u, 19u }, - 90.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {104u, 19u}, + {104u, 19u}, + 100.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line12 = - { - { 123u, 5u }, - { 123u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {123u, 5u}, + {123u, 5u}, + 32.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line13 = - { - { 128u, 12u }, - { 128u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {128u, 12u}, + {128u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line14 = - { - { 140u, 10u }, - { 140u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {140u, 10u}, + {140u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line15 = - { - { 150u, 6u }, - { 150u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {150u, 6u}, + {150u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line16 = - { - { 156u, 10u }, - { 156u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {156u, 10u}, + {156u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line17 = - { - { 166u, 12u }, - { 166u, 12u }, - 79.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {166u, 12u}, + {166u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line18 = - { - { 178u, 14u }, - { 178u, 14u }, - 55.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {178u, 14u}, + {178u, 14u}, + 63.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line19 = - { - { 192u, 0u }, - { 192u, 0u }, - 0.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {192u, 0u}, + {192u, 0u}, + 0.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line01 ); - lines.PushBack( line02 ); - lines.PushBack( line03 ); - lines.PushBack( line04 ); - lines.PushBack( line05 ); - lines.PushBack( line06 ); - lines.PushBack( line07 ); - lines.PushBack( line08 ); - lines.PushBack( line09 ); - lines.PushBack( line10 ); - lines.PushBack( line11 ); - lines.PushBack( line12 ); - lines.PushBack( line13 ); - lines.PushBack( line14 ); - lines.PushBack( line15 ); - lines.PushBack( line16 ); - lines.PushBack( line17 ); - lines.PushBack( line18 ); - lines.PushBack( line19 ); + lines.PushBack(line01); + lines.PushBack(line02); + lines.PushBack(line03); + lines.PushBack(line04); + lines.PushBack(line05); + lines.PushBack(line06); + lines.PushBack(line07); + lines.PushBack(line08); + lines.PushBack(line09); + lines.PushBack(line10); + lines.PushBack(line11); + lines.PushBack(line12); + lines.PushBack(line13); + lines.PushBack(line14); + lines.PushBack(line15); + lines.PushBack(line16); + lines.PushBack(line17); + lines.PushBack(line18); + lines.PushBack(line19); LayoutTextData data = - { - "Layout bidirectional text.", - "Hello world demo שלום עולם.\n" - "مرحبا بالعالم hello world שלום עולם\n" - "שלום עולם hello world demo.\n" - "hello world مرحبا بالعالم שלום עולם\n" - "Hello world demo שלום עולם.\n" - "שלום עולם hello world مرحبا بالعالم\n", - textArea, - 17u, - fontDescriptionRuns.Begin(), - layoutSize, - 192u, - positions, - 19u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 64u, - 64u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout bidirectional text.", + "Hello world demo שלום עולם.\n" + "مرحبا بالعالم hello world שלום עולם\n" + "שלום עולם hello world demo.\n" + "hello world مرحبا بالعالم שלום עולם\n" + "Hello world demo שלום עולם.\n" + "שלום עולם hello world مرحبا بالعالم\n", + textArea, + 17u, + fontDescriptionRuns.Begin(), + layoutSize, + 192u, + positions, + 19u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 64u, + 64u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -2587,566 +3415,890 @@ int UtcDaliTextUpdateLayout03(void) // Layout some lines of bidirectional text. Update the paragraphs at the middle. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 17u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 17u; + fontDescriptionRun02.characterRun.characterIndex = 17u; fontDescriptionRun02.characterRun.numberOfCharacters = 9u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.characterIndex = 26u; fontDescriptionRun03.characterRun.numberOfCharacters = 2u; - fontDescriptionRun03.familyLength = fontLatin.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontLatin.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.characterIndex = 28u; fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 42u; + fontDescriptionRun05.characterRun.characterIndex = 42u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 54u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; - fontDescriptionRun06.familyLength = fontHebrew.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontHebrew.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.characterIndex = 64u; fontDescriptionRun07.characterRun.numberOfCharacters = 10u; - fontDescriptionRun07.familyLength = fontHebrew.size(); - fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); + fontDescriptionRun07.familyLength = fontHebrew.size(); + fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; + memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; - fontDescriptionRun07.widthDefined = false; - fontDescriptionRun07.slantDefined = false; - fontDescriptionRun07.sizeDefined = false; + fontDescriptionRun07.widthDefined = false; + fontDescriptionRun07.slantDefined = false; + fontDescriptionRun07.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 74u; + fontDescriptionRun08.characterRun.characterIndex = 74u; fontDescriptionRun08.characterRun.numberOfCharacters = 18u; - fontDescriptionRun08.familyLength = fontLatin.size(); - fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; - memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength ); + fontDescriptionRun08.familyLength = fontLatin.size(); + fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength]; + memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength); fontDescriptionRun08.familyDefined = true; fontDescriptionRun08.weightDefined = false; - fontDescriptionRun08.widthDefined = false; - fontDescriptionRun08.slantDefined = false; - fontDescriptionRun08.sizeDefined = false; + fontDescriptionRun08.widthDefined = false; + fontDescriptionRun08.slantDefined = false; + fontDescriptionRun08.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.characterIndex = 92u; fontDescriptionRun09.characterRun.numberOfCharacters = 12u; - fontDescriptionRun09.familyLength = fontLatin.size(); - fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); + fontDescriptionRun09.familyLength = fontLatin.size(); + fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; + memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; - fontDescriptionRun09.widthDefined = false; - fontDescriptionRun09.slantDefined = false; - fontDescriptionRun09.sizeDefined = false; + fontDescriptionRun09.widthDefined = false; + fontDescriptionRun09.slantDefined = false; + fontDescriptionRun09.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.characterIndex = 104u; fontDescriptionRun10.characterRun.numberOfCharacters = 14u; - fontDescriptionRun10.familyLength = fontArabic.size(); - fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); + fontDescriptionRun10.familyLength = fontArabic.size(); + fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; + memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; - fontDescriptionRun10.widthDefined = false; - fontDescriptionRun10.slantDefined = false; - fontDescriptionRun10.sizeDefined = false; + fontDescriptionRun10.widthDefined = false; + fontDescriptionRun10.slantDefined = false; + fontDescriptionRun10.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.characterIndex = 118u; fontDescriptionRun11.characterRun.numberOfCharacters = 10u; - fontDescriptionRun11.familyLength = fontHebrew.size(); - fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); + fontDescriptionRun11.familyLength = fontHebrew.size(); + fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; + memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; - fontDescriptionRun11.widthDefined = false; - fontDescriptionRun11.slantDefined = false; - fontDescriptionRun11.sizeDefined = false; + fontDescriptionRun11.widthDefined = false; + fontDescriptionRun11.slantDefined = false; + fontDescriptionRun11.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.characterIndex = 128u; fontDescriptionRun12.characterRun.numberOfCharacters = 17u; - fontDescriptionRun12.familyLength = fontLatin.size(); - fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); + fontDescriptionRun12.familyLength = fontLatin.size(); + fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; + memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; - fontDescriptionRun12.widthDefined = false; - fontDescriptionRun12.slantDefined = false; - fontDescriptionRun12.sizeDefined = false; + fontDescriptionRun12.widthDefined = false; + fontDescriptionRun12.slantDefined = false; + fontDescriptionRun12.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 145u; + fontDescriptionRun13.characterRun.characterIndex = 145u; fontDescriptionRun13.characterRun.numberOfCharacters = 9u; - fontDescriptionRun13.familyLength = fontHebrew.size(); - fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; - memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength ); + fontDescriptionRun13.familyLength = fontHebrew.size(); + fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength]; + memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength); fontDescriptionRun13.familyDefined = true; fontDescriptionRun13.weightDefined = false; - fontDescriptionRun13.widthDefined = false; - fontDescriptionRun13.slantDefined = false; - fontDescriptionRun13.sizeDefined = false; + fontDescriptionRun13.widthDefined = false; + fontDescriptionRun13.slantDefined = false; + fontDescriptionRun13.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 154u; + fontDescriptionRun14.characterRun.characterIndex = 154u; fontDescriptionRun14.characterRun.numberOfCharacters = 2u; - fontDescriptionRun14.familyLength = fontLatin.size(); - fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; - memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength ); + fontDescriptionRun14.familyLength = fontLatin.size(); + fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength]; + memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength); fontDescriptionRun14.familyDefined = true; fontDescriptionRun14.weightDefined = false; - fontDescriptionRun14.widthDefined = false; - fontDescriptionRun14.slantDefined = false; - fontDescriptionRun14.sizeDefined = false; + fontDescriptionRun14.widthDefined = false; + fontDescriptionRun14.slantDefined = false; + fontDescriptionRun14.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.characterIndex = 156u; fontDescriptionRun15.characterRun.numberOfCharacters = 10u; - fontDescriptionRun15.familyLength = fontHebrew.size(); - fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength ); + fontDescriptionRun15.familyLength = fontHebrew.size(); + fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; + memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength); fontDescriptionRun15.familyDefined = true; fontDescriptionRun15.weightDefined = false; - fontDescriptionRun15.widthDefined = false; - fontDescriptionRun15.slantDefined = false; - fontDescriptionRun15.sizeDefined = false; + fontDescriptionRun15.widthDefined = false; + fontDescriptionRun15.slantDefined = false; + fontDescriptionRun15.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun16; - fontDescriptionRun16.characterRun.characterIndex = 166u; + fontDescriptionRun16.characterRun.characterIndex = 166u; fontDescriptionRun16.characterRun.numberOfCharacters = 12u; - fontDescriptionRun16.familyLength = fontLatin.size(); - fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; - memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength ); + fontDescriptionRun16.familyLength = fontLatin.size(); + fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength]; + memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength); fontDescriptionRun16.familyDefined = true; fontDescriptionRun16.weightDefined = false; - fontDescriptionRun16.widthDefined = false; - fontDescriptionRun16.slantDefined = false; - fontDescriptionRun16.sizeDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; // Set a known font description FontDescriptionRun fontDescriptionRun17; - fontDescriptionRun17.characterRun.characterIndex = 178u; + fontDescriptionRun17.characterRun.characterIndex = 178u; fontDescriptionRun17.characterRun.numberOfCharacters = 14u; - fontDescriptionRun17.familyLength = fontArabic.size(); - fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; - memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength ); + fontDescriptionRun17.familyLength = fontArabic.size(); + fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength]; + memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength); fontDescriptionRun17.familyDefined = true; fontDescriptionRun17.weightDefined = false; - fontDescriptionRun17.widthDefined = false; - fontDescriptionRun17.slantDefined = false; - fontDescriptionRun17.sizeDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - fontDescriptionRuns.PushBack( fontDescriptionRun07 ); - fontDescriptionRuns.PushBack( fontDescriptionRun08 ); - fontDescriptionRuns.PushBack( fontDescriptionRun09 ); - fontDescriptionRuns.PushBack( fontDescriptionRun10 ); - fontDescriptionRuns.PushBack( fontDescriptionRun11 ); - fontDescriptionRuns.PushBack( fontDescriptionRun12 ); - fontDescriptionRuns.PushBack( fontDescriptionRun13 ); - fontDescriptionRuns.PushBack( fontDescriptionRun14 ); - fontDescriptionRuns.PushBack( fontDescriptionRun15 ); - fontDescriptionRuns.PushBack( fontDescriptionRun16 ); - fontDescriptionRuns.PushBack( fontDescriptionRun17 ); - Size textArea(100.f, 300.f); - Size layoutSize(92.f, 380.f); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); + fontDescriptionRuns.PushBack(fontDescriptionRun07); + fontDescriptionRuns.PushBack(fontDescriptionRun08); + fontDescriptionRuns.PushBack(fontDescriptionRun09); + fontDescriptionRuns.PushBack(fontDescriptionRun10); + fontDescriptionRuns.PushBack(fontDescriptionRun11); + fontDescriptionRuns.PushBack(fontDescriptionRun12); + fontDescriptionRuns.PushBack(fontDescriptionRun13); + fontDescriptionRuns.PushBack(fontDescriptionRun14); + fontDescriptionRuns.PushBack(fontDescriptionRun15); + fontDescriptionRuns.PushBack(fontDescriptionRun16); + fontDescriptionRuns.PushBack(fontDescriptionRun17); + Size textArea(100.f, 300.f); + Size layoutSize(100.f, 380.f); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f, - 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, - 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, - }; + { + 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 12 .. 21 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 22 .. 27 + 58.f, + -8.f, + 52.f, + -6.f, + 45.f, + -8.f, + 41.f, + -7.f, + 39.f, + -11.f, + 34.f, + -0.f, + 30.f, + -7.f, + 28.f, + -11.f, + 23.f, + -11.f, + 16.f, + -8.f, + 15.f, + -11.f, + 9.f, + -11.f, + 4.f, + -8.f, + 0.f, + -0.f, + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, // 28 .. 47 + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, + 59.f, + -10.f, + 50.f, + -13.f, + 46.f, + -10.f, + 36.f, + -10.f, + 32.f, + -0.f, // 48 .. 58 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 0.f, + -0.f, // 59 .. 63 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 64 .. 73 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 74 .. 85 + 4.f, + -13.f, + 13.f, + -9.f, + 23.f, + -9.f, + 36.f, + -9.f, + 0.f, + -2.f, + 0.f, + -12.f, // 86 .. 91 + 0.f, + -13.f, + 8.f, + -9.f, + 18.f, + -13.f, + 22.f, + -13.f, + 25.f, + -9.f, + 34.f, + -0.f, + 38.f, + -9.f, + 50.f, + -9.f, + 60.f, + -9.f, + 66.f, + -13.f, + 69.f, + -13.f, + 79.f, + -0.f, // 92 .. 103 + 92.f, + -8.f, + 86.f, + -6.f, + 79.f, + -8.f, + 75.f, + -7.f, + 73.f, + -11.f, + 68.f, + -0.f, + 64.f, + -7.f, + 62.f, + -11.f, + 57.f, + -11.f, + 50.f, + -8.f, + 49.f, + -11.f, + 43.f, + -11.f, + 38.f, + -8.f, + 34.f, + -0.f, + 23.f, + -10.f, + 14.f, + -13.f, + 10.f, + -10.f, + 0.f, + -10.f, + 99.f, + -0.f, // 104 .. 122 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -0.f, // 123 .. 127 + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -0.f, + 40.f, + -9.f, + 52.f, + -9.f, + 62.f, + -9.f, + 69.f, + -13.f, + 72.f, + -13.f, + 81.f, + -0.f, // 128 .. 139 + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 68.f, + -10.f, + 59.f, + -13.f, + 54.f, + -10.f, + 45.f, + -10.f, + 79.f, + -0.f, // 140 .. 149 + 23.f, + -10.f, + 19.f, + -10.f, + 10.f, + -13.f, + 0.f, + -10.f, + 32.f, + -2.f, + 36.f, + -12.f, // 150 .. 155 + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, // 156 .. 165 + 4.f, + -13.f, + 12.f, + -9.f, + 22.f, + -13.f, + 26.f, + -13.f, + 29.f, + -9.f, + 38.f, + -0.f, + 42.f, + -9.f, + 54.f, + -9.f, + 64.f, + -9.f, + 70.f, + -13.f, + 73.f, + -13.f, + 0.f, + -0.f, // 166 .. 177 + 54.f, + -8.f, + 49.f, + -6.f, + 41.f, + -8.f, + 37.f, + -7.f, + 35.f, + -11.f, + 31.f, + -0.f, + 26.f, + -7.f, + 24.f, + -11.f, + 19.f, + -11.f, + 12.f, + -8.f, + 11.f, + -11.f, + 5.f, + -11.f, + 0.f, + -8.f, + 0.f, + -0.f, // 178 .. 191 + }; struct LineRun line01 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line02 = - { - { 12u, 10u }, - { 12u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {12u, 10u}, + {12u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line03 = - { - { 22u, 6u }, - { 22u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {22u, 6u}, + {22u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line04 = - { - { 28u, 20u }, - { 28u, 20u }, - 92.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {28u, 14u}, + {28u, 14u}, + 63.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line05 = - { - { 48u, 11u }, - { 48u, 11u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {42u, 12u}, + {42u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line06 = - { - { 59u, 5u }, - { 59u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {54u, 10u}, + {54u, 10u}, + 70.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line07 = - { - { 64u, 10u }, - { 64u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {64u, 10u}, + {64u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line08 = - { - { 74u, 12u }, - { 74u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 1.f, - 0.f, - false, - false - }; + { + {74u, 12u}, + {74u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 1.f, + 0.f, + false, + false}; struct LineRun line09 = - { - { 86u, 6u }, - { 86u, 6u }, - 43.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {86u, 6u}, + {86u, 6u}, + 45.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line10 = - { - { 92u, 12u }, - { 92u, 12u }, - 78.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {92u, 12u}, + {92u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line11 = - { - { 104u, 19u }, - { 104u, 19u }, - 90.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {104u, 19u}, + {104u, 19u}, + 100.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line12 = - { - { 123u, 5u }, - { 123u, 5u }, - 31.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {123u, 5u}, + {123u, 5u}, + 32.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line13 = - { - { 128u, 12u }, - { 128u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {128u, 12u}, + {128u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line14 = - { - { 140u, 10u }, - { 140u, 10u }, - 76.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {140u, 10u}, + {140u, 10u}, + 79.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line15 = - { - { 150u, 6u }, - { 150u, 6u }, - 34.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {150u, 6u}, + {150u, 6u}, + 35.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line16 = - { - { 156u, 10u }, - { 156u, 10u }, - 67.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {156u, 10u}, + {156u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line17 = - { - { 166u, 12u }, - { 166u, 12u }, - 79.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {166u, 12u}, + {166u, 12u}, + 79.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line18 = - { - { 178u, 14u }, - { 178u, 14u }, - 55.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {178u, 14u}, + {178u, 14u}, + 63.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; struct LineRun line19 = - { - { 192u, 0u }, - { 192u, 0u }, - 0.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - false - }; + { + {192u, 0u}, + {192u, 0u}, + 0.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; Vector lines; - lines.PushBack( line01 ); - lines.PushBack( line02 ); - lines.PushBack( line03 ); - lines.PushBack( line04 ); - lines.PushBack( line05 ); - lines.PushBack( line06 ); - lines.PushBack( line07 ); - lines.PushBack( line08 ); - lines.PushBack( line09 ); - lines.PushBack( line10 ); - lines.PushBack( line11 ); - lines.PushBack( line12 ); - lines.PushBack( line13 ); - lines.PushBack( line14 ); - lines.PushBack( line15 ); - lines.PushBack( line16 ); - lines.PushBack( line17 ); - lines.PushBack( line18 ); - lines.PushBack( line19 ); + lines.PushBack(line01); + lines.PushBack(line02); + lines.PushBack(line03); + lines.PushBack(line04); + lines.PushBack(line05); + lines.PushBack(line06); + lines.PushBack(line07); + lines.PushBack(line08); + lines.PushBack(line09); + lines.PushBack(line10); + lines.PushBack(line11); + lines.PushBack(line12); + lines.PushBack(line13); + lines.PushBack(line14); + lines.PushBack(line15); + lines.PushBack(line16); + lines.PushBack(line17); + lines.PushBack(line18); + lines.PushBack(line19); LayoutTextData data = - { - "Layout bidirectional text.", - "Hello world demo שלום עולם.\n" - "مرحبا بالعالم hello world שלום עולם\n" - "שלום עולם hello world demo.\n" - "hello world مرحبا بالعالم שלום עולם\n" - "Hello world demo שלום עולם.\n" - "שלום עולם hello world مرحبا بالعالم\n", - textArea, - 17u, - fontDescriptionRuns.Begin(), - layoutSize, - 192u, - positions, - 19u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 128u, - 64u, - false, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout bidirectional text.", + "Hello world demo שלום עולם.\n" + "مرحبا بالعالم hello world שלום עולם\n" + "שלום עולם hello world demo.\n" + "hello world مرحبا بالعالم שלום עולם\n" + "Hello world demo שלום עולם.\n" + "שלום עולם hello world مرحبا بالعالم\n", + textArea, + 17u, + fontDescriptionRuns.Begin(), + layoutSize, + 192u, + positions, + 19u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 128u, + 64u, + false, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3162,68 +4314,92 @@ int UtcDaliTextLayoutEllipsis01(void) // Layout single-line LTR text with ellipsis. - const std::string fontLatin( "TizenSans" ); + const std::string fontLatin("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 51u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); struct LineRun line01 = - { - { 0u, 13u }, - { 0u, 13u }, - 93.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - true - }; + { + {0u, 13u}, + {0u, 13u}, + 93.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + true}; Vector lines; - lines.PushBack( line01 ); + lines.PushBack(line01); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f, - }; - - Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 20.f ); + { + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -0.f, + 40.f, + -9.f, + 52.f, + -9.f, + 62.f, + -9.f, + 69.f, + -13.f, + 72.f, + -13.f, + 81.f, + -0.f, + 85.f, + -13.f, + }; + + Size textArea(100.f, 50.f); + Size layoutSize(100.f, 20.f); LayoutTextData data = - { - "Layout single-line LTR text with ellipsis.", - "Hello world demo hello world demo hello world demo.", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 13u, - positions, - 1u, - lines.Begin(), - Layout::Engine::SINGLE_LINE_BOX, - 0u, - 51u, - true, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout single-line LTR text with ellipsis.", + "Hello world demo hello world demo hello world demo.", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 13u, + positions, + 1u, + lines.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 51u, + true, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3239,83 +4415,127 @@ int UtcDaliTextLayoutEllipsis02(void) // Layout multi-line LTR text with ellipsis. - const std::string fontLatin( "TizenSans" ); + const std::string fontLatin("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 51u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); struct LineRun line01 = - { - { 0u, 12u }, - { 0u, 12u }, - 80.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 12u}, + {0u, 12u}, + 81.f, + 15.f, + -5.f, + 4.f, + 0.f, + 0.f, + false, + false}; struct LineRun line02 = - { - { 12u, 12u }, - { 12u, 12u }, - 93.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - true - }; + { + {12u, 12u}, + {12u, 12u}, + 95.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + true}; Vector lines; - lines.PushBack( line01 ); - lines.PushBack( line02 ); + lines.PushBack(line01); + lines.PushBack(line02); float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, - 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 52.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f, - }; - - Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 40.f ); + { + 0.f, + -12.f, + 10.f, + -9.f, + 20.f, + -13.f, + 24.f, + -13.f, + 27.f, + -9.f, + 36.f, + -0.f, + 40.f, + -9.f, + 52.f, + -9.f, + 62.f, + -9.f, + 69.f, + -13.f, + 72.f, + -13.f, + 81.f, + -0.f, + 0.f, + -13.f, + 9.f, + -9.f, + 19.f, + -9.f, + 32.f, + -9.f, + 41.f, + -0.f, + 46.f, + -13.f, + 54.f, + -9.f, + 64.f, + -13.f, + 68.f, + -13.f, + 71.f, + -9.f, + 80.f, + -0.f, + 84.f, + -9.f, + }; + + Size textArea(100.f, 50.f); + Size layoutSize(100.f, 40.f); LayoutTextData data = - { - "Layout multi-line LTR text with ellipsis.", - "Hello world demo hello world demo hello world demo.", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 24u, - positions, - 2u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 51u, - true, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout multi-line LTR text with ellipsis.", + "Hello world demo hello world demo hello world demo.", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 24u, + positions, + 2u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 51u, + true, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3331,134 +4551,164 @@ int UtcDaliTextLayoutEllipsis03(void) // Layout single-line RTL text with ellipsis. - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 10u; - fontDescriptionRun01.familyLength = fontHebrew.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontHebrew.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; + fontDescriptionRun02.characterRun.characterIndex = 10u; fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontArabic.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 24u; + fontDescriptionRun03.characterRun.characterIndex = 24u; fontDescriptionRun03.characterRun.numberOfCharacters = 10u; - fontDescriptionRun03.familyLength = fontHebrew.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontHebrew.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 34u; + fontDescriptionRun04.characterRun.characterIndex = 34u; fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; + fontDescriptionRun06.characterRun.characterIndex = 58u; fontDescriptionRun06.characterRun.numberOfCharacters = 15u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); struct LineRun line01 = - { - { 0u, 16u }, - { 0u, 16u }, - 95.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - true - }; + { + {0u, 14u}, + {0u, 14u}, + 98.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + true}; Vector lines; - lines.PushBack( line01 ); - - float positions[] = - { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - }; + lines.PushBack(line01); - Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 20.f ); + float positions[] = + { + 87.f, + -10.f, + 79.f, + -13.f, + 74.f, + -10.f, + 65.f, + -10.f, + 60.f, + -0.f, + 51.f, + -10.f, + 47.f, + -10.f, + 38.f, + -13.f, + 29.f, + -10.f, + 24.f, + -0.f, + 17.f, + -8.f, + 12.f, + -6.f, + 4.f, + -8.f, + 0.f, + -7.f, + 78.f, + -11.f, + 73.f, + -0.f, + }; + + Size textArea(100.f, 50.f); + Size layoutSize(100.f, 20.f); LayoutTextData data = - { - "Layout single-line RTL text with ellipsis.", - "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - layoutSize, - 16u, - positions, - 1u, - lines.Begin(), - Layout::Engine::SINGLE_LINE_BOX, - 0u, - 72u, - true, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout single-line RTL text with ellipsis.", + "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + layoutSize, + 16u, + positions, + 1u, + lines.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 72u, + true, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3474,149 +4724,213 @@ int UtcDaliTextLayoutEllipsis04(void) // Layout multi-line RTL text with ellipsis. - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 10u; - fontDescriptionRun01.familyLength = fontHebrew.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontHebrew.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; + fontDescriptionRun02.characterRun.characterIndex = 10u; fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontArabic.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 24u; + fontDescriptionRun03.characterRun.characterIndex = 24u; fontDescriptionRun03.characterRun.numberOfCharacters = 10u; - fontDescriptionRun03.familyLength = fontHebrew.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontHebrew.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 34u; + fontDescriptionRun04.characterRun.characterIndex = 34u; fontDescriptionRun04.characterRun.numberOfCharacters = 14u; - fontDescriptionRun04.familyLength = fontArabic.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontArabic.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; + fontDescriptionRun06.characterRun.characterIndex = 58u; fontDescriptionRun06.characterRun.numberOfCharacters = 15u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); struct LineRun line01 = - { - { 0u, 16u }, - { 0u, 16u }, - 96.f, - 15.f, - -5.f, - 3.f, - 0.f, - 0.f, - false, - false - }; + { + {0u, 10u}, + {0u, 10u}, + 70.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + false}; struct LineRun line02 = - { - { 16u, 18u }, - { 16u, 18u }, - 97.f, - 15.f, - -5.f, - 4.f, - 0.f, - 0.f, - false, - true - }; + { + {10u, 19u}, + {10u, 19u}, + 99.f, + 15.f, + -5.f, + 5.f, + 0.f, + 0.f, + false, + true}; Vector lines; - lines.PushBack( line01 ); - lines.PushBack( line02 ); + lines.PushBack(line01); + lines.PushBack(line02); float positions[] = - { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f, - }; - - Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 40.f ); + { + 63.f, + -10.f, + 54.f, + -13.f, + 50.f, + -10.f, + 41.f, + -10.f, + 36.f, + -0.f, + 27.f, + -10.f, + 23.f, + -10.f, + 14.f, + -13.f, + 4.f, + -10.f, + 0.f, + -0.f, + 96.f, + -8.f, + 91.f, + -6.f, + 83.f, + -8.f, + 79.f, + -7.f, + 78.f, + -11.f, + 73.f, + -0.f, + 68.f, + -7.f, + 67.f, + -11.f, + 61.f, + -11.f, + 55.f, + -8.f, + 53.f, + -11.f, + 47.f, + -11.f, + 42.f, + -8.f, + 38.f, + -0.f, + 27.f, + -10.f, + 18.f, + -13.f, + 14.f, + -10.f, + 4.f, + -10.f, + 0.f, + -0.f, + 92.f, + -10.f, + 88.f, + -10.f, + 79.f, + -13.f, + 70.f, + -10.f, + 65.f, + -0.f, + }; + + Size textArea(100.f, 50.f); + Size layoutSize(100.f, 40.f); LayoutTextData data = - { - "Layout single-line RTL text with ellipsis.", - "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - layoutSize, - 34u, - positions, - 2u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 72u, - true, - true - }; - - if( !LayoutTextTest( data ) ) + { + "Layout multi-line RTL text with ellipsis.", + "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + layoutSize, + 34u, + positions, + 2u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 72u, + true, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3630,122 +4944,66 @@ int UtcDaliTextLayoutEllipsis05(void) ToolkitTestApplication application; tet_infoline(" UtcDaliTextLayoutEllipsis05"); - const std::string fontLatin( "TizenSans" ); + const std::string fontLatin("TizenSans"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 51u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); struct LineRun line01 = - { - { 0u, 11u }, - { 0u, 11u }, - 80.f, - 15.f, - -5.f, - 0.f, - 0.f, - 0.f, - false, - true - }; + { + {0u, 11u}, + {0u, 11u}, + 80.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + true}; Vector lines; - lines.PushBack( line01 ); + lines.PushBack(line01); float positions[] = - { - 1.f, -12.f - }; + { + 0.f, -12.f}; - Size textArea( 100.f, 19.f ); - Size layoutSize( 100.f, 20.f ); + Size textArea(100.f, 19.f); + Size layoutSize(100.f, 20.f); LayoutTextData data = - { - "Not enough height.", - "Hello world", - textArea, - 1u, - fontDescriptionRuns.Begin(), - layoutSize, - 1u, - positions, - 1u, - lines.Begin(), - Layout::Engine::MULTI_LINE_BOX, - 0u, - 11u, - true, - true - }; - - if( !LayoutTextTest( data ) ) - { - tet_result(TET_FAIL); - } - - tet_result(TET_PASS); - END_TEST; -} - -int UtcDaliTextReorderLayout01(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliTextReorderLayout01"); - - // Reorder lines. No right to left characters. - - const std::string fontLatin( "TizenSans" ); - - // Set a known font description - FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 11u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); - fontDescriptionRun01.familyDefined = true; - fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; - - Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - - float positions[] = - { - 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, - }; - - Size textArea( 100.f, 300.f ); - - ReLayoutRightToLeftLinesData data = - { - "Text with no right to left text.", - "Hello world", - textArea, - 1u, - fontDescriptionRuns.Begin(), - 11u, - positions, - 0u, - 11u - }; - - if( !ReLayoutRightToLeftLinesTest( data ) ) + { + "Not enough height.", + "Hello world", + textArea, + 1u, + fontDescriptionRuns.Begin(), + layoutSize, + 1u, + positions, + 1u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, + 0u, + 11u, + true, + DevelText::EllipsisPosition::END, + true}; + + if(!LayoutTextTest(data)) { tet_result(TET_FAIL); } @@ -3754,125 +5012,118 @@ int UtcDaliTextReorderLayout01(void) END_TEST; } -int UtcDaliTextReorderLayout02(void) +int UtcDaliTextAlign01(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextReorderLayout02"); + tet_infoline(" UtcDaliTextAlign01"); - // Reorder lines of the first paragraph. + // Calculate text alignment. - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 10u; - fontDescriptionRun01.familyLength = fontHebrew.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 24u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.numberOfCharacters = 14u; + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - - float positions[] = - { - 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f, - 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, - }; - - Size textArea( 100.f, 300.f ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - ReLayoutRightToLeftLinesData data = - { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - 72u, - positions, - 0u, - 24u - }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - if( !ReLayoutRightToLeftLinesTest( data ) ) + Size textArea(100.f, 300.f); + AlignData data = + { + "Begin alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, + 0u, + 22u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -3881,125 +5132,118 @@ int UtcDaliTextReorderLayout02(void) END_TEST; } -int UtcDaliTextReorderLayout03(void) +int UtcDaliTextAlign02(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextReorderLayout03"); + tet_infoline(" UtcDaliTextAlign02"); - // Reorder lines of the mid paragraph. + // Calculate text alignment. - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 10u; - fontDescriptionRun01.familyLength = fontHebrew.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 24u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.numberOfCharacters = 14u; + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - - float positions[] = - { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, - 86.f, -8.f, 81.f, -6.f, 74.f, -8.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f, - 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f, - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, - }; + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - Size textArea( 100.f, 300.f ); - - ReLayoutRightToLeftLinesData data = - { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - 72u, - positions, - 24u, - 24u - }; + float positions[] = {0.f, 0.f, 33.f, 19.f, 0.f, 0.f}; - if( !ReLayoutRightToLeftLinesTest( data ) ) + Size textArea(100.f, 300.f); + AlignData data = + { + "Begin alignment for the mid paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, + 22u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4008,125 +5252,118 @@ int UtcDaliTextReorderLayout03(void) END_TEST; } -int UtcDaliTextReorderLayout04(void) +int UtcDaliTextAlign03(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextReorderLayout04"); + tet_infoline(" UtcDaliTextAlign03"); - // Reorder lines of the last paragraph. + // Calculate text alignment. - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 10u; - fontDescriptionRun01.familyLength = fontHebrew.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 24u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.numberOfCharacters = 14u; + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - - float positions[] = - { - 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, - 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f, - 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f, - 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f, - 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f, - }; - - Size textArea( 100.f, 300.f ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - ReLayoutRightToLeftLinesData data = - { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - 72u, - positions, - 48u, - 24u - }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - if( !ReLayoutRightToLeftLinesTest( data ) ) + Size textArea(100.f, 300.f); + AlignData data = + { + "Begin alignment for the last paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, + 48u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4135,119 +5372,118 @@ int UtcDaliTextReorderLayout04(void) END_TEST; } -int UtcDaliTextAlign01(void) +int UtcDaliTextAlign04(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign01"); + tet_infoline(" UtcDaliTextAlign04"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }; + float positions[] = {9.f, 15.f, 0.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Begin alignment for the first paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::BEGIN, - Text::VerticalAlignment::TOP, - 0u, - 22u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "Center alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, + 0u, + 22u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4256,119 +5492,118 @@ int UtcDaliTextAlign01(void) END_TEST; } -int UtcDaliTextAlign02(void) +int UtcDaliTextAlign05(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign02"); + tet_infoline(" UtcDaliTextAlign05"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f }; + float positions[] = {0.f, 0.f, 14.f, 9.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Begin alignment for the mid paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::BEGIN, - Text::VerticalAlignment::TOP, - 22u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "Center alignment for the mid paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, + 22u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4377,119 +5612,118 @@ int UtcDaliTextAlign02(void) END_TEST; } -int UtcDaliTextAlign03(void) +int UtcDaliTextAlign06(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign03"); + tet_infoline(" UtcDaliTextAlign06"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 9.f, 16.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Begin alignment for the last paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::BEGIN, - Text::VerticalAlignment::TOP, - 48u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "Center alignment for the last paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, + 48u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4498,119 +5732,118 @@ int UtcDaliTextAlign03(void) END_TEST; } -int UtcDaliTextAlign04(void) +int UtcDaliTextAlign07(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign04"); + tet_infoline(" UtcDaliTextAlign07"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f }; + float positions[] = {19.f, 30.f, 0.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Center alignment for the first paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::CENTER, - Text::VerticalAlignment::TOP, - 0u, - 22u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "End alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 0u, + 22u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4619,119 +5852,118 @@ int UtcDaliTextAlign04(void) END_TEST; } -int UtcDaliTextAlign05(void) +int UtcDaliTextAlign08(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign05"); + tet_infoline(" UtcDaliTextAlign08"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f }; + float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Center alignment for the mid paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::CENTER, - Text::VerticalAlignment::TOP, - 22u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "End alignment for the mid paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 22u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4740,119 +5972,118 @@ int UtcDaliTextAlign05(void) END_TEST; } -int UtcDaliTextAlign06(void) +int UtcDaliTextAlign09(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign06"); + tet_infoline(" UtcDaliTextAlign09"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 19.f, 33.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "Center alignment for the last paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::CENTER, - Text::VerticalAlignment::TOP, - 48u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "End alignment for the last paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 48u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4861,119 +6092,118 @@ int UtcDaliTextAlign06(void) END_TEST; } -int UtcDaliTextAlign07(void) +int UtcDaliTextAlign10(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign07"); + tet_infoline(" UtcDaliTextAlign10"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "End alignment for the first paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::END, - Text::VerticalAlignment::TOP, - 0u, - 22u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "Begin alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 0u, + 22u, + 6u, + positions, + Dali::LayoutDirection::RIGHT_TO_LEFT, + true}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -4982,119 +6212,118 @@ int UtcDaliTextAlign07(void) END_TEST; } -int UtcDaliTextAlign08(void) +int UtcDaliTextAlign11(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign08"); + tet_infoline(" UtcDaliTextAlign11"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f }; + float positions[] = {19.f, 30.f, 33.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "End alignment for the mid paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::END, - Text::VerticalAlignment::TOP, - 22u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "End alignment for the last paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 0u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + true}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -5103,119 +6332,118 @@ int UtcDaliTextAlign08(void) END_TEST; } -int UtcDaliTextAlign09(void) +int UtcDaliTextAlign12(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign09"); + tet_infoline(" UtcDaliTextAlign12"); // Calculate text alignment. - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontLatin("TizenSans"); + const std::string fontHebrew("TizenSansHebrew"); + const std::string fontArabic("TizenSansArabic"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.characterIndex = 0u; fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.familyLength = fontLatin.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.characterIndex = 12u; fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.familyLength = fontHebrew.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; + fontDescriptionRun03.characterRun.characterIndex = 22u; fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.characterIndex = 36u; fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; + fontDescriptionRun04.widthDefined = false; + fontDescriptionRun04.slantDefined = false; + fontDescriptionRun04.sizeDefined = false; FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; + fontDescriptionRun05.characterRun.characterIndex = 48u; fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); + fontDescriptionRun05.familyLength = fontLatin.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + fontDescriptionRun05.widthDefined = false; + fontDescriptionRun05.slantDefined = false; + fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; + fontDescriptionRun06.characterRun.characterIndex = 60u; fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); + fontDescriptionRun06.familyLength = fontArabic.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength); fontDescriptionRun06.familyDefined = true; fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + fontDescriptionRun06.widthDefined = false; + fontDescriptionRun06.slantDefined = false; + fontDescriptionRun06.sizeDefined = false; Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + fontDescriptionRuns.PushBack(fontDescriptionRun01); + fontDescriptionRuns.PushBack(fontDescriptionRun02); + fontDescriptionRuns.PushBack(fontDescriptionRun03); + fontDescriptionRuns.PushBack(fontDescriptionRun04); + fontDescriptionRuns.PushBack(fontDescriptionRun05); + fontDescriptionRuns.PushBack(fontDescriptionRun06); - float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f }; + float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - Size textArea( 100.f, 300.f ); + Size textArea(100.f, 300.f); AlignData data = - { - "End alignment for the last paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::END, - Text::VerticalAlignment::TOP, - 48u, - 26u, - 6u, - positions, - Dali::LayoutDirection::LEFT_TO_RIGHT, - false - }; - - if( !AlignTest( data ) ) + { + "Begin alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", + textArea, + 6u, + fontDescriptionRuns.Begin(), + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, + 48u, + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + true}; + + if(!AlignTest(data)) { tet_result(TET_FAIL); } @@ -5224,137 +6452,207 @@ int UtcDaliTextAlign09(void) END_TEST; } -int UtcDaliTextAlign10(void) +int UtcDaliTextLayoutSetGetDefaultLineSpacing(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign10"); + tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing"); - // Calculate text alignment. + Layout::Engine engine; + DALI_TEST_EQUALS(0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION); + + engine.SetDefaultLineSpacing(10.f); + DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION); + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextLayoutGetGlyphMetrics(void) +{ + tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics"); + + // Test retrieving metrics from group of characters - const std::string fontLatin( "TizenSans" ); - const std::string fontHebrew( "TizenSansHebrew" ); - const std::string fontArabic( "TizenSansArabic" ); + const std::string fontFamily("TizenSansHindi"); // Set a known font description FontDescriptionRun fontDescriptionRun01; - fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 12u; - fontDescriptionRun01.familyLength = fontLatin.size(); - fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); + fontDescriptionRun01.characterRun.characterIndex = 0u; + fontDescriptionRun01.characterRun.numberOfCharacters = 2u; + fontDescriptionRun01.familyLength = fontFamily.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; - fontDescriptionRun01.widthDefined = false; - fontDescriptionRun01.slantDefined = false; - fontDescriptionRun01.sizeDefined = false; + fontDescriptionRun01.widthDefined = false; + fontDescriptionRun01.slantDefined = false; + fontDescriptionRun01.sizeDefined = false; + // Set a known font description FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 12u; - fontDescriptionRun02.characterRun.numberOfCharacters = 10u; - fontDescriptionRun02.familyLength = fontHebrew.size(); - fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); + fontDescriptionRun02.characterRun.characterIndex = 0u; + fontDescriptionRun02.characterRun.numberOfCharacters = 2u; + fontDescriptionRun02.familyLength = fontFamily.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; - fontDescriptionRun02.widthDefined = false; - fontDescriptionRun02.slantDefined = false; - fontDescriptionRun02.sizeDefined = false; + fontDescriptionRun02.widthDefined = false; + fontDescriptionRun02.slantDefined = false; + fontDescriptionRun02.sizeDefined = false; + // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 22u; - fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); - fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + fontDescriptionRun03.characterRun.characterIndex = 0u; + fontDescriptionRun03.characterRun.numberOfCharacters = 2u; + fontDescriptionRun03.familyLength = fontFamily.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; - fontDescriptionRun03.widthDefined = false; - fontDescriptionRun03.slantDefined = false; - fontDescriptionRun03.sizeDefined = false; + fontDescriptionRun03.widthDefined = false; + fontDescriptionRun03.slantDefined = false; + fontDescriptionRun03.sizeDefined = false; - FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 36u; - fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); - fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); - fontDescriptionRun04.familyDefined = true; - fontDescriptionRun04.weightDefined = false; - fontDescriptionRun04.widthDefined = false; - fontDescriptionRun04.slantDefined = false; - fontDescriptionRun04.sizeDefined = false; - - FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 12u; - fontDescriptionRun05.familyLength = fontLatin.size(); - fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); - fontDescriptionRun05.familyDefined = true; - fontDescriptionRun05.weightDefined = false; - fontDescriptionRun05.widthDefined = false; - fontDescriptionRun05.slantDefined = false; - fontDescriptionRun05.sizeDefined = false; + Vector fontDescriptionRuns01; + fontDescriptionRuns01.PushBack(fontDescriptionRun01); - FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 60u; - fontDescriptionRun06.characterRun.numberOfCharacters = 14u; - fontDescriptionRun06.familyLength = fontArabic.size(); - fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; - memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength ); - fontDescriptionRun06.familyDefined = true; - fontDescriptionRun06.weightDefined = false; - fontDescriptionRun06.widthDefined = false; - fontDescriptionRun06.slantDefined = false; - fontDescriptionRun06.sizeDefined = false; + Vector fontDescriptionRuns02; + fontDescriptionRuns02.PushBack(fontDescriptionRun02); - Vector fontDescriptionRuns; - fontDescriptionRuns.PushBack( fontDescriptionRun01 ); - fontDescriptionRuns.PushBack( fontDescriptionRun02 ); - fontDescriptionRuns.PushBack( fontDescriptionRun03 ); - fontDescriptionRuns.PushBack( fontDescriptionRun04 ); - fontDescriptionRuns.PushBack( fontDescriptionRun05 ); - fontDescriptionRuns.PushBack( fontDescriptionRun06 ); + Vector fontDescriptionRuns03; + fontDescriptionRuns03.PushBack(fontDescriptionRun03); - float positions[] = { -4.f, 0.f, 0.f, 0.f, 0.f, 0.f }; + // Set a text area. + Size textArea(100.f, 100.f); - Size textArea( 100.f, 300.f ); - AlignData data = - { - "Begin alignment for the first paragraph.", - "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", - textArea, - 6u, - fontDescriptionRuns.Begin(), - Text::HorizontalAlignment::END, - Text::VerticalAlignment::TOP, - 0u, - 22u, - 6u, - positions, - Dali::LayoutDirection::RIGHT_TO_LEFT, - true - }; + // Group: second glyph doesn't exceed the width of the first glyph + float positions01[] = {0.f, -11.f}; - if( !AlignTest( data ) ) - { - tet_result(TET_FAIL); - } + struct LineRun line01 = + { + {0u, 1u}, + {0u, 1u}, + 11.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; + Vector lines01; + lines01.PushBack(line01); - tet_result(TET_PASS); - END_TEST; -} + Size layoutSize01 = Vector2(11.f, 20.f); -int UtcDaliTextLayoutSetGetDefaultLineSpacing(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing"); + // Group: second glyph doesn't exceed the width of the first glyph + float positions02[] = { + 0.f, + -11.f, + 7.f, + -15.f, + }; - Layout::Engine engine; - DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + struct LineRun line02 = + { + {0u, 2u}, + {0u, 2u}, + 16.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; + Vector lines02; + lines02.PushBack(line02); + + Size layoutSize02 = Vector2(16.f, 20.f); + + // Group: second glyph doesn't exceed the width of the first glyph + float positions03[] = {0.f, -11.f, 2.f, -15.f}; - engine.SetDefaultLineSpacing( 10.f ); - DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + struct LineRun line03 = + { + {0u, 2u}, + {0u, 2u}, + 11.f, + 15.f, + -5.f, + 0.f, + 0.f, + 0.f, + false, + false}; + Vector lines03; + lines03.PushBack(line03); + + Size layoutSize03 = Vector2(11.f, 20.f); + + ///////////////////////////// + + struct LayoutTextData data[] = + { + {"Single glyph", + "प", + textArea, + 1u, + fontDescriptionRuns01.Begin(), + layoutSize01, + 1u, + positions01, + 1u, + lines01.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 1u, + false, + DevelText::EllipsisPosition::END, + true}, + {"Group: second glyph exceeds the width of the first glyph", + "पो", + textArea, + 1u, + fontDescriptionRuns02.Begin(), + layoutSize02, + 2u, + positions02, + 1u, + lines02.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 2u, + false, + DevelText::EllipsisPosition::END, + true}, + {"Group: second glyph doesn't exceed the width of the first glyph", + "पे", + textArea, + 1u, + fontDescriptionRuns03.Begin(), + layoutSize03, + 2u, + positions03, + 1u, + lines03.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 2u, + false, + DevelText::EllipsisPosition::END, + true}}; + const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData); + + for(unsigned int index = 0u; index < numberOfTests; ++index) + { + ToolkitTestApplication application; + if(!LayoutTextTest(data[index])) + { + tet_result(TET_FAIL); + } + } tet_result(TET_PASS); END_TEST;