/*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
{
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;
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;
}
LayoutOptions options;
- options.reorder = false;
options.align = false;
CreateTextModel( data.text,
data.textArea,
fontDescriptionRuns,
options,
layoutSize,
- logicalModel,
- visualModel,
- metrics );
+ textModel,
+ metrics,
+ false,
+ LineWrap::WORD );
+
+ LogicalModelPtr logicalModel = textModel->mLogicalModel;
+ VisualModelPtr visualModel = textModel->mVisualModel;
// 2) Clear the layout.
Vector<LineRun>& lines = visualModel->mLines;
engine.SetMetrics( metrics );
engine.SetLayout( data.layout );
- const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
- float outlineWidth = visualModel->GetOutlineWidth();
-
+ textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
+ textModel->mLineWrapMode = LineWrap::WORD;
+ textModel->mIgnoreSpacesAfterText = true;
+ textModel->mMatchSystemLanguageDirection = false;
Layout::Parameters layoutParameters( data.textArea,
- logicalModel->mText.Begin(),
- logicalModel->mLineBreakInfo.Begin(),
- logicalModel->mWordBreakInfo.Begin(),
- ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
- visualModel->mGlyphs.Begin(),
- visualModel->mGlyphsToCharacters.Begin(),
- visualModel->mCharactersPerGlyph.Begin(),
- visualModel->mCharactersToGlyph.Begin(),
- visualModel->mGlyphsPerCharacter.Begin(),
- totalNumberOfGlyphs,
- Text::HorizontalAlignment::BEGIN,
- Text::LineWrap::WORD,
- outlineWidth );
+ textModel );
layoutParameters.isLastNewParagraph = isLastNewParagraph;
layoutSize = Vector2::ZERO;
+ bool isAutoScroll = false;
const bool updated = engine.LayoutText( layoutParameters,
- glyphPositions,
- lines,
layoutSize,
- data.ellipsis );
+ data.ellipsis,
+ isAutoScroll );
// 4) Compare the results.
{
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;
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 );
//////////////////////////////////////////////////////////
-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<FontDescriptionRun> 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.
- Layout::Engine engine;
- engine.SetMetrics( metrics );
-
- float outlineWidth = visualModel->GetOutlineWidth();
- Layout::Parameters layoutParameters( data.textArea,
- logicalModel->mText.Begin(),
- logicalModel->mLineBreakInfo.Begin(),
- logicalModel->mWordBreakInfo.Begin(),
- ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
- visualModel->mGlyphs.Begin(),
- visualModel->mGlyphsToCharacters.Begin(),
- visualModel->mCharactersPerGlyph.Begin(),
- visualModel->mCharactersToGlyph.Begin(),
- visualModel->mGlyphsPerCharacter.Begin(),
- visualModel->mGlyphs.Count(),
- Text::HorizontalAlignment::BEGIN,
- Text::LineWrap::WORD,
- outlineWidth );
-
- layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
- layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
-
- engine.ReLayoutRightToLeftLines( layoutParameters,
- data.startIndex,
- data.numberOfCharacters,
- visualModel->mGlyphPositions );
-
- // 3) Compare the results.
- Vector<Vector2>& 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;
unsigned int numberOfCharacters;
unsigned int numberOfLines;
float* lineOffsets;
+ Dali::LayoutDirection::Type layoutDirection;
+ bool matchSystemLanguageDirection;
};
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;
fontDescriptionRuns,
options,
layoutSize,
- logicalModel,
- visualModel,
- metrics );
+ textModel,
+ metrics,
+ false,
+ LineWrap::WORD );
+
+ LogicalModelPtr logicalModel = textModel->mLogicalModel;
+ VisualModelPtr visualModel = textModel->mVisualModel;
// Call the Align method.
Layout::Engine engine;
data.numberOfCharacters,
data.horizontalAlignment,
visualModel->mLines,
- alignmentOffset );
+ alignmentOffset,
+ data.layoutDirection,
+ data.matchSystemLanguageDirection );
// Compare results.
if( data.numberOfLines != visualModel->mLines.Count() )
return false;
}
}
-
return true;
}
// UtcDaliTextLayoutMultilineText03
// UtcDaliTextLayoutMultilineText04
// UtcDaliTextLayoutMultilineText05
+// UtcDaliTextLayoutMultilineText06
// UtcDaliTextUpdateLayout01
// UtcDaliTextUpdateLayout02
// UtcDaliTextUpdateLayout03
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 );
Vector<FontDescriptionRun> 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,
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 =
{
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 6u },
{ 12u, 6u },
- 43.f,
+ 44.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 18u, 7u },
{ 18u, 7u },
- 52.f,
+ 53.f,
15.f,
-4.f,
- 5.f,
+ 6.f,
+ 0.f,
0.f,
false,
false
66.f,
15.f,
-4.f,
- 5.f,
+ 6.f,
+ 0.f,
0.f,
false,
false
{
{ 34u, 14u },
{ 35u, 14u },
- 95.f,
+ 97.f,
15.f,
-4.f,
0.f,
0.f,
+ 0.f,
false,
false
};
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, 30.f, -3.f, 33.f, -12.f,
- 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
- 1.f, -13.f, 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 =
{
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 10u },
{ 12u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 22u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 28u, 10u },
{ 28u, 10u },
- 67.f,
+ 69.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 38u, 12u },
79.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 50u, 5u },
{ 50u, 5u },
- 43.f,
+ 45.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
Vector<FontDescriptionRun> 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,
{
{ 12u, 12u },
{ 12u, 12u },
- 96.f,
+ 98.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 24u, 5u },
{ 24u, 5u },
- 43.f,
+ 44.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
Vector<FontDescriptionRun> 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,
{ 13u, 0u },
0.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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
};
{
{ 12u, 5u },
{ 12u, 5u },
- 43.f,
+ 44.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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<FontDescriptionRun> 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<LineRun> 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<FontDescriptionRun> 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<LineRun> 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;
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, 30.f, -3.f, 33.f, -12.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, -12.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, 30.f, -3.f, 33.f, -12.f,
- 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
- 1.f, -13.f, 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 =
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 10u },
{ 12u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 22u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
};
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,
{
{ 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 =
{ 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,
{
{ 92u, 12u },
{ 92u, 12u },
- 78.f,
+ 79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 104u, 19u },
{ 104u, 19u },
- 90.f,
+ 100.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 123u, 5u },
31.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 128u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 140u, 10u },
{ 140u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 150u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 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 =
{ 166u, 12u },
79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 178u, 14u },
{ 178u, 14u },
- 55.f,
+ 63.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 192u, 0u },
0.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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, 30.f, -3.f, 33.f, -12.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, -12.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, 30.f, -3.f, 33.f, -12.f,
- 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
- 1.f, -13.f, 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 =
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 10u },
{ 12u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 22u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
};
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,
{
{ 64u, 10u },
{ 64u, 10u },
- 67.f,
+ 69.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 74u, 12u },
79.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 1.f,
0.f,
false,
false
{
{ 86u, 6u },
{ 86u, 6u },
- 43.f,
+ 45.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 92u, 12u },
{ 92u, 12u },
- 78.f,
+ 79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 104u, 19u },
{ 104u, 19u },
- 90.f,
+ 100.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 123u, 5u },
31.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 128u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 140u, 10u },
{ 140u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 150u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 156u, 10u },
{ 156u, 10u },
- 67.f,
+ 69.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 166u, 12u },
79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 178u, 14u },
{ 178u, 14u },
- 55.f,
+ 63.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 192u, 0u },
0.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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, 30.f, -3.f, 33.f, -12.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, -12.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, 30.f, -3.f, 33.f, -12.f,
- 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
- 1.f, -13.f, 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 =
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 10u },
{ 12u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 22u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
};
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,
{
{ 64u, 10u },
{ 64u, 10u },
- 67.f,
+ 69.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 74u, 12u },
79.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 1.f,
0.f,
false,
false
{
{ 86u, 6u },
{ 86u, 6u },
- 43.f,
+ 45.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 92u, 12u },
{ 92u, 12u },
- 78.f,
+ 79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 104u, 19u },
{ 104u, 19u },
- 90.f,
+ 100.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 123u, 5u },
31.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 128u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 140u, 10u },
{ 140u, 10u },
- 76.f,
+ 79.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 150u, 6u },
34.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{
{ 156u, 10u },
{ 156u, 10u },
- 67.f,
+ 69.f,
15.f,
- -5.f,
- 4.f,
+ -4.f,
+ 5.f,
+ 0.f,
0.f,
false,
false
{ 166u, 12u },
79.f,
15.f,
- -5.f,
+ -4.f,
4.f,
0.f,
+ 0.f,
false,
false
};
{
{ 178u, 14u },
{ 178u, 14u },
- 55.f,
+ 63.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 192u, 0u },
0.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
{ 0u, 13u },
93.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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 =
{
{ 0u, 12u },
81.f,
15.f,
- -5.f,
- 3.f,
+ -4.f,
+ 4.f,
+ 0.f,
0.f,
false,
false
{
{ 12u, 12u },
{ 12u, 12u },
- 93.f,
+ 95.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
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, 40.f );
+ Size layoutSize( 100.f, 38.f );
LayoutTextData data =
{
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,
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 =
{
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
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, 40.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,
{
{ 0u, 11u },
{ 0u, 11u },
- 80.f,
+ 81.f,
15.f,
- -5.f,
+ -4.f,
+ 0.f,
0.f,
0.f,
false,
- true
+ false
};
Vector<LineRun> lines;
lines.PushBack( line01 );
float positions[] =
{
- 1.f, -12.f
+ 0.f, -12.f
};
Size textArea( 100.f, 19.f );
- Size layoutSize( 100.f, 20.f );
+ Size layoutSize( 81.f, 19.f );
LayoutTextData data =
{
END_TEST;
}
-int UtcDaliTextReorderLayout01(void)
+int UtcDaliTextAlign01(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextReorderLayout01");
+ tet_infoline(" UtcDaliTextAlign01");
- // Reorder lines. No right to left characters.
+ // Calculate text alignment.
const std::string fontLatin( "TizenSans" );
-
- // Set a known font description
- FontDescriptionRun fontDescriptionRun01;
- fontDescriptionRun01.characterRun.characterIndex = 0u;
- fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
- fontDescriptionRun01.familyLength = fontLatin.size();
- fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
- memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
- fontDescriptionRun01.familyDefined = true;
- fontDescriptionRun01.weightDefined = false;
- fontDescriptionRun01.widthDefined = false;
- fontDescriptionRun01.slantDefined = false;
- fontDescriptionRun01.sizeDefined = false;
-
- Vector<FontDescriptionRun> fontDescriptionRuns;
- fontDescriptionRuns.PushBack( fontDescriptionRun01 );
-
- 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 textArea( 100.f, 300.f );
-
- ReLayoutRightToLeftLinesData data =
- {
- "Text with no right to left text.",
- "Hello world",
- textArea,
- 1u,
- fontDescriptionRuns.Begin(),
- 11u,
- positions,
- 0u,
- 11u
- };
-
- if( !ReLayoutRightToLeftLinesTest( data ) )
- {
- tet_result(TET_FAIL);
- }
-
- tet_result(TET_PASS);
- END_TEST;
-}
-
-int UtcDaliTextReorderLayout02(void)
-{
- ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextReorderLayout02");
-
- // Reorder lines of the first paragraph.
-
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;
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;
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];
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;
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;
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 );
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);
}
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;
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;
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];
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;
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;
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 );
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);
}
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;
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;
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];
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;
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;
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 );
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);
}
END_TEST;
}
-int UtcDaliTextAlign01(void)
+int UtcDaliTextAlign04(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign01");
+ tet_infoline(" UtcDaliTextAlign04");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::BEGIN,
+ Text::HorizontalAlignment::CENTER,
Text::VerticalAlignment::TOP,
0u,
22u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign02(void)
+int UtcDaliTextAlign05(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign02");
+ tet_infoline(" UtcDaliTextAlign05");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::BEGIN,
+ Text::HorizontalAlignment::CENTER,
Text::VerticalAlignment::TOP,
22u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign03(void)
+int UtcDaliTextAlign06(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign03");
+ tet_infoline(" UtcDaliTextAlign06");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::BEGIN,
+ Text::HorizontalAlignment::CENTER,
Text::VerticalAlignment::TOP,
48u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign04(void)
+int UtcDaliTextAlign07(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign04");
+ tet_infoline(" UtcDaliTextAlign07");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::CENTER,
+ Text::HorizontalAlignment::END,
Text::VerticalAlignment::TOP,
0u,
22u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign05(void)
+int UtcDaliTextAlign08(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign05");
+ tet_infoline(" UtcDaliTextAlign08");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::CENTER,
+ Text::HorizontalAlignment::END,
Text::VerticalAlignment::TOP,
22u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign06(void)
+int UtcDaliTextAlign09(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign06");
+ tet_infoline(" UtcDaliTextAlign09");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::CENTER,
+ Text::HorizontalAlignment::END,
Text::VerticalAlignment::TOP,
48u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ false
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign07(void)
+int UtcDaliTextAlign10(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign07");
+ tet_infoline(" UtcDaliTextAlign10");
// Calculate text alignment.
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,
0u,
22u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::RIGHT_TO_LEFT,
+ true
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign08(void)
+int UtcDaliTextAlign11(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign08");
+ tet_infoline(" UtcDaliTextAlign11");
// Calculate text alignment.
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(),
Text::HorizontalAlignment::END,
Text::VerticalAlignment::TOP,
- 22u,
+ 0u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ true
};
if( !AlignTest( data ) )
END_TEST;
}
-int UtcDaliTextAlign09(void)
+int UtcDaliTextAlign12(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliTextAlign09");
+ tet_infoline(" UtcDaliTextAlign12");
// Calculate text alignment.
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(),
- Text::HorizontalAlignment::END,
+ Text::HorizontalAlignment::BEGIN,
Text::VerticalAlignment::TOP,
48u,
26u,
6u,
- positions
+ positions,
+ Dali::LayoutDirection::LEFT_TO_RIGHT,
+ true
};
if( !AlignTest( data ) )
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<FontDescriptionRun> fontDescriptionRuns01;
+ fontDescriptionRuns01.PushBack( fontDescriptionRun01 );
+
+ Vector<FontDescriptionRun> fontDescriptionRuns02;
+ fontDescriptionRuns02.PushBack( fontDescriptionRun02 );
+
+ Vector<FontDescriptionRun> 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<LineRun> 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<LineRun> 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<LineRun> 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;
+}