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=05226d4f49b4621f325a6fb901c08e63afd281f3;hp=08a0a97ac40a263c3cf632eff1e4f4f6cf453c7d;hb=610495b8647d1a25c98bf0773ccc0dd6d1996263;hpb=c41dd692678d095817e4bf528d926cc9e1b12a92 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 100644 new mode 100755 index 08a0a97..05226d4 --- 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) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ #include #include #include -#include +#include using namespace Dali; using namespace Toolkit; @@ -51,7 +51,7 @@ struct LayoutTextData float* positions; unsigned int numberOfLines; LineRun* lines; - LayoutEngine::Layout layout; + Layout::Engine::Type layout; unsigned int startIndex; unsigned int numberOfGlyphs; bool ellipsis:1; @@ -62,7 +62,7 @@ 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; @@ -84,10 +84,10 @@ bool LayoutTextTest( const LayoutTextData& data ) 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; @@ -100,16 +100,18 @@ bool LayoutTextTest( const LayoutTextData& data ) } LayoutOptions options; - options.reorder = false; options.align = false; CreateTextModel( data.text, data.textArea, fontDescriptionRuns, options, layoutSize, - logicalModel, - visualModel, - metrics ); + textModel, + metrics, + false ); + + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; // 2) Clear the layout. Vector& lines = visualModel->mLines; @@ -152,24 +154,16 @@ bool LayoutTextTest( const LayoutTextData& data ) glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs ); // 3) Layout - LayoutEngine engine; + Layout::Engine engine; engine.SetMetrics( metrics ); - engine.SetTextEllipsisEnabled( data.ellipsis ); engine.SetLayout( data.layout ); - const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count(); - - LayoutParameters 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 ); + textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN; + textModel->mLineWrapMode = LineWrap::WORD; + textModel->mIgnoreSpacesAfterText = true; + textModel->mMatchSystemLanguageDirection = false; + Layout::Parameters layoutParameters( data.textArea, + textModel ); layoutParameters.isLastNewParagraph = isLastNewParagraph; @@ -181,10 +175,11 @@ bool LayoutTextTest( const LayoutTextData& data ) layoutSize = Vector2::ZERO; + bool isAutoScroll = false; const bool updated = engine.LayoutText( layoutParameters, - glyphPositions, - lines, - layoutSize ); + layoutSize, + data.ellipsis, + isAutoScroll ); // 4) Compare the results. @@ -204,7 +199,7 @@ bool LayoutTextTest( const LayoutTextData& data ) { 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; return false; @@ -261,7 +256,7 @@ bool LayoutTextTest( const LayoutTextData& data ) 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 ); @@ -315,113 +310,6 @@ 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 ); - - // 2) Call the ReLayoutRightToLeftLines() method. - LayoutEngine engine; - engine.SetMetrics( metrics ); - - LayoutParameters 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() ); - - 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; @@ -429,12 +317,14 @@ struct AlignData Size textArea; unsigned int numberOfFonts; FontDescriptionRun* fontDescriptions; - LayoutEngine::HorizontalAlignment horizontalAlignment; - LayoutEngine::VerticalAlignment verticalAlignment; + 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 ) @@ -452,8 +342,7 @@ bool AlignTest( const AlignData& data ) fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" ); // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; Size layoutSize; @@ -472,21 +361,26 @@ bool AlignTest( const AlignData& data ) fontDescriptionRuns, options, layoutSize, - logicalModel, - visualModel, - metrics ); + textModel, + metrics, + false ); + + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; // Call the Align method. - LayoutEngine engine; + Layout::Engine engine; engine.SetMetrics( metrics ); - engine.SetHorizontalAlignment( data.horizontalAlignment ); - engine.SetVerticalAlignment( data.verticalAlignment ); - + float alignmentOffset = 0.f; engine.Align( data.textArea, data.startIndex, data.numberOfCharacters, - visualModel->mLines ); + data.horizontalAlignment, + visualModel->mLines, + alignmentOffset, + data.layoutDirection, + data.matchSystemLanguageDirection ); // Compare results. if( data.numberOfLines != visualModel->mLines.Count() ) @@ -506,7 +400,6 @@ bool AlignTest( const AlignData& data ) return false; } } - return true; } @@ -527,6 +420,7 @@ bool AlignTest( const AlignData& data ) // UtcDaliTextLayoutMultilineText03 // UtcDaliTextLayoutMultilineText04 // UtcDaliTextLayoutMultilineText05 +// UtcDaliTextLayoutMultilineText06 // UtcDaliTextUpdateLayout01 // UtcDaliTextUpdateLayout02 // UtcDaliTextUpdateLayout03 @@ -556,61 +450,12 @@ int UtcDaliTextLayoutSetGetLayout(void) ToolkitTestApplication application; tet_infoline(" UtcDaliTextLayoutSetGetLayout"); - LayoutEngine engine; - - DALI_TEST_CHECK( LayoutEngine::SINGLE_LINE_BOX == engine.GetLayout() ); - - engine.SetLayout( LayoutEngine::MULTI_LINE_BOX ); - DALI_TEST_CHECK( LayoutEngine::MULTI_LINE_BOX == engine.GetLayout() ); - - tet_result(TET_PASS); - END_TEST; -} - -int UtcDaliTextLayoutSetGetTextEllipsisEnabled(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliTextLayoutSetGetTextEllipsisEnabled"); - - LayoutEngine engine; - - DALI_TEST_CHECK( !engine.GetTextEllipsisEnabled() ); - - engine.SetTextEllipsisEnabled( true ); - DALI_TEST_CHECK( engine.GetTextEllipsisEnabled() ); - - tet_result(TET_PASS); - END_TEST; -} - -int UtcDaliTextLayoutSetGetHorizontalAlignment(void) -{ - ToolkitTestApplication application; - tet_infoline(" "); - - LayoutEngine engine; - - DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_BEGIN == engine.GetHorizontalAlignment() ); - - engine.SetHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_END ); - DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_END == engine.GetHorizontalAlignment() ); - - tet_result(TET_PASS); - END_TEST; -} - -int UtcDaliTextLayoutSetGetVerticalAlignment(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliTextLayoutSetGetVerticalAlignment"); - - LayoutEngine engine; - - DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() ); + Layout::Engine engine; - engine.SetVerticalAlignment( LayoutEngine::VERTICAL_ALIGN_TOP ); - DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() ); + 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() ); tet_result(TET_PASS); END_TEST; @@ -621,9 +466,9 @@ int UtcDaliTextLayoutSetGetCursorWidth(void) ToolkitTestApplication application; tet_infoline(" "); - LayoutEngine engine; + 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 ); @@ -651,7 +496,7 @@ int UtcDaliTextLayoutNoText(void) NULL, 0u, NULL, - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 0u, false, @@ -705,7 +550,7 @@ int UtcDaliTextLayoutSmallTextArea01(void) NULL, 0u, NULL, - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 11u, false, @@ -746,15 +591,16 @@ int UtcDaliTextLayoutSmallTextArea02(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(1.f, 1.f); - Size layoutSize(80.f, 20.f); - float positions[] = { 1.f, -12.f, 12.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 layoutSize(81.f, 19.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, + 81.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -775,7 +621,7 @@ int UtcDaliTextLayoutSmallTextArea02(void) positions, 1u, lines.Begin(), - LayoutEngine::SINGLE_LINE_BOX, + Layout::Engine::SINGLE_LINE_BOX, 0u, 11u, false, @@ -829,14 +675,14 @@ int UtcDaliTextLayoutMultilineText01(void) fontDescriptionRuns.PushBack( fontDescriptionRun1 ); fontDescriptionRuns.PushBack( fontDescriptionRun2 ); Size textArea(100.f, 300.f); - Size layoutSize(95.f, 97.f); + Size layoutSize(97.f, 95.f); float positions[] = { - 1.f, -12.f, 12.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.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, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, + 0.f, -12.f, 10.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 42.f, -9.f, 52.f, -9.f, 61.f, -11.f, 67.f, -0.f, + 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 19.f, -9.f, 29.f, -9.f, 36.f, -0.f, 42.f, -9.f, 52.f, -12.f, 57.f, -0.f, 62.f, -11.f, 69.f, -9.f, 79.f, -9.f, 87.f, -11.f, 95.f, -2.f }; struct LineRun line0 = { @@ -844,8 +690,9 @@ int UtcDaliTextLayoutMultilineText01(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -854,9 +701,10 @@ int UtcDaliTextLayoutMultilineText01(void) { { 12u, 6u }, { 12u, 6u }, - 43.f, + 44.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -866,10 +714,11 @@ int UtcDaliTextLayoutMultilineText01(void) { { 18u, 7u }, { 18u, 7u }, - 52.f, + 53.f, 15.f, -4.f, - 5.f, + 6.f, + 0.f, 0.f, false, false @@ -881,7 +730,8 @@ int UtcDaliTextLayoutMultilineText01(void) 66.f, 15.f, -4.f, - 5.f, + 6.f, + 0.f, 0.f, false, false @@ -890,11 +740,12 @@ int UtcDaliTextLayoutMultilineText01(void) { { 34u, 14u }, { 35u, 14u }, - 95.f, + 97.f, 15.f, -4.f, 0.f, 0.f, + 0.f, false, false }; @@ -918,7 +769,7 @@ int UtcDaliTextLayoutMultilineText01(void) positions, 5u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 48u, false, @@ -961,7 +812,7 @@ int UtcDaliTextLayoutMultilineText02(void) // Set a known font description FontDescriptionRun fontDescriptionRun2; fontDescriptionRun2.characterRun.characterIndex = 17u; - fontDescriptionRun2.characterRun.numberOfCharacters = 11u; + fontDescriptionRun2.characterRun.numberOfCharacters = 9u; fontDescriptionRun2.familyLength = fontFamily2.size(); fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength]; memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength ); @@ -971,12 +822,12 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun2.slantDefined = false; fontDescriptionRun2.sizeDefined = false; - const std::string fontFamily3( "TizenSansHebrew" ); + const std::string fontFamily3( "TizenSans" ); // Set a known font description FontDescriptionRun fontDescriptionRun3; - fontDescriptionRun3.characterRun.characterIndex = 28u; - fontDescriptionRun3.characterRun.numberOfCharacters = 10u; + 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 ); @@ -986,12 +837,12 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun3.slantDefined = false; fontDescriptionRun3.sizeDefined = false; - const std::string fontFamily4( "TizenSans" ); + const std::string fontFamily4( "TizenSansHebrew" ); // Set a known font description FontDescriptionRun fontDescriptionRun4; - fontDescriptionRun4.characterRun.characterIndex = 38u; - fontDescriptionRun4.characterRun.numberOfCharacters = 17u; + 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 ); @@ -1001,21 +852,37 @@ int UtcDaliTextLayoutMultilineText02(void) fontDescriptionRun4.slantDefined = false; fontDescriptionRun4.sizeDefined = false; + const std::string fontFamily5( "TizenSans" ); + + // Set a known font description + FontDescriptionRun fontDescriptionRun5; + 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.familyDefined = true; + fontDescriptionRun5.weightDefined = 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(81.f, 120.f); + Size layoutSize(81.f, 114.f); float positions[] = { - 1.f, -12.f, 12.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, 10.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, 32.f, -2.f, 35.f, -11.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, 10.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 22 .. 27 + 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 = { @@ -1023,8 +890,9 @@ int UtcDaliTextLayoutMultilineText02(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -1033,10 +901,11 @@ int UtcDaliTextLayoutMultilineText02(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -1045,9 +914,10 @@ int UtcDaliTextLayoutMultilineText02(void) { { 22u, 6u }, { 22u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1057,10 +927,11 @@ int UtcDaliTextLayoutMultilineText02(void) { { 28u, 10u }, { 28u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -1071,8 +942,9 @@ int UtcDaliTextLayoutMultilineText02(void) { 38u, 12u }, 79.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -1081,9 +953,10 @@ int UtcDaliTextLayoutMultilineText02(void) { { 50u, 5u }, { 50u, 5u }, - 43.f, + 45.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1103,14 +976,14 @@ int UtcDaliTextLayoutMultilineText02(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world demo.", textArea, - 4u, + 5u, fontDescriptionRuns.Begin(), layoutSize, 55u, positions, 6u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 55u, false, @@ -1151,20 +1024,21 @@ int UtcDaliTextLayoutMultilineText03(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(100.f, 300.f); - Size layoutSize(96.f, 60.f); + Size layoutSize(98.f, 57.f); float positions[] = { - 1.f, -12.f, 12.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, 85.f, -9.f, - 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 32.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.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 }, - 94.f, + 95.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1174,9 +1048,10 @@ int UtcDaliTextLayoutMultilineText03(void) { { 12u, 12u }, { 12u, 12u }, - 96.f, + 98.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1186,9 +1061,10 @@ int UtcDaliTextLayoutMultilineText03(void) { { 24u, 5u }, { 24u, 5u }, - 43.f, + 44.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1211,7 +1087,7 @@ int UtcDaliTextLayoutMultilineText03(void) positions, 3u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 29u, false, @@ -1252,18 +1128,18 @@ int UtcDaliTextLayoutMultilineText04(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun ); Size textArea(100.f, 300.f); - Size layoutSize(83.f, 40.f); + Size layoutSize(84.f, 38.f); float positions[] = { - 1.f, -12.f, 12.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, -3.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, + 84.f, 15.f, - -5.f, + -4.f, 0.f, 0.f, false, @@ -1275,7 +1151,8 @@ int UtcDaliTextLayoutMultilineText04(void) { 13u, 0u }, 0.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1297,7 +1174,7 @@ int UtcDaliTextLayoutMultilineText04(void) positions, 2u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 13u, false, @@ -1365,21 +1242,22 @@ int UtcDaliTextLayoutMultilineText05(void) fontDescriptionRuns.PushBack( fontDescriptionRun2 ); fontDescriptionRuns.PushBack( fontDescriptionRun3 ); Size textArea(100.f, 300.f); - Size layoutSize(88.f, 53.f); + Size layoutSize(89.f, 51.f); float positions[] = { - 1.f, -12.f, 12.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.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, 71.f, -9.f, 77.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, + 89.f, 25.f, - -8.f, + -7.f, 4.f, 0.f, + 0.f, false, false }; @@ -1387,9 +1265,10 @@ int UtcDaliTextLayoutMultilineText05(void) { { 12u, 5u }, { 12u, 5u }, - 43.f, + 44.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1411,7 +1290,7 @@ int UtcDaliTextLayoutMultilineText05(void) positions, 2u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 17u, false, @@ -1427,6 +1306,197 @@ int UtcDaliTextLayoutMultilineText05(void) END_TEST; } +int UtcDaliTextLayoutMultilineText06(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextLayoutMultilineText06"); + + const std::string fontFamily( "TizenSansHebrew" ); + + // Set a known font description + 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; + + Vector fontDescriptionRuns; + fontDescriptionRuns.PushBack( fontDescriptionRun ); + + Size textArea(64.f, 100.f); + Size layoutSize(33.f, 38.f); + float positions[] = + { + 28.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f, + 23.f, -10.f, 18.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, + -4.f, + 5.f, + 0.f, + 0.f, + true, + false + }; + struct LineRun line1 = + { + { 5u, 5u }, + { 5u, 5u }, + 33.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + true, + false + }; + Vector lines; + lines.PushBack( line0 ); + lines.PushBack( line1 ); + + 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, + true + }; + + if( !LayoutTextTest( data ) ) + { + tet_result(TET_FAIL); + } + + 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(23.f, 57.f); + float positions[] = + { + 11.f, -10.f, 5.f, -10.f, 0.f, -10.f, + 12.f, -10.f, 8.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 }, + 20.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + true, + false + }; + struct LineRun line1 = + { + { 3u, 3u }, + { 3u, 3u }, + 22.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + true, + false + }; + struct LineRun line2 = + { + { 6u, 3u }, + { 6u, 3u }, + 23.f, + 15.f, + -4.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, + true + }; + + if( !LayoutTextTest( data ) ) + { + tet_result(TET_FAIL); + } + + tet_result(TET_PASS); + END_TEST; +} + int UtcDaliTextUpdateLayout01(void) { ToolkitTestApplication application; @@ -1454,7 +1524,7 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 11u; + fontDescriptionRun02.characterRun.numberOfCharacters = 9u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -1466,11 +1536,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 28u; - fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.numberOfCharacters = 2u; + fontDescriptionRun03.familyLength = fontLatin.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -1479,11 +1549,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 42u; - fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.numberOfCharacters = 14u; + fontDescriptionRun04.familyLength = fontArabic.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -1492,11 +1562,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 54u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.characterIndex = 42u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -1505,7 +1575,7 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 64u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -1518,11 +1588,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 74u; - fontDescriptionRun07.characterRun.numberOfCharacters = 18u; - fontDescriptionRun07.familyLength = fontLatin.size(); + fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.numberOfCharacters = 10u; + fontDescriptionRun07.familyLength = fontHebrew.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -1531,8 +1601,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 92u; - fontDescriptionRun08.characterRun.numberOfCharacters = 12u; + 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 ); @@ -1544,11 +1614,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 104u; - fontDescriptionRun09.characterRun.numberOfCharacters = 14u; - fontDescriptionRun09.familyLength = fontArabic.size(); + fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.numberOfCharacters = 12u; + fontDescriptionRun09.familyLength = fontLatin.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -1557,11 +1627,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 118u; - fontDescriptionRun10.characterRun.numberOfCharacters = 10u; - fontDescriptionRun10.familyLength = fontHebrew.size(); + fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.numberOfCharacters = 14u; + fontDescriptionRun10.familyLength = fontArabic.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -1570,11 +1640,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 128u; - fontDescriptionRun11.characterRun.numberOfCharacters = 17u; - fontDescriptionRun11.familyLength = fontLatin.size(); + fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.numberOfCharacters = 10u; + fontDescriptionRun11.familyLength = fontHebrew.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -1583,11 +1653,11 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 145u; - fontDescriptionRun12.characterRun.numberOfCharacters = 11u; - fontDescriptionRun12.familyLength = fontHebrew.size(); + fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.numberOfCharacters = 17u; + fontDescriptionRun12.familyLength = fontLatin.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -1596,8 +1666,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 156u; - fontDescriptionRun13.characterRun.numberOfCharacters = 10u; + 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 ); @@ -1609,8 +1679,8 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 166u; - fontDescriptionRun14.characterRun.numberOfCharacters = 12u; + 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 ); @@ -1622,17 +1692,43 @@ int UtcDaliTextUpdateLayout01(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 178u; - fontDescriptionRun15.characterRun.numberOfCharacters = 14u; - fontDescriptionRun15.familyLength = fontArabic.size(); + fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.numberOfCharacters = 10u; + fontDescriptionRun15.familyLength = fontHebrew.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), 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; + // Set a known font description + FontDescriptionRun fontDescriptionRun16; + 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.familyDefined = true; + fontDescriptionRun16.weightDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun17; + 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.familyDefined = true; + fontDescriptionRun17.weightDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; + Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -1649,28 +1745,30 @@ int UtcDaliTextUpdateLayout01(void) 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); + Size layoutSize(100.f, 361.f); float positions[] = { - 1.f, -12.f, 12.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, 10.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, 32.f, -2.f, 35.f, -11.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.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, 10.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, - 1.f, -13.f, 10.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, -7.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, 37.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, 12.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, 10.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, 32.f, -2.f, 35.f, -11.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, 10.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, -7.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, 37.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.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, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58 + 23.f, -10.f, 18.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, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 + 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155 + 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 = @@ -1679,8 +1777,9 @@ int UtcDaliTextUpdateLayout01(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -1689,10 +1788,11 @@ int UtcDaliTextUpdateLayout01(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -1701,9 +1801,10 @@ int UtcDaliTextUpdateLayout01(void) { { 22u, 6u }, { 22u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1711,35 +1812,38 @@ int UtcDaliTextUpdateLayout01(void) }; struct LineRun line04 = { - { 28u, 20u }, - { 28u, 20u }, - 92.f, + { 28u, 14u }, + { 28u, 14u }, + 63.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line05 = { - { 48u, 11u }, - { 48u, 11u }, - 76.f, + { 42, 12u }, + { 42, 12u }, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line06 = { - { 59u, 5u }, - { 59u, 5u }, - 31.f, + { 54u, 10u }, + { 54u, 10u }, + 69.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1749,12 +1853,13 @@ int UtcDaliTextUpdateLayout01(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line08 = @@ -1763,19 +1868,21 @@ int UtcDaliTextUpdateLayout01(void) { 74u, 12u }, 79.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line09 = { { 86u, 6u }, { 86u, 6u }, - 43.f, + 45.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1785,11 +1892,12 @@ int UtcDaliTextUpdateLayout01(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -1797,10 +1905,11 @@ int UtcDaliTextUpdateLayout01(void) { { 104u, 19u }, { 104u, 19u }, - 90.f, + 100.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -1811,7 +1920,8 @@ int UtcDaliTextUpdateLayout01(void) { 123u, 5u }, 31.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1823,8 +1933,9 @@ int UtcDaliTextUpdateLayout01(void) { 128u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -1833,10 +1944,11 @@ int UtcDaliTextUpdateLayout01(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -1845,9 +1957,10 @@ int UtcDaliTextUpdateLayout01(void) { { 150u, 6u }, { 150u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1857,12 +1970,13 @@ int UtcDaliTextUpdateLayout01(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line17 = @@ -1871,9 +1985,10 @@ int UtcDaliTextUpdateLayout01(void) { 166u, 12u }, 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -1881,9 +1996,10 @@ int UtcDaliTextUpdateLayout01(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 63.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1895,7 +2011,8 @@ int UtcDaliTextUpdateLayout01(void) { 192u, 0u }, 0.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -1932,14 +2049,14 @@ int UtcDaliTextUpdateLayout01(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 15u, + 17u, fontDescriptionRuns.Begin(), layoutSize, 192u, positions, 19u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 64u, false, @@ -1982,7 +2099,7 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 11u; + fontDescriptionRun02.characterRun.numberOfCharacters = 9u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -1994,11 +2111,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 28u; - fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.numberOfCharacters = 2u; + fontDescriptionRun03.familyLength = fontLatin.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -2007,11 +2124,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 42u; - fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.numberOfCharacters = 14u; + fontDescriptionRun04.familyLength = fontArabic.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -2020,11 +2137,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 54u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.characterIndex = 42u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -2033,7 +2150,7 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 64u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -2046,11 +2163,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 74u; - fontDescriptionRun07.characterRun.numberOfCharacters = 18u; - fontDescriptionRun07.familyLength = fontLatin.size(); + fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.numberOfCharacters = 10u; + fontDescriptionRun07.familyLength = fontHebrew.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -2059,8 +2176,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 92u; - fontDescriptionRun08.characterRun.numberOfCharacters = 12u; + 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 ); @@ -2072,11 +2189,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 104u; - fontDescriptionRun09.characterRun.numberOfCharacters = 14u; - fontDescriptionRun09.familyLength = fontArabic.size(); + fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.numberOfCharacters = 12u; + fontDescriptionRun09.familyLength = fontLatin.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -2085,11 +2202,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 118u; - fontDescriptionRun10.characterRun.numberOfCharacters = 10u; - fontDescriptionRun10.familyLength = fontHebrew.size(); + fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.numberOfCharacters = 14u; + fontDescriptionRun10.familyLength = fontArabic.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -2098,11 +2215,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 128u; - fontDescriptionRun11.characterRun.numberOfCharacters = 17u; - fontDescriptionRun11.familyLength = fontLatin.size(); + fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.numberOfCharacters = 10u; + fontDescriptionRun11.familyLength = fontHebrew.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -2111,11 +2228,11 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 145u; - fontDescriptionRun12.characterRun.numberOfCharacters = 11u; - fontDescriptionRun12.familyLength = fontHebrew.size(); + fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.numberOfCharacters = 17u; + fontDescriptionRun12.familyLength = fontLatin.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -2124,8 +2241,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 156u; - fontDescriptionRun13.characterRun.numberOfCharacters = 10u; + 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 ); @@ -2137,8 +2254,8 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 166u; - fontDescriptionRun14.characterRun.numberOfCharacters = 12u; + 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 ); @@ -2150,17 +2267,43 @@ int UtcDaliTextUpdateLayout02(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 178u; - fontDescriptionRun15.characterRun.numberOfCharacters = 14u; - fontDescriptionRun15.familyLength = fontArabic.size(); + fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.numberOfCharacters = 10u; + fontDescriptionRun15.familyLength = fontHebrew.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), 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; + // Set a known font description + FontDescriptionRun fontDescriptionRun16; + 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.familyDefined = true; + fontDescriptionRun16.weightDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun17; + 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.familyDefined = true; + fontDescriptionRun17.weightDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; + Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -2177,28 +2320,30 @@ int UtcDaliTextUpdateLayout02(void) 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); + Size layoutSize(100.f, 361.f); float positions[] = { - 1.f, -12.f, 12.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, 10.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, 32.f, -2.f, 35.f, -11.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.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, 10.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, - 1.f, -13.f, 10.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, -7.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, 37.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, 12.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, 10.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, 32.f, -2.f, 35.f, -11.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, 10.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, -7.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, 37.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.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, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58 + 23.f, -10.f, 18.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, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 + 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155 + 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 = @@ -2207,8 +2352,9 @@ int UtcDaliTextUpdateLayout02(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -2217,10 +2363,11 @@ int UtcDaliTextUpdateLayout02(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2229,9 +2376,10 @@ int UtcDaliTextUpdateLayout02(void) { { 22u, 6u }, { 22u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2239,35 +2387,38 @@ int UtcDaliTextUpdateLayout02(void) }; struct LineRun line04 = { - { 28u, 20u }, - { 28u, 20u }, - 92.f, + { 28u, 14u }, + { 28u, 14u }, + 63.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, - false, + 0.f, + true, false }; struct LineRun line05 = { - { 48u, 11u }, - { 48u, 11u }, - 76.f, + { 42u, 12u }, + { 42u, 12u }, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; struct LineRun line06 = { - { 59u, 5u }, - { 59u, 5u }, - 31.f, + { 54u, 10u }, + { 54u, 10u }, + 69.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2277,10 +2428,11 @@ int UtcDaliTextUpdateLayout02(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2291,8 +2443,9 @@ int UtcDaliTextUpdateLayout02(void) { 74u, 12u }, 79.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 1.f, 0.f, false, false @@ -2301,9 +2454,10 @@ int UtcDaliTextUpdateLayout02(void) { { 86u, 6u }, { 86u, 6u }, - 43.f, + 45.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2313,11 +2467,12 @@ int UtcDaliTextUpdateLayout02(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -2325,10 +2480,11 @@ int UtcDaliTextUpdateLayout02(void) { { 104u, 19u }, { 104u, 19u }, - 90.f, + 100.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2339,7 +2495,8 @@ int UtcDaliTextUpdateLayout02(void) { 123u, 5u }, 31.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2351,8 +2508,9 @@ int UtcDaliTextUpdateLayout02(void) { 128u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -2361,10 +2519,11 @@ int UtcDaliTextUpdateLayout02(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2373,9 +2532,10 @@ int UtcDaliTextUpdateLayout02(void) { { 150u, 6u }, { 150u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2385,10 +2545,11 @@ int UtcDaliTextUpdateLayout02(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2399,9 +2560,10 @@ int UtcDaliTextUpdateLayout02(void) { 166u, 12u }, 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -2409,9 +2571,10 @@ int UtcDaliTextUpdateLayout02(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 63.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2423,7 +2586,8 @@ int UtcDaliTextUpdateLayout02(void) { 192u, 0u }, 0.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2460,14 +2624,14 @@ int UtcDaliTextUpdateLayout02(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 15u, + 17u, fontDescriptionRuns.Begin(), layoutSize, 192u, positions, 19u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 64u, 64u, false, @@ -2510,7 +2674,7 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun02; fontDescriptionRun02.characterRun.characterIndex = 17u; - fontDescriptionRun02.characterRun.numberOfCharacters = 11u; + fontDescriptionRun02.characterRun.numberOfCharacters = 9u; fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); @@ -2522,11 +2686,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun03; - fontDescriptionRun03.characterRun.characterIndex = 28u; - fontDescriptionRun03.characterRun.numberOfCharacters = 14u; - fontDescriptionRun03.familyLength = fontArabic.size(); + fontDescriptionRun03.characterRun.characterIndex = 26u; + fontDescriptionRun03.characterRun.numberOfCharacters = 2u; + fontDescriptionRun03.familyLength = fontLatin.size(); fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; - memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength ); + memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength ); fontDescriptionRun03.familyDefined = true; fontDescriptionRun03.weightDefined = false; fontDescriptionRun03.widthDefined = false; @@ -2535,11 +2699,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 42u; - fontDescriptionRun04.characterRun.numberOfCharacters = 12u; - fontDescriptionRun04.familyLength = fontLatin.size(); + fontDescriptionRun04.characterRun.characterIndex = 28u; + fontDescriptionRun04.characterRun.numberOfCharacters = 14u; + fontDescriptionRun04.familyLength = fontArabic.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -2548,11 +2712,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun05; - fontDescriptionRun05.characterRun.characterIndex = 54u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.characterIndex = 42u; + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -2561,7 +2725,7 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 64u; + fontDescriptionRun06.characterRun.characterIndex = 54u; fontDescriptionRun06.characterRun.numberOfCharacters = 10u; fontDescriptionRun06.familyLength = fontHebrew.size(); fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; @@ -2574,11 +2738,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun07; - fontDescriptionRun07.characterRun.characterIndex = 74u; - fontDescriptionRun07.characterRun.numberOfCharacters = 18u; - fontDescriptionRun07.familyLength = fontLatin.size(); + fontDescriptionRun07.characterRun.characterIndex = 64u; + fontDescriptionRun07.characterRun.numberOfCharacters = 10u; + fontDescriptionRun07.familyLength = fontHebrew.size(); fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength]; - memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength ); + memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength ); fontDescriptionRun07.familyDefined = true; fontDescriptionRun07.weightDefined = false; fontDescriptionRun07.widthDefined = false; @@ -2587,8 +2751,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun08; - fontDescriptionRun08.characterRun.characterIndex = 92u; - fontDescriptionRun08.characterRun.numberOfCharacters = 12u; + 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 ); @@ -2600,11 +2764,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun09; - fontDescriptionRun09.characterRun.characterIndex = 104u; - fontDescriptionRun09.characterRun.numberOfCharacters = 14u; - fontDescriptionRun09.familyLength = fontArabic.size(); + fontDescriptionRun09.characterRun.characterIndex = 92u; + fontDescriptionRun09.characterRun.numberOfCharacters = 12u; + fontDescriptionRun09.familyLength = fontLatin.size(); fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength]; - memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength ); + memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength ); fontDescriptionRun09.familyDefined = true; fontDescriptionRun09.weightDefined = false; fontDescriptionRun09.widthDefined = false; @@ -2613,11 +2777,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun10; - fontDescriptionRun10.characterRun.characterIndex = 118u; - fontDescriptionRun10.characterRun.numberOfCharacters = 10u; - fontDescriptionRun10.familyLength = fontHebrew.size(); + fontDescriptionRun10.characterRun.characterIndex = 104u; + fontDescriptionRun10.characterRun.numberOfCharacters = 14u; + fontDescriptionRun10.familyLength = fontArabic.size(); fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength]; - memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength ); + memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength ); fontDescriptionRun10.familyDefined = true; fontDescriptionRun10.weightDefined = false; fontDescriptionRun10.widthDefined = false; @@ -2626,11 +2790,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun11; - fontDescriptionRun11.characterRun.characterIndex = 128u; - fontDescriptionRun11.characterRun.numberOfCharacters = 17u; - fontDescriptionRun11.familyLength = fontLatin.size(); + fontDescriptionRun11.characterRun.characterIndex = 118u; + fontDescriptionRun11.characterRun.numberOfCharacters = 10u; + fontDescriptionRun11.familyLength = fontHebrew.size(); fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength]; - memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength ); + memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength ); fontDescriptionRun11.familyDefined = true; fontDescriptionRun11.weightDefined = false; fontDescriptionRun11.widthDefined = false; @@ -2639,11 +2803,11 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun12; - fontDescriptionRun12.characterRun.characterIndex = 145u; - fontDescriptionRun12.characterRun.numberOfCharacters = 11u; - fontDescriptionRun12.familyLength = fontHebrew.size(); + fontDescriptionRun12.characterRun.characterIndex = 128u; + fontDescriptionRun12.characterRun.numberOfCharacters = 17u; + fontDescriptionRun12.familyLength = fontLatin.size(); fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength]; - memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength ); + memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength ); fontDescriptionRun12.familyDefined = true; fontDescriptionRun12.weightDefined = false; fontDescriptionRun12.widthDefined = false; @@ -2652,8 +2816,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun13; - fontDescriptionRun13.characterRun.characterIndex = 156u; - fontDescriptionRun13.characterRun.numberOfCharacters = 10u; + 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 ); @@ -2665,8 +2829,8 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun14; - fontDescriptionRun14.characterRun.characterIndex = 166u; - fontDescriptionRun14.characterRun.numberOfCharacters = 12u; + 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 ); @@ -2678,17 +2842,43 @@ int UtcDaliTextUpdateLayout03(void) // Set a known font description FontDescriptionRun fontDescriptionRun15; - fontDescriptionRun15.characterRun.characterIndex = 178u; - fontDescriptionRun15.characterRun.numberOfCharacters = 14u; - fontDescriptionRun15.familyLength = fontArabic.size(); + fontDescriptionRun15.characterRun.characterIndex = 156u; + fontDescriptionRun15.characterRun.numberOfCharacters = 10u; + fontDescriptionRun15.familyLength = fontHebrew.size(); fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength]; - memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), 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; + // Set a known font description + FontDescriptionRun fontDescriptionRun16; + 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.familyDefined = true; + fontDescriptionRun16.weightDefined = false; + fontDescriptionRun16.widthDefined = false; + fontDescriptionRun16.slantDefined = false; + fontDescriptionRun16.sizeDefined = false; + + // Set a known font description + FontDescriptionRun fontDescriptionRun17; + 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.familyDefined = true; + fontDescriptionRun17.weightDefined = false; + fontDescriptionRun17.widthDefined = false; + fontDescriptionRun17.slantDefined = false; + fontDescriptionRun17.sizeDefined = false; + Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); fontDescriptionRuns.PushBack( fontDescriptionRun02 ); @@ -2705,28 +2895,30 @@ int UtcDaliTextUpdateLayout03(void) 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); + Size layoutSize(100.f, 361.f); float positions[] = { - 1.f, -12.f, 12.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, 10.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, 32.f, -2.f, 35.f, -11.f, - 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.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, 10.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -11.f, - 1.f, -13.f, 10.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, -7.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, 37.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, 12.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, 10.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, 32.f, -2.f, 35.f, -11.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, 10.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, -7.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, 37.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.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, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58 + 23.f, -10.f, 18.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, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 + 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.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, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149 + 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155 + 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.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 = @@ -2735,8 +2927,9 @@ int UtcDaliTextUpdateLayout03(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -2745,10 +2938,11 @@ int UtcDaliTextUpdateLayout03(void) { { 12u, 10u }, { 12u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2757,9 +2951,10 @@ int UtcDaliTextUpdateLayout03(void) { { 22u, 6u }, { 22u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2767,35 +2962,38 @@ int UtcDaliTextUpdateLayout03(void) }; struct LineRun line04 = { - { 28u, 20u }, - { 28u, 20u }, - 92.f, + { 28u, 14u }, + { 28u, 14u }, + 63.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; struct LineRun line05 = { - { 48u, 11u }, - { 48u, 11u }, - 76.f, + { 42u, 12u }, + { 42u, 12u }, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; struct LineRun line06 = { - { 59u, 5u }, - { 59u, 5u }, - 31.f, + { 54u, 10u }, + { 54u, 10u }, + 69.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2805,10 +3003,11 @@ int UtcDaliTextUpdateLayout03(void) { { 64u, 10u }, { 64u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2819,8 +3018,9 @@ int UtcDaliTextUpdateLayout03(void) { 74u, 12u }, 79.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 1.f, 0.f, false, false @@ -2829,9 +3029,10 @@ int UtcDaliTextUpdateLayout03(void) { { 86u, 6u }, { 86u, 6u }, - 43.f, + 45.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2841,11 +3042,12 @@ int UtcDaliTextUpdateLayout03(void) { { 92u, 12u }, { 92u, 12u }, - 78.f, + 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -2853,10 +3055,11 @@ int UtcDaliTextUpdateLayout03(void) { { 104u, 19u }, { 104u, 19u }, - 90.f, + 100.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2867,7 +3070,8 @@ int UtcDaliTextUpdateLayout03(void) { 123u, 5u }, 31.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2879,8 +3083,9 @@ int UtcDaliTextUpdateLayout03(void) { 128u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -2889,10 +3094,11 @@ int UtcDaliTextUpdateLayout03(void) { { 140u, 10u }, { 140u, 10u }, - 76.f, + 79.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2901,9 +3107,10 @@ int UtcDaliTextUpdateLayout03(void) { { 150u, 6u }, { 150u, 6u }, - 36.f, + 34.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2913,10 +3120,11 @@ int UtcDaliTextUpdateLayout03(void) { { 156u, 10u }, { 156u, 10u }, - 67.f, + 69.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, false @@ -2927,9 +3135,10 @@ int UtcDaliTextUpdateLayout03(void) { 166u, 12u }, 79.f, 15.f, - -5.f, + -4.f, 4.f, 0.f, + 0.f, false, false }; @@ -2937,9 +3146,10 @@ int UtcDaliTextUpdateLayout03(void) { { 178u, 14u }, { 178u, 14u }, - 55.f, + 63.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -2951,13 +3161,13 @@ int UtcDaliTextUpdateLayout03(void) { 192u, 0u }, 0.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, false }; - Vector lines; lines.PushBack( line01 ); lines.PushBack( line02 ); @@ -2989,14 +3199,14 @@ int UtcDaliTextUpdateLayout03(void) "Hello world demo שלום עולם.\n" "שלום עולם hello world مرحبا بالعالم\n", textArea, - 15u, + 17u, fontDescriptionRuns.Begin(), layoutSize, 192u, positions, 19u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 128u, 64u, false, @@ -3043,7 +3253,8 @@ int UtcDaliTextLayoutEllipsis01(void) { 0u, 13u }, 93.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -3054,11 +3265,11 @@ int UtcDaliTextLayoutEllipsis01(void) float positions[] = { - 1.f, -12.f, 12.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, + 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 ); + Size layoutSize( 100.f, 19.f ); LayoutTextData data = { @@ -3072,7 +3283,7 @@ int UtcDaliTextLayoutEllipsis01(void) positions, 1u, lines.Begin(), - LayoutEngine::SINGLE_LINE_BOX, + Layout::Engine::SINGLE_LINE_BOX, 0u, 51u, true, @@ -3119,8 +3330,9 @@ int UtcDaliTextLayoutEllipsis02(void) { 0u, 12u }, 81.f, 15.f, - -5.f, - 3.f, + -4.f, + 4.f, + 0.f, 0.f, false, false @@ -3129,9 +3341,10 @@ int UtcDaliTextLayoutEllipsis02(void) { { 12u, 12u }, { 12u, 12u }, - 93.f, + 95.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -3143,12 +3356,12 @@ int UtcDaliTextLayoutEllipsis02(void) float positions[] = { - 1.f, -12.f, 12.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, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 53.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.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, 60.f ); + Size layoutSize( 100.f, 38.f ); LayoutTextData data = { @@ -3162,7 +3375,7 @@ int UtcDaliTextLayoutEllipsis02(void) positions, 2u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 51u, true, @@ -3271,11 +3484,12 @@ int UtcDaliTextLayoutEllipsis03(void) struct LineRun line01 = { - { 0u, 16u }, - { 0u, 16u }, - 95.f, + { 0u, 14u }, + { 0u, 14u }, + 97.f, 15.f, - -5.f, + -4.f, + 0.f, 0.f, 0.f, false, @@ -3286,11 +3500,11 @@ int UtcDaliTextLayoutEllipsis03(void) 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f, + 88.f, -10.f, 80.f, -13.f, 74.f, -10.f, 66.f, -10.f, 60.f, -0.f, 52.f, -10.f, 47.f, -10.f, 39.f, -13.f, 30.f, -10.f, 24.f, -0.f, 17.f, -8.f, 12.f, -6.f, 4.f, -8.f, 0.f, -7.f, 77.f, -11.f, 72.f, -0.f, }; Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 20.f ); + Size layoutSize( 100.f, 19.f ); LayoutTextData data = { @@ -3304,7 +3518,7 @@ int UtcDaliTextLayoutEllipsis03(void) positions, 1u, lines.Begin(), - LayoutEngine::SINGLE_LINE_BOX, + Layout::Engine::SINGLE_LINE_BOX, 0u, 72u, true, @@ -3413,24 +3627,26 @@ int UtcDaliTextLayoutEllipsis04(void) struct LineRun line01 = { - { 0u, 16u }, - { 0u, 16u }, - 96.f, + { 0u, 10u }, + { 0u, 10u }, + 69.f, 15.f, - -5.f, - 3.f, + -4.f, + 5.f, + 0.f, 0.f, false, false }; struct LineRun line02 = { - { 16u, 18u }, - { 16u, 18u }, - 97.f, + { 10u, 19u }, + { 10u, 19u }, + 99.f, 15.f, - -5.f, - 4.f, + -4.f, + 5.f, + 0.f, 0.f, false, true @@ -3441,16 +3657,16 @@ int UtcDaliTextLayoutEllipsis04(void) 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, -7.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, 10.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, + 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 95.f, -8.f, 90.f, -6.f, 82.f, -8.f, 78.f, -7.f, 77.f, -11.f, 72.f, -0.f, + 67.f, -7.f, 66.f, -11.f, 60.f, -11.f, 54.f, -8.f, 52.f, -11.f, 46.f, -11.f, 41.f, -8.f, 37.f, -0.f, 27.f, -10.f, 18.f, -13.f, 13.f, -10.f, 4.f, -10.f, 0.f, -0.f, 93.f, -10.f, 88.f, -10.f, 80.f, -13.f, 71.f, -10.f, 65.f, -0.f, }; Size textArea( 100.f, 50.f ); - Size layoutSize( 100.f, 60.f ); + Size layoutSize( 100.f, 38.f ); LayoutTextData data = { - "Layout single-line RTL text with ellipsis.", + "Layout multi-line RTL text with ellipsis.", "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.", textArea, 6u, @@ -3460,7 +3676,7 @@ int UtcDaliTextLayoutEllipsis04(void) positions, 2u, lines.Begin(), - LayoutEngine::MULTI_LINE_BOX, + Layout::Engine::MULTI_LINE_BOX, 0u, 72u, true, @@ -3476,19 +3692,17 @@ int UtcDaliTextLayoutEllipsis04(void) END_TEST; } -int UtcDaliTextReorderLayout01(void) +int UtcDaliTextLayoutEllipsis05(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextReorderLayout01"); - - // Reorder lines. No right to left characters. + tet_infoline(" UtcDaliTextLayoutEllipsis05"); const std::string fontLatin( "TizenSans" ); // Set a known font description FontDescriptionRun fontDescriptionRun01; fontDescriptionRun01.characterRun.characterIndex = 0u; - fontDescriptionRun01.characterRun.numberOfCharacters = 11u; + fontDescriptionRun01.characterRun.numberOfCharacters = 51u; fontDescriptionRun01.familyLength = fontLatin.size(); fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); @@ -3501,27 +3715,50 @@ int UtcDaliTextReorderLayout01(void) Vector fontDescriptionRuns; fontDescriptionRuns.PushBack( fontDescriptionRun01 ); + struct LineRun line01 = + { + { 0u, 11u }, + { 0u, 11u }, + 81.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + false, + false + }; + Vector lines; + lines.PushBack( line01 ); + float positions[] = { - 1.f, -12.f, 12.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, + 0.f, -12.f }; - Size textArea( 100.f, 300.f ); + Size textArea( 100.f, 19.f ); + Size layoutSize( 81.f, 19.f ); - ReLayoutRightToLeftLinesData data = + LayoutTextData data = { - "Text with no right to left text.", + "Not enough height.", "Hello world", textArea, 1u, fontDescriptionRuns.Begin(), - 11u, + layoutSize, + 1u, positions, + 1u, + lines.Begin(), + Layout::Engine::MULTI_LINE_BOX, 0u, - 11u + 11u, + true, + true }; - if( !ReLayoutRightToLeftLinesTest( data ) ) + if( !LayoutTextTest( data ) ) { tet_result(TET_FAIL); } @@ -3530,23 +3767,24 @@ 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 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.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; fontDescriptionRun01.widthDefined = false; @@ -3554,11 +3792,11 @@ int UtcDaliTextReorderLayout02(void) fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; fontDescriptionRun02.widthDefined = false; @@ -3566,7 +3804,7 @@ int UtcDaliTextReorderLayout02(void) 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]; @@ -3578,11 +3816,11 @@ int UtcDaliTextReorderLayout02(void) fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -3591,10 +3829,10 @@ int UtcDaliTextReorderLayout02(void) FontDescriptionRun fontDescriptionRun05; fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -3602,8 +3840,8 @@ int UtcDaliTextReorderLayout02(void) fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; + 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 ); @@ -3621,34 +3859,27 @@ int UtcDaliTextReorderLayout02(void) 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, -7.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, 12.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, -7.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, 37.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, -7.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, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, - }; + float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }; Size textArea( 100.f, 300.f ); - - ReLayoutRightToLeftLinesData data = + AlignData data = { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", + "Begin alignment for the first paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - 72u, - positions, + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, 0u, - 24u + 22u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; - if( !ReLayoutRightToLeftLinesTest( data ) ) + if( !AlignTest( data ) ) { tet_result(TET_FAIL); } @@ -3657,23 +3888,24 @@ 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 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.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; fontDescriptionRun01.widthDefined = false; @@ -3681,11 +3913,11 @@ int UtcDaliTextReorderLayout03(void) fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; fontDescriptionRun02.widthDefined = false; @@ -3693,7 +3925,7 @@ int UtcDaliTextReorderLayout03(void) 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]; @@ -3705,11 +3937,11 @@ int UtcDaliTextReorderLayout03(void) fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -3718,10 +3950,10 @@ int UtcDaliTextReorderLayout03(void) FontDescriptionRun fontDescriptionRun05; fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -3729,8 +3961,8 @@ int UtcDaliTextReorderLayout03(void) fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; + 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 ); @@ -3748,34 +3980,27 @@ int UtcDaliTextReorderLayout03(void) 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, -7.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, 10.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, -7.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, 51.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, -7.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, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f, - }; + float positions[] = { 0.f, 0.f, 33.f, 19.f, 0.f, 0.f }; Size textArea( 100.f, 300.f ); - - ReLayoutRightToLeftLinesData data = + AlignData data = { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", + "Begin alignment for the mid paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - 72u, + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, + 22u, + 26u, + 6u, positions, - 24u, - 24u + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; - if( !ReLayoutRightToLeftLinesTest( data ) ) + if( !AlignTest( data ) ) { tet_result(TET_FAIL); } @@ -3784,23 +4009,24 @@ 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 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.characterRun.numberOfCharacters = 12u; + fontDescriptionRun01.familyLength = fontLatin.size(); fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; - memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength ); + memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength ); fontDescriptionRun01.familyDefined = true; fontDescriptionRun01.weightDefined = false; fontDescriptionRun01.widthDefined = false; @@ -3808,11 +4034,11 @@ int UtcDaliTextReorderLayout04(void) fontDescriptionRun01.sizeDefined = false; FontDescriptionRun fontDescriptionRun02; - fontDescriptionRun02.characterRun.characterIndex = 10u; - fontDescriptionRun02.characterRun.numberOfCharacters = 14u; - fontDescriptionRun02.familyLength = fontArabic.size(); + fontDescriptionRun02.characterRun.characterIndex = 12u; + fontDescriptionRun02.characterRun.numberOfCharacters = 10u; + fontDescriptionRun02.familyLength = fontHebrew.size(); fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; - memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength ); + memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength ); fontDescriptionRun02.familyDefined = true; fontDescriptionRun02.weightDefined = false; fontDescriptionRun02.widthDefined = false; @@ -3820,7 +4046,7 @@ int UtcDaliTextReorderLayout04(void) 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]; @@ -3832,11 +4058,11 @@ int UtcDaliTextReorderLayout04(void) fontDescriptionRun03.sizeDefined = false; FontDescriptionRun fontDescriptionRun04; - fontDescriptionRun04.characterRun.characterIndex = 38u; - fontDescriptionRun04.characterRun.numberOfCharacters = 10u; - fontDescriptionRun04.familyLength = fontHebrew.size(); + fontDescriptionRun04.characterRun.characterIndex = 36u; + fontDescriptionRun04.characterRun.numberOfCharacters = 12u; + fontDescriptionRun04.familyLength = fontLatin.size(); fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; - memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength ); + memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength ); fontDescriptionRun04.familyDefined = true; fontDescriptionRun04.weightDefined = false; fontDescriptionRun04.widthDefined = false; @@ -3845,10 +4071,10 @@ int UtcDaliTextReorderLayout04(void) FontDescriptionRun fontDescriptionRun05; fontDescriptionRun05.characterRun.characterIndex = 48u; - fontDescriptionRun05.characterRun.numberOfCharacters = 10u; - fontDescriptionRun05.familyLength = fontHebrew.size(); + fontDescriptionRun05.characterRun.numberOfCharacters = 12u; + fontDescriptionRun05.familyLength = fontLatin.size(); fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; - memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength ); + memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength ); fontDescriptionRun05.familyDefined = true; fontDescriptionRun05.weightDefined = false; fontDescriptionRun05.widthDefined = false; @@ -3856,8 +4082,8 @@ int UtcDaliTextReorderLayout04(void) fontDescriptionRun05.sizeDefined = false; FontDescriptionRun fontDescriptionRun06; - fontDescriptionRun06.characterRun.characterIndex = 58u; - fontDescriptionRun06.characterRun.numberOfCharacters = 15u; + 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 ); @@ -3875,34 +4101,27 @@ int UtcDaliTextReorderLayout04(void) 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, -7.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, 10.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, -7.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, 37.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, -7.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, 17.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f, - }; + float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }; Size textArea( 100.f, 300.f ); - - ReLayoutRightToLeftLinesData data = + AlignData data = { - "Paragraphs with right to left text.", - "שלום עולם مرحبا بالعالم\n" - "مرحبا بالعالم שלום עולם\n" - "שלום עולם مرحبا بالعالم.", + "Begin alignment for the last paragraph.", + "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - 72u, - positions, + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, 48u, - 24u + 26u, + 6u, + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; - if( !ReLayoutRightToLeftLinesTest( data ) ) + if( !AlignTest( data ) ) { tet_result(TET_FAIL); } @@ -3911,10 +4130,10 @@ int UtcDaliTextReorderLayout04(void) END_TEST; } -int UtcDaliTextAlign01(void) +int UtcDaliTextAlign04(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign01"); + tet_infoline(" UtcDaliTextAlign04"); // Calculate text alignment. @@ -4003,22 +4222,24 @@ int UtcDaliTextAlign01(void) 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 ); AlignData data = { - "Begin alignment for the first paragraph.", + "Center alignment for the first paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_BEGIN, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, 0u, 22u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4030,10 +4251,10 @@ int UtcDaliTextAlign01(void) END_TEST; } -int UtcDaliTextAlign02(void) +int UtcDaliTextAlign05(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign02"); + tet_infoline(" UtcDaliTextAlign05"); // Calculate text alignment. @@ -4122,22 +4343,24 @@ int UtcDaliTextAlign02(void) 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 ); AlignData data = { - "Begin alignment for the mid paragraph.", + "Center alignment for the mid paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_BEGIN, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, 22u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4149,10 +4372,10 @@ int UtcDaliTextAlign02(void) END_TEST; } -int UtcDaliTextAlign03(void) +int UtcDaliTextAlign06(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign03"); + tet_infoline(" UtcDaliTextAlign06"); // Calculate text alignment. @@ -4241,22 +4464,24 @@ int UtcDaliTextAlign03(void) 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, 17.f }; Size textArea( 100.f, 300.f ); AlignData data = { - "Begin alignment for the last paragraph.", + "Center alignment for the last paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_BEGIN, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::CENTER, + Text::VerticalAlignment::TOP, 48u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4268,10 +4493,10 @@ int UtcDaliTextAlign03(void) END_TEST; } -int UtcDaliTextAlign04(void) +int UtcDaliTextAlign07(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign04"); + tet_infoline(" UtcDaliTextAlign07"); // Calculate text alignment. @@ -4360,22 +4585,24 @@ int UtcDaliTextAlign04(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f }; + float positions[] = { 19.f, 31.f, 0.f, 0.f, 0.f, 0.f }; Size textArea( 100.f, 300.f ); AlignData data = { - "Center alignment for the first paragraph.", + "End alignment for the first paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_CENTER, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, 0u, 22u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4387,10 +4614,10 @@ int UtcDaliTextAlign04(void) END_TEST; } -int UtcDaliTextAlign05(void) +int UtcDaliTextAlign08(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign05"); + tet_infoline(" UtcDaliTextAlign08"); // Calculate text alignment. @@ -4479,22 +4706,24 @@ int UtcDaliTextAlign05(void) 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 ); AlignData data = { - "Center alignment for the mid paragraph.", + "End alignment for the mid paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_CENTER, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, 22u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4506,10 +4735,10 @@ int UtcDaliTextAlign05(void) END_TEST; } -int UtcDaliTextAlign06(void) +int UtcDaliTextAlign09(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign06"); + tet_infoline(" UtcDaliTextAlign09"); // Calculate text alignment. @@ -4598,22 +4827,24 @@ int UtcDaliTextAlign06(void) 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, 34.f }; Size textArea( 100.f, 300.f ); AlignData data = { - "Center alignment for the last paragraph.", + "End alignment for the last paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_CENTER, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, 48u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + false }; if( !AlignTest( data ) ) @@ -4625,10 +4856,10 @@ int UtcDaliTextAlign06(void) END_TEST; } -int UtcDaliTextAlign07(void) +int UtcDaliTextAlign10(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign07"); + tet_infoline(" UtcDaliTextAlign10"); // Calculate text alignment. @@ -4717,22 +4948,24 @@ int UtcDaliTextAlign07(void) 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 ); AlignData data = { - "End alignment for the first paragraph.", + "Begin alignment for the first paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_END, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, 0u, 22u, 6u, - positions + positions, + Dali::LayoutDirection::RIGHT_TO_LEFT, + true }; if( !AlignTest( data ) ) @@ -4744,10 +4977,10 @@ int UtcDaliTextAlign07(void) END_TEST; } -int UtcDaliTextAlign08(void) +int UtcDaliTextAlign11(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign08"); + tet_infoline(" UtcDaliTextAlign11"); // Calculate text alignment. @@ -4836,22 +5069,24 @@ int UtcDaliTextAlign08(void) fontDescriptionRuns.PushBack( fontDescriptionRun05 ); fontDescriptionRuns.PushBack( fontDescriptionRun06 ); - float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f }; + float positions[] = { 19.f, 31.f, 33.f, 0.f, 0.f, 0.f }; Size textArea( 100.f, 300.f ); AlignData data = { - "End alignment for the mid paragraph.", + "End alignment for the last paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_END, - LayoutEngine::VERTICAL_ALIGN_TOP, - 22u, + Text::HorizontalAlignment::END, + Text::VerticalAlignment::TOP, + 0u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + true }; if( !AlignTest( data ) ) @@ -4863,10 +5098,10 @@ int UtcDaliTextAlign08(void) END_TEST; } -int UtcDaliTextAlign09(void) +int UtcDaliTextAlign12(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliTextAlign09"); + tet_infoline(" UtcDaliTextAlign12"); // Calculate text alignment. @@ -4955,22 +5190,24 @@ int UtcDaliTextAlign09(void) 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 ); AlignData data = { - "End alignment for the last paragraph.", + "Begin alignment for the first paragraph.", "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.", textArea, 6u, fontDescriptionRuns.Begin(), - LayoutEngine::HORIZONTAL_ALIGN_END, - LayoutEngine::VERTICAL_ALIGN_TOP, + Text::HorizontalAlignment::BEGIN, + Text::VerticalAlignment::TOP, 48u, 26u, 6u, - positions + positions, + Dali::LayoutDirection::LEFT_TO_RIGHT, + true }; if( !AlignTest( data ) ) @@ -4981,3 +5218,212 @@ int UtcDaliTextAlign09(void) tet_result(TET_PASS); END_TEST; } + +int UtcDaliTextLayoutSetGetDefaultLineSpacing(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing"); + + 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 fontFamily( "TizenSansHindi" ); + + // Set a known font description + FontDescriptionRun fontDescriptionRun01; + 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; + + // Set a known font description + FontDescriptionRun fontDescriptionRun02; + 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; + + // Set a known font description + FontDescriptionRun fontDescriptionRun03; + 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; + + Vector fontDescriptionRuns01; + fontDescriptionRuns01.PushBack( fontDescriptionRun01 ); + + Vector fontDescriptionRuns02; + fontDescriptionRuns02.PushBack( fontDescriptionRun02 ); + + Vector fontDescriptionRuns03; + fontDescriptionRuns03.PushBack( fontDescriptionRun03 ); + + // Set a text area. + Size textArea(100.f, 100.f); + + + // Group: second glyph doesn't exceed the width of the first glyph + float positions01[] = { 0.f, -11.f }; + + struct LineRun line01 = + { + { 0u, 1u }, + { 0u, 1u }, + 11.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + false, + false + }; + Vector lines01; + lines01.PushBack( line01 ); + + Size layoutSize01 = Vector2(11.f, 19.f); + + // Group: second glyph doesn't exceed the width of the first glyph + float positions02[] = { 0.f, -11.f, 7.f, -15.f, }; + + struct LineRun line02 = + { + { 0u, 2u }, + { 0u, 2u }, + 16.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + false, + false + }; + Vector lines02; + lines02.PushBack( line02 ); + + Size layoutSize02 = Vector2(16.f, 19.f); + + // Group: second glyph doesn't exceed the width of the first glyph + float positions03[] = { 0.f, -11.f , 2.f, -15.f }; + + struct LineRun line03 = + { + { 0u, 2u }, + { 0u, 2u }, + 11.f, + 15.f, + -4.f, + 0.f, + 0.f, + 0.f, + false, + false + }; + Vector lines03; + lines03.PushBack( line03 ); + + Size layoutSize03 = Vector2(11.f, 19.f); + + ///////////////////////////// + + struct LayoutTextData data[] = + { + { + "Single glyph", + "प", + textArea, + 1u, + fontDescriptionRuns01.Begin(), + layoutSize01, + 1u, + positions01, + 1u, + lines01.Begin(), + Layout::Engine::SINGLE_LINE_BOX, + 0u, + 1u, + false, + 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, + 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, + 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; +}