2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
115 // 2) Clear the layout.
116 Vector<LineRun>& lines = visualModel->mLines;
118 const Length numberOfCharacters = logicalModel->mText.Count();
119 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
120 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
121 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
123 LineIndex startRemoveIndex = 0u;
125 if( 0u != lines.Count() )
127 startRemoveIndex = lines.Count();
128 LineIndex endRemoveIndex = startRemoveIndex;
129 ClearGlyphRuns( data.startIndex,
130 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
135 // Update the character runs of the lines.
136 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
137 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
138 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
139 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
140 ClearCharacterRuns( startCharacterIndex,
141 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
146 lines.Erase( lines.Begin() + startRemoveIndex,
147 lines.Begin() + endRemoveIndex );
150 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
152 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
153 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
156 Layout::Engine engine;
157 engine.SetMetrics( metrics );
158 engine.SetLayout( data.layout );
160 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 float outlineWidth = visualModel->GetOutlineWidth();
163 Layout::Parameters layoutParameters( data.textArea,
164 logicalModel->mText.Begin(),
165 logicalModel->mLineBreakInfo.Begin(),
166 logicalModel->mWordBreakInfo.Begin(),
167 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
168 visualModel->mGlyphs.Begin(),
169 visualModel->mGlyphsToCharacters.Begin(),
170 visualModel->mCharactersPerGlyph.Begin(),
171 visualModel->mCharactersToGlyph.Begin(),
172 visualModel->mGlyphsPerCharacter.Begin(),
174 Text::HorizontalAlignment::BEGIN,
175 Text::LineWrap::WORD,
180 layoutParameters.isLastNewParagraph = isLastNewParagraph;
182 // The initial glyph and the number of glyphs to layout.
183 layoutParameters.startGlyphIndex = data.startIndex;
184 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
185 layoutParameters.startLineIndex = startRemoveIndex;
186 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
188 layoutSize = Vector2::ZERO;
190 const bool updated = engine.LayoutText( layoutParameters,
196 // 4) Compare the results.
198 if( updated != data.updated )
200 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
204 if( layoutSize != data.layoutSize )
206 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
210 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
212 const Vector2& position = *( glyphPositions.Begin() + index );
214 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
216 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
219 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
221 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
226 if( lines.Count() != data.numberOfLines )
228 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
232 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
234 const LineRun& line = *( lines.Begin() + index );
235 const LineRun& expectedLine = *( data.lines + index );
237 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
239 std::cout << " Different line info for line : " << index << std::endl;
241 std::cout << " expected" << std::endl;
242 Print( expectedLine );
245 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
247 std::cout << " Different line info for line : " << index << std::endl;
249 std::cout << " expected" << std::endl;
250 Print( expectedLine );
254 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
256 std::cout << " Different line info for line : " << index << std::endl;
258 std::cout << " expected" << std::endl;
259 Print( expectedLine );
262 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
264 std::cout << " Different line info for line : " << index << std::endl;
266 std::cout << " expected" << std::endl;
267 Print( expectedLine );
271 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
273 std::cout << " Different line info for line : " << index << std::endl;
275 std::cout << " expected" << std::endl;
276 Print( expectedLine );
280 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
282 std::cout << " Different line info for line : " << index << std::endl;
284 std::cout << " expected" << std::endl;
285 Print( expectedLine );
289 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
291 std::cout << " Different line info for line : " << index << std::endl;
293 std::cout << " expected" << std::endl;
294 Print( expectedLine );
298 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
300 std::cout << " Different line info for line : " << index << std::endl;
302 std::cout << " expected" << std::endl;
303 Print( expectedLine );
307 if( line.ellipsis != expectedLine.ellipsis )
309 std::cout << " Different line info for line : " << index << std::endl;
311 std::cout << " expected" << std::endl;
312 Print( expectedLine );
316 // Do not compare the alignment offset as it's not calculated in the layout.
317 // Do not compare the line direction as it's not set in the layout.
323 //////////////////////////////////////////////////////////
325 struct ReLayoutRightToLeftLinesData
327 std::string description;
330 unsigned int numberOfFonts;
331 FontDescriptionRun* fontDescriptions;
332 unsigned int totalNumberOfGlyphs;
334 unsigned int startIndex;
335 unsigned int numberOfCharacters;
338 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
341 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
342 fontClient.SetDpi( 96u, 96u );
344 char* pathNamePtr = get_current_dir_name();
345 const std::string pathName( pathNamePtr );
348 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
349 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
350 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
352 // 1) Create the model.
353 LogicalModelPtr logicalModel;
354 VisualModelPtr visualModel;
358 Vector<FontDescriptionRun> fontDescriptionRuns;
359 if( 0u != data.numberOfFonts )
361 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
362 data.fontDescriptions,
363 data.fontDescriptions + data.numberOfFonts );
366 LayoutOptions options;
367 options.reorder = false;
368 options.align = false;
369 CreateTextModel( data.text,
379 // 2) Call the ReLayoutRightToLeftLines() method.
380 Layout::Engine engine;
381 engine.SetMetrics( metrics );
383 float outlineWidth = visualModel->GetOutlineWidth();
384 Layout::Parameters layoutParameters( data.textArea,
385 logicalModel->mText.Begin(),
386 logicalModel->mLineBreakInfo.Begin(),
387 logicalModel->mWordBreakInfo.Begin(),
388 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
389 visualModel->mGlyphs.Begin(),
390 visualModel->mGlyphsToCharacters.Begin(),
391 visualModel->mCharactersPerGlyph.Begin(),
392 visualModel->mCharactersToGlyph.Begin(),
393 visualModel->mGlyphsPerCharacter.Begin(),
394 visualModel->mGlyphs.Count(),
395 Text::HorizontalAlignment::BEGIN,
396 Text::LineWrap::WORD,
401 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
402 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
404 engine.ReLayoutRightToLeftLines( layoutParameters,
406 data.numberOfCharacters,
407 visualModel->mGlyphPositions );
409 // 3) Compare the results.
410 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
412 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
414 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
418 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
420 const Vector2& position = *( glyphPositions.Begin() + index );
422 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
424 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
427 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
429 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
437 //////////////////////////////////////////////////////////
441 std::string description;
444 unsigned int numberOfFonts;
445 FontDescriptionRun* fontDescriptions;
446 Text::HorizontalAlignment::Type horizontalAlignment;
447 Text::VerticalAlignment::Type verticalAlignment;
448 unsigned int startIndex;
449 unsigned int numberOfCharacters;
450 unsigned int numberOfLines;
452 Dali::LayoutDirection::Type layoutDirection;
453 bool matchSystemLanguageDirection;
456 bool AlignTest( const AlignData& data )
459 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
460 fontClient.SetDpi( 96u, 96u );
462 char* pathNamePtr = get_current_dir_name();
463 const std::string pathName( pathNamePtr );
466 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
467 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
468 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
470 // 1) Create the model.
471 LogicalModelPtr logicalModel;
472 VisualModelPtr visualModel;
476 Vector<FontDescriptionRun> fontDescriptionRuns;
477 if( 0u != data.numberOfFonts )
479 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
480 data.fontDescriptions,
481 data.fontDescriptions + data.numberOfFonts );
484 LayoutOptions options;
485 options.align = false;
486 CreateTextModel( data.text,
496 // Call the Align method.
497 Layout::Engine engine;
498 engine.SetMetrics( metrics );
500 float alignmentOffset = 0.f;
501 engine.Align( data.textArea,
503 data.numberOfCharacters,
504 data.horizontalAlignment,
507 data.layoutDirection,
508 data.matchSystemLanguageDirection );
511 if( data.numberOfLines != visualModel->mLines.Count() )
513 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
517 const LineRun* const linesBuffer = visualModel->mLines.Begin();
518 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
520 const LineRun& line = *( linesBuffer + index );
522 if( line.alignmentOffset != *( data.lineOffsets + index ) )
524 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
533 //////////////////////////////////////////////////////////
535 // UtcDaliTextLayoutSetGetLayout
536 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
537 // UtcDaliTextLayoutSetGetHorizontalAlignment
538 // UtcDaliTextLayoutSetGetVerticalAlignment
539 // UtcDaliTextLayoutSetGetCursorWidth
540 // UtcDaliTextLayoutNoText
541 // UtcDaliTextLayoutSmallTextArea01
542 // UtcDaliTextLayoutSmallTextArea02
543 // UtcDaliTextLayoutMultilineText01
544 // UtcDaliTextLayoutMultilineText02
545 // UtcDaliTextLayoutMultilineText03
546 // UtcDaliTextLayoutMultilineText04
547 // UtcDaliTextLayoutMultilineText05
548 // UtcDaliTextUpdateLayout01
549 // UtcDaliTextUpdateLayout02
550 // UtcDaliTextUpdateLayout03
551 // UtcDaliTextLayoutEllipsis01
552 // UtcDaliTextLayoutEllipsis02
553 // UtcDaliTextLayoutEllipsis03
554 // UtcDaliTextLayoutEllipsis04
555 // UtcDaliTextLayoutEllipsis04
556 // UtcDaliTextReorderLayout01
557 // UtcDaliTextReorderLayout02
558 // UtcDaliTextReorderLayout03
559 // UtcDaliTextReorderLayout04
560 // UtcDaliTextAlign01
561 // UtcDaliTextAlign02
562 // UtcDaliTextAlign03
563 // UtcDaliTextAlign04
564 // UtcDaliTextAlign05
565 // UtcDaliTextAlign06
566 // UtcDaliTextAlign07
567 // UtcDaliTextAlign08
568 // UtcDaliTextAlign09
570 //////////////////////////////////////////////////////////
572 int UtcDaliTextLayoutSetGetLayout(void)
574 ToolkitTestApplication application;
575 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
577 Layout::Engine engine;
579 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
581 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
582 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
584 tet_result(TET_PASS);
588 int UtcDaliTextLayoutSetGetCursorWidth(void)
590 ToolkitTestApplication application;
593 Layout::Engine engine;
595 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
597 engine.SetCursorWidth( 2 );
598 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
600 tet_result(TET_PASS);
604 int UtcDaliTextLayoutNoText(void)
606 ToolkitTestApplication application;
607 tet_infoline(" UtcDaliTextLayoutNoText");
609 Size textArea(100.f, 60.f);
610 Size layoutSize = Vector2::ZERO;
611 LayoutTextData data =
623 Layout::Engine::MULTI_LINE_BOX,
630 if( !LayoutTextTest( data ) )
632 tet_result(TET_FAIL);
635 tet_result(TET_PASS);
639 int UtcDaliTextLayoutSmallTextArea01(void)
641 ToolkitTestApplication application;
642 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
644 // Won't layout the text in multi-line if the width is too small.
646 const std::string fontFamily( "TizenSans" );
648 // Set a known font description
649 FontDescriptionRun fontDescriptionRun;
650 fontDescriptionRun.characterRun.characterIndex = 0u;
651 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
652 fontDescriptionRun.familyLength = fontFamily.size();
653 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
654 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
655 fontDescriptionRun.familyDefined = true;
656 fontDescriptionRun.weightDefined = false;
657 fontDescriptionRun.widthDefined = false;
658 fontDescriptionRun.slantDefined = false;
659 fontDescriptionRun.sizeDefined = false;
661 Vector<FontDescriptionRun> fontDescriptionRuns;
662 fontDescriptionRuns.PushBack( fontDescriptionRun );
663 Size textArea(1.f, 1.f);
664 Size layoutSize = Vector2::ZERO;
665 LayoutTextData data =
667 "Layout text in a small area",
671 fontDescriptionRuns.Begin(),
677 Layout::Engine::MULTI_LINE_BOX,
684 if( !LayoutTextTest( data ) )
686 tet_result(TET_FAIL);
689 tet_result(TET_PASS);
693 int UtcDaliTextLayoutSmallTextArea02(void)
695 ToolkitTestApplication application;
696 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
698 // Will layout the text in single line as it can be scrolled.
700 const std::string fontFamily( "TizenSans" );
702 // Set a known font description
703 FontDescriptionRun fontDescriptionRun;
704 fontDescriptionRun.characterRun.characterIndex = 0u;
705 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
706 fontDescriptionRun.familyLength = fontFamily.size();
707 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
708 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
709 fontDescriptionRun.familyDefined = true;
710 fontDescriptionRun.weightDefined = false;
711 fontDescriptionRun.widthDefined = false;
712 fontDescriptionRun.slantDefined = false;
713 fontDescriptionRun.sizeDefined = false;
715 Vector<FontDescriptionRun> fontDescriptionRuns;
716 fontDescriptionRuns.PushBack( fontDescriptionRun );
717 Size textArea(1.f, 1.f);
718 Size layoutSize(80.f, 20.f);
719 float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
720 struct LineRun line =
733 Vector<LineRun> lines;
734 lines.PushBack( line );
736 LayoutTextData data =
738 "Layout text in a small area",
742 fontDescriptionRuns.Begin(),
748 Layout::Engine::SINGLE_LINE_BOX,
755 if( !LayoutTextTest( data ) )
757 tet_result(TET_FAIL);
760 tet_result(TET_PASS);
764 int UtcDaliTextLayoutMultilineText01(void)
766 ToolkitTestApplication application;
767 tet_infoline(" UtcDaliTextLayoutMultilineText01");
769 // Layout some lines of left to right text.
771 const std::string fontFamily( "TizenSans" );
773 // Set a known font description
774 FontDescriptionRun fontDescriptionRun1;
775 fontDescriptionRun1.characterRun.characterIndex = 0u;
776 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
777 fontDescriptionRun1.familyLength = fontFamily.size();
778 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
779 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
780 fontDescriptionRun1.familyDefined = true;
781 fontDescriptionRun1.weightDefined = false;
782 fontDescriptionRun1.widthDefined = false;
783 fontDescriptionRun1.slantDefined = false;
784 fontDescriptionRun1.sizeDefined = false;
786 FontDescriptionRun fontDescriptionRun2;
787 fontDescriptionRun2.characterRun.characterIndex = 18u;
788 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
789 fontDescriptionRun2.familyLength = fontFamily.size();
790 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
791 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
792 fontDescriptionRun2.familyDefined = true;
793 fontDescriptionRun2.weightDefined = false;
794 fontDescriptionRun2.widthDefined = false;
795 fontDescriptionRun2.slantDefined = false;
796 fontDescriptionRun2.sizeDefined = false;
798 Vector<FontDescriptionRun> fontDescriptionRuns;
799 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
800 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
801 Size textArea(100.f, 300.f);
802 Size layoutSize(95.f, 97.f);
805 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
806 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
807 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,
808 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,
809 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
811 struct LineRun line0 =
824 struct LineRun line1 =
837 struct LineRun line2 =
850 struct LineRun line3 =
863 struct LineRun line4 =
876 Vector<LineRun> lines;
877 lines.PushBack( line0 );
878 lines.PushBack( line1 );
879 lines.PushBack( line2 );
880 lines.PushBack( line3 );
881 lines.PushBack( line4 );
883 LayoutTextData data =
885 "Layout simple multi-line text",
886 "Hello world demo.\n"
887 "Layout different lines of text.",
890 fontDescriptionRuns.Begin(),
896 Layout::Engine::MULTI_LINE_BOX,
903 if( !LayoutTextTest( data ) )
905 tet_result(TET_FAIL);
908 tet_result(TET_PASS);
912 int UtcDaliTextLayoutMultilineText02(void)
914 ToolkitTestApplication application;
915 tet_infoline(" UtcDaliTextLayoutMultilineText02");
917 // Layout some lines of bidirectional text.
919 const std::string fontFamily1( "TizenSans" );
921 // Set a known font description
922 FontDescriptionRun fontDescriptionRun1;
923 fontDescriptionRun1.characterRun.characterIndex = 0u;
924 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
925 fontDescriptionRun1.familyLength = fontFamily1.size();
926 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
927 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
928 fontDescriptionRun1.familyDefined = true;
929 fontDescriptionRun1.weightDefined = false;
930 fontDescriptionRun1.widthDefined = false;
931 fontDescriptionRun1.slantDefined = false;
932 fontDescriptionRun1.sizeDefined = false;
934 const std::string fontFamily2( "TizenSansHebrew" );
936 // Set a known font description
937 FontDescriptionRun fontDescriptionRun2;
938 fontDescriptionRun2.characterRun.characterIndex = 17u;
939 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
940 fontDescriptionRun2.familyLength = fontFamily2.size();
941 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
942 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
943 fontDescriptionRun2.familyDefined = true;
944 fontDescriptionRun2.weightDefined = false;
945 fontDescriptionRun2.widthDefined = false;
946 fontDescriptionRun2.slantDefined = false;
947 fontDescriptionRun2.sizeDefined = false;
949 const std::string fontFamily3( "TizenSans" );
951 // Set a known font description
952 FontDescriptionRun fontDescriptionRun3;
953 fontDescriptionRun3.characterRun.characterIndex = 26u;
954 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
955 fontDescriptionRun3.familyLength = fontFamily3.size();
956 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
957 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
958 fontDescriptionRun3.familyDefined = true;
959 fontDescriptionRun3.weightDefined = false;
960 fontDescriptionRun3.widthDefined = false;
961 fontDescriptionRun3.slantDefined = false;
962 fontDescriptionRun3.sizeDefined = false;
964 const std::string fontFamily4( "TizenSansHebrew" );
966 // Set a known font description
967 FontDescriptionRun fontDescriptionRun4;
968 fontDescriptionRun4.characterRun.characterIndex = 28u;
969 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
970 fontDescriptionRun4.familyLength = fontFamily4.size();
971 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
972 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
973 fontDescriptionRun4.familyDefined = true;
974 fontDescriptionRun4.weightDefined = false;
975 fontDescriptionRun4.widthDefined = false;
976 fontDescriptionRun4.slantDefined = false;
977 fontDescriptionRun4.sizeDefined = false;
979 const std::string fontFamily5( "TizenSans" );
981 // Set a known font description
982 FontDescriptionRun fontDescriptionRun5;
983 fontDescriptionRun5.characterRun.characterIndex = 38u;
984 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
985 fontDescriptionRun5.familyLength = fontFamily5.size();
986 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
987 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
988 fontDescriptionRun5.familyDefined = true;
989 fontDescriptionRun5.weightDefined = false;
990 fontDescriptionRun5.widthDefined = false;
991 fontDescriptionRun5.slantDefined = false;
992 fontDescriptionRun5.sizeDefined = false;
994 Vector<FontDescriptionRun> fontDescriptionRuns;
995 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
996 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
997 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
998 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
999 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
1000 Size textArea(100.f, 300.f);
1001 Size layoutSize(80.f, 120.f);
1004 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1005 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1006 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1007 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,
1008 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1009 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1011 struct LineRun line0 =
1024 struct LineRun line1 =
1037 struct LineRun line2 =
1050 struct LineRun line3 =
1063 struct LineRun line4 =
1076 struct LineRun line5 =
1089 Vector<LineRun> lines;
1090 lines.PushBack( line0 );
1091 lines.PushBack( line1 );
1092 lines.PushBack( line2 );
1093 lines.PushBack( line3 );
1094 lines.PushBack( line4 );
1095 lines.PushBack( line5 );
1097 LayoutTextData data =
1099 "Layout bidirectional text.",
1100 "Hello world demo שלום עולם.\n"
1101 "שלום עולם hello world demo.",
1104 fontDescriptionRuns.Begin(),
1110 Layout::Engine::MULTI_LINE_BOX,
1117 if( !LayoutTextTest( data ) )
1119 tet_result(TET_FAIL);
1122 tet_result(TET_PASS);
1126 int UtcDaliTextLayoutMultilineText03(void)
1128 ToolkitTestApplication application;
1129 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1131 // Layout a long word which doesn't fit in the width of the text area.
1133 const std::string fontFamily( "TizenSans" );
1135 // Set a known font description
1136 FontDescriptionRun fontDescriptionRun;
1137 fontDescriptionRun.characterRun.characterIndex = 0u;
1138 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1139 fontDescriptionRun.familyLength = fontFamily.size();
1140 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1141 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1142 fontDescriptionRun.familyDefined = true;
1143 fontDescriptionRun.weightDefined = false;
1144 fontDescriptionRun.widthDefined = false;
1145 fontDescriptionRun.slantDefined = false;
1146 fontDescriptionRun.sizeDefined = false;
1148 Vector<FontDescriptionRun> fontDescriptionRuns;
1149 fontDescriptionRuns.PushBack( fontDescriptionRun );
1150 Size textArea(100.f, 300.f);
1151 Size layoutSize(96.f, 60.f);
1154 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f,
1155 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f,
1156 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1158 struct LineRun line0 =
1171 struct LineRun line1 =
1184 struct LineRun line2 =
1197 Vector<LineRun> lines;
1198 lines.PushBack( line0 );
1199 lines.PushBack( line1 );
1200 lines.PushBack( line2 );
1202 LayoutTextData data =
1204 "Layout a long word which doesn't fit in the width of the text area.",
1205 "Helloworlddemohelloworlddemo.",
1208 fontDescriptionRuns.Begin(),
1214 Layout::Engine::MULTI_LINE_BOX,
1221 if( !LayoutTextTest( data ) )
1223 tet_result(TET_FAIL);
1226 tet_result(TET_PASS);
1230 int UtcDaliTextLayoutMultilineText04(void)
1232 ToolkitTestApplication application;
1233 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1235 // Layout simple text ending with a \n. It has to add a void line at the end.
1237 const std::string fontFamily( "TizenSans" );
1239 // Set a known font description
1240 FontDescriptionRun fontDescriptionRun;
1241 fontDescriptionRun.characterRun.characterIndex = 0u;
1242 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1243 fontDescriptionRun.familyLength = fontFamily.size();
1244 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1245 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1246 fontDescriptionRun.familyDefined = true;
1247 fontDescriptionRun.weightDefined = false;
1248 fontDescriptionRun.widthDefined = false;
1249 fontDescriptionRun.slantDefined = false;
1250 fontDescriptionRun.sizeDefined = false;
1252 Vector<FontDescriptionRun> fontDescriptionRuns;
1253 fontDescriptionRuns.PushBack( fontDescriptionRun );
1254 Size textArea(100.f, 300.f);
1255 Size layoutSize(83.f, 40.f);
1258 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f
1260 struct LineRun line0 =
1272 struct LineRun line1 =
1285 Vector<LineRun> lines;
1286 lines.PushBack( line0 );
1287 lines.PushBack( line1 );
1289 LayoutTextData data =
1291 "Layout simple text ending with a \n.",
1295 fontDescriptionRuns.Begin(),
1301 Layout::Engine::MULTI_LINE_BOX,
1308 if( !LayoutTextTest( data ) )
1310 tet_result(TET_FAIL);
1313 tet_result(TET_PASS);
1317 int UtcDaliTextLayoutMultilineText05(void)
1319 ToolkitTestApplication application;
1320 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1322 // Layout simple text with one character with a different font size.
1324 const std::string fontFamily( "TizenSans" );
1326 // Set a known font description
1327 FontDescriptionRun fontDescriptionRun1;
1328 fontDescriptionRun1.characterRun.characterIndex = 0u;
1329 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1330 fontDescriptionRun1.familyLength = fontFamily.size();
1331 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1332 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1333 fontDescriptionRun1.familyDefined = true;
1334 fontDescriptionRun1.weightDefined = false;
1335 fontDescriptionRun1.widthDefined = false;
1336 fontDescriptionRun1.slantDefined = false;
1337 fontDescriptionRun1.sizeDefined = false;
1339 FontDescriptionRun fontDescriptionRun2;
1340 fontDescriptionRun2.characterRun.characterIndex = 6u;
1341 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1342 fontDescriptionRun2.familyLength = fontFamily.size();
1343 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1344 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1345 fontDescriptionRun2.size = 1280u;
1346 fontDescriptionRun2.familyDefined = true;
1347 fontDescriptionRun2.weightDefined = false;
1348 fontDescriptionRun2.widthDefined = false;
1349 fontDescriptionRun2.slantDefined = false;
1350 fontDescriptionRun2.sizeDefined = true;
1352 FontDescriptionRun fontDescriptionRun3;
1353 fontDescriptionRun3.characterRun.characterIndex = 7u;
1354 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1355 fontDescriptionRun3.familyLength = fontFamily.size();
1356 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1357 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1358 fontDescriptionRun3.familyDefined = true;
1359 fontDescriptionRun3.weightDefined = false;
1360 fontDescriptionRun3.widthDefined = false;
1361 fontDescriptionRun3.slantDefined = false;
1362 fontDescriptionRun3.sizeDefined = false;
1364 Vector<FontDescriptionRun> fontDescriptionRuns;
1365 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1366 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1367 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1368 Size textArea(100.f, 300.f);
1369 Size layoutSize(88.f, 53.f);
1372 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1373 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1375 struct LineRun line0 =
1388 struct LineRun line1 =
1401 Vector<LineRun> lines;
1402 lines.PushBack( line0 );
1403 lines.PushBack( line1 );
1405 LayoutTextData data =
1407 "Layout simple text with one character with a different font size.",
1408 "Hello world demo.",
1411 fontDescriptionRuns.Begin(),
1417 Layout::Engine::MULTI_LINE_BOX,
1424 if( !LayoutTextTest( data ) )
1426 tet_result(TET_FAIL);
1429 tet_result(TET_PASS);
1433 int UtcDaliTextUpdateLayout01(void)
1435 ToolkitTestApplication application;
1436 tet_infoline(" UtcDaliTextUpdateLayout01");
1438 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1440 const std::string fontLatin( "TizenSans" );
1441 const std::string fontHebrew( "TizenSansHebrew" );
1442 const std::string fontArabic( "TizenSansArabic" );
1444 // Set a known font description
1445 FontDescriptionRun fontDescriptionRun01;
1446 fontDescriptionRun01.characterRun.characterIndex = 0u;
1447 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1448 fontDescriptionRun01.familyLength = fontLatin.size();
1449 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1450 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1451 fontDescriptionRun01.familyDefined = true;
1452 fontDescriptionRun01.weightDefined = false;
1453 fontDescriptionRun01.widthDefined = false;
1454 fontDescriptionRun01.slantDefined = false;
1455 fontDescriptionRun01.sizeDefined = false;
1457 // Set a known font description
1458 FontDescriptionRun fontDescriptionRun02;
1459 fontDescriptionRun02.characterRun.characterIndex = 17u;
1460 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1461 fontDescriptionRun02.familyLength = fontHebrew.size();
1462 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1463 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1464 fontDescriptionRun02.familyDefined = true;
1465 fontDescriptionRun02.weightDefined = false;
1466 fontDescriptionRun02.widthDefined = false;
1467 fontDescriptionRun02.slantDefined = false;
1468 fontDescriptionRun02.sizeDefined = false;
1470 // Set a known font description
1471 FontDescriptionRun fontDescriptionRun03;
1472 fontDescriptionRun03.characterRun.characterIndex = 26u;
1473 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1474 fontDescriptionRun03.familyLength = fontLatin.size();
1475 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1476 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1477 fontDescriptionRun03.familyDefined = true;
1478 fontDescriptionRun03.weightDefined = false;
1479 fontDescriptionRun03.widthDefined = false;
1480 fontDescriptionRun03.slantDefined = false;
1481 fontDescriptionRun03.sizeDefined = false;
1483 // Set a known font description
1484 FontDescriptionRun fontDescriptionRun04;
1485 fontDescriptionRun04.characterRun.characterIndex = 28u;
1486 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1487 fontDescriptionRun04.familyLength = fontArabic.size();
1488 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1489 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1490 fontDescriptionRun04.familyDefined = true;
1491 fontDescriptionRun04.weightDefined = false;
1492 fontDescriptionRun04.widthDefined = false;
1493 fontDescriptionRun04.slantDefined = false;
1494 fontDescriptionRun04.sizeDefined = false;
1496 // Set a known font description
1497 FontDescriptionRun fontDescriptionRun05;
1498 fontDescriptionRun05.characterRun.characterIndex = 42u;
1499 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1500 fontDescriptionRun05.familyLength = fontLatin.size();
1501 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1502 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1503 fontDescriptionRun05.familyDefined = true;
1504 fontDescriptionRun05.weightDefined = false;
1505 fontDescriptionRun05.widthDefined = false;
1506 fontDescriptionRun05.slantDefined = false;
1507 fontDescriptionRun05.sizeDefined = false;
1509 // Set a known font description
1510 FontDescriptionRun fontDescriptionRun06;
1511 fontDescriptionRun06.characterRun.characterIndex = 54u;
1512 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1513 fontDescriptionRun06.familyLength = fontHebrew.size();
1514 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1515 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1516 fontDescriptionRun06.familyDefined = true;
1517 fontDescriptionRun06.weightDefined = false;
1518 fontDescriptionRun06.widthDefined = false;
1519 fontDescriptionRun06.slantDefined = false;
1520 fontDescriptionRun06.sizeDefined = false;
1522 // Set a known font description
1523 FontDescriptionRun fontDescriptionRun07;
1524 fontDescriptionRun07.characterRun.characterIndex = 64u;
1525 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1526 fontDescriptionRun07.familyLength = fontHebrew.size();
1527 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1528 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1529 fontDescriptionRun07.familyDefined = true;
1530 fontDescriptionRun07.weightDefined = false;
1531 fontDescriptionRun07.widthDefined = false;
1532 fontDescriptionRun07.slantDefined = false;
1533 fontDescriptionRun07.sizeDefined = false;
1535 // Set a known font description
1536 FontDescriptionRun fontDescriptionRun08;
1537 fontDescriptionRun08.characterRun.characterIndex = 74u;
1538 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1539 fontDescriptionRun08.familyLength = fontLatin.size();
1540 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1541 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1542 fontDescriptionRun08.familyDefined = true;
1543 fontDescriptionRun08.weightDefined = false;
1544 fontDescriptionRun08.widthDefined = false;
1545 fontDescriptionRun08.slantDefined = false;
1546 fontDescriptionRun08.sizeDefined = false;
1548 // Set a known font description
1549 FontDescriptionRun fontDescriptionRun09;
1550 fontDescriptionRun09.characterRun.characterIndex = 92u;
1551 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1552 fontDescriptionRun09.familyLength = fontLatin.size();
1553 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1554 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1555 fontDescriptionRun09.familyDefined = true;
1556 fontDescriptionRun09.weightDefined = false;
1557 fontDescriptionRun09.widthDefined = false;
1558 fontDescriptionRun09.slantDefined = false;
1559 fontDescriptionRun09.sizeDefined = false;
1561 // Set a known font description
1562 FontDescriptionRun fontDescriptionRun10;
1563 fontDescriptionRun10.characterRun.characterIndex = 104u;
1564 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1565 fontDescriptionRun10.familyLength = fontArabic.size();
1566 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1567 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1568 fontDescriptionRun10.familyDefined = true;
1569 fontDescriptionRun10.weightDefined = false;
1570 fontDescriptionRun10.widthDefined = false;
1571 fontDescriptionRun10.slantDefined = false;
1572 fontDescriptionRun10.sizeDefined = false;
1574 // Set a known font description
1575 FontDescriptionRun fontDescriptionRun11;
1576 fontDescriptionRun11.characterRun.characterIndex = 118u;
1577 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1578 fontDescriptionRun11.familyLength = fontHebrew.size();
1579 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1580 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1581 fontDescriptionRun11.familyDefined = true;
1582 fontDescriptionRun11.weightDefined = false;
1583 fontDescriptionRun11.widthDefined = false;
1584 fontDescriptionRun11.slantDefined = false;
1585 fontDescriptionRun11.sizeDefined = false;
1587 // Set a known font description
1588 FontDescriptionRun fontDescriptionRun12;
1589 fontDescriptionRun12.characterRun.characterIndex = 128u;
1590 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1591 fontDescriptionRun12.familyLength = fontLatin.size();
1592 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1593 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1594 fontDescriptionRun12.familyDefined = true;
1595 fontDescriptionRun12.weightDefined = false;
1596 fontDescriptionRun12.widthDefined = false;
1597 fontDescriptionRun12.slantDefined = false;
1598 fontDescriptionRun12.sizeDefined = false;
1600 // Set a known font description
1601 FontDescriptionRun fontDescriptionRun13;
1602 fontDescriptionRun13.characterRun.characterIndex = 145u;
1603 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1604 fontDescriptionRun13.familyLength = fontHebrew.size();
1605 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1606 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1607 fontDescriptionRun13.familyDefined = true;
1608 fontDescriptionRun13.weightDefined = false;
1609 fontDescriptionRun13.widthDefined = false;
1610 fontDescriptionRun13.slantDefined = false;
1611 fontDescriptionRun13.sizeDefined = false;
1613 // Set a known font description
1614 FontDescriptionRun fontDescriptionRun14;
1615 fontDescriptionRun14.characterRun.characterIndex = 154u;
1616 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1617 fontDescriptionRun14.familyLength = fontLatin.size();
1618 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1619 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1620 fontDescriptionRun14.familyDefined = true;
1621 fontDescriptionRun14.weightDefined = false;
1622 fontDescriptionRun14.widthDefined = false;
1623 fontDescriptionRun14.slantDefined = false;
1624 fontDescriptionRun14.sizeDefined = false;
1626 // Set a known font description
1627 FontDescriptionRun fontDescriptionRun15;
1628 fontDescriptionRun15.characterRun.characterIndex = 156u;
1629 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1630 fontDescriptionRun15.familyLength = fontHebrew.size();
1631 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1632 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1633 fontDescriptionRun15.familyDefined = true;
1634 fontDescriptionRun15.weightDefined = false;
1635 fontDescriptionRun15.widthDefined = false;
1636 fontDescriptionRun15.slantDefined = false;
1637 fontDescriptionRun15.sizeDefined = false;
1639 // Set a known font description
1640 FontDescriptionRun fontDescriptionRun16;
1641 fontDescriptionRun16.characterRun.characterIndex = 166u;
1642 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1643 fontDescriptionRun16.familyLength = fontLatin.size();
1644 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1645 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1646 fontDescriptionRun16.familyDefined = true;
1647 fontDescriptionRun16.weightDefined = false;
1648 fontDescriptionRun16.widthDefined = false;
1649 fontDescriptionRun16.slantDefined = false;
1650 fontDescriptionRun16.sizeDefined = false;
1652 // Set a known font description
1653 FontDescriptionRun fontDescriptionRun17;
1654 fontDescriptionRun17.characterRun.characterIndex = 178u;
1655 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1656 fontDescriptionRun17.familyLength = fontArabic.size();
1657 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1658 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1659 fontDescriptionRun17.familyDefined = true;
1660 fontDescriptionRun17.weightDefined = false;
1661 fontDescriptionRun17.widthDefined = false;
1662 fontDescriptionRun17.slantDefined = false;
1663 fontDescriptionRun17.sizeDefined = false;
1665 Vector<FontDescriptionRun> fontDescriptionRuns;
1666 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1667 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1668 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1675 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1676 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1677 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1678 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1679 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1680 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1681 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1682 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1683 Size textArea(100.f, 300.f);
1684 Size layoutSize(92.f, 380.f);
1687 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1688 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1689 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1690 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
1691 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,
1692 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1693 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,
1694 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1695 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1696 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1697 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
1698 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1699 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1700 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1701 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1702 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,
1703 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1704 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
1707 struct LineRun line01 =
1720 struct LineRun line02 =
1733 struct LineRun line03 =
1746 struct LineRun line04 =
1759 struct LineRun line05 =
1772 struct LineRun line06 =
1785 struct LineRun line07 =
1798 struct LineRun line08 =
1811 struct LineRun line09 =
1824 struct LineRun line10 =
1837 struct LineRun line11 =
1850 struct LineRun line12 =
1863 struct LineRun line13 =
1876 struct LineRun line14 =
1889 struct LineRun line15 =
1902 struct LineRun line16 =
1915 struct LineRun line17 =
1928 struct LineRun line18 =
1941 struct LineRun line19 =
1954 Vector<LineRun> lines;
1955 lines.PushBack( line01 );
1956 lines.PushBack( line02 );
1957 lines.PushBack( line03 );
1958 lines.PushBack( line04 );
1959 lines.PushBack( line05 );
1960 lines.PushBack( line06 );
1961 lines.PushBack( line07 );
1962 lines.PushBack( line08 );
1963 lines.PushBack( line09 );
1964 lines.PushBack( line10 );
1965 lines.PushBack( line11 );
1966 lines.PushBack( line12 );
1967 lines.PushBack( line13 );
1968 lines.PushBack( line14 );
1969 lines.PushBack( line15 );
1970 lines.PushBack( line16 );
1971 lines.PushBack( line17 );
1972 lines.PushBack( line18 );
1973 lines.PushBack( line19 );
1975 LayoutTextData data =
1977 "Layout bidirectional text.",
1978 "Hello world demo שלום עולם.\n"
1979 "مرحبا بالعالم hello world שלום עולם\n"
1980 "שלום עולם hello world demo.\n"
1981 "hello world مرحبا بالعالم שלום עולם\n"
1982 "Hello world demo שלום עולם.\n"
1983 "שלום עולם hello world مرحبا بالعالم\n",
1986 fontDescriptionRuns.Begin(),
1992 Layout::Engine::MULTI_LINE_BOX,
1999 if( !LayoutTextTest( data ) )
2001 tet_result(TET_FAIL);
2004 tet_result(TET_PASS);
2008 int UtcDaliTextUpdateLayout02(void)
2010 ToolkitTestApplication application;
2011 tet_infoline(" UtcDaliTextUpdateLayout02");
2013 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2015 const std::string fontLatin( "TizenSans" );
2016 const std::string fontHebrew( "TizenSansHebrew" );
2017 const std::string fontArabic( "TizenSansArabic" );
2019 // Set a known font description
2020 FontDescriptionRun fontDescriptionRun01;
2021 fontDescriptionRun01.characterRun.characterIndex = 0u;
2022 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2023 fontDescriptionRun01.familyLength = fontLatin.size();
2024 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2025 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2026 fontDescriptionRun01.familyDefined = true;
2027 fontDescriptionRun01.weightDefined = false;
2028 fontDescriptionRun01.widthDefined = false;
2029 fontDescriptionRun01.slantDefined = false;
2030 fontDescriptionRun01.sizeDefined = false;
2032 // Set a known font description
2033 FontDescriptionRun fontDescriptionRun02;
2034 fontDescriptionRun02.characterRun.characterIndex = 17u;
2035 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2036 fontDescriptionRun02.familyLength = fontHebrew.size();
2037 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2038 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2039 fontDescriptionRun02.familyDefined = true;
2040 fontDescriptionRun02.weightDefined = false;
2041 fontDescriptionRun02.widthDefined = false;
2042 fontDescriptionRun02.slantDefined = false;
2043 fontDescriptionRun02.sizeDefined = false;
2045 // Set a known font description
2046 FontDescriptionRun fontDescriptionRun03;
2047 fontDescriptionRun03.characterRun.characterIndex = 26u;
2048 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2049 fontDescriptionRun03.familyLength = fontLatin.size();
2050 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2051 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2052 fontDescriptionRun03.familyDefined = true;
2053 fontDescriptionRun03.weightDefined = false;
2054 fontDescriptionRun03.widthDefined = false;
2055 fontDescriptionRun03.slantDefined = false;
2056 fontDescriptionRun03.sizeDefined = false;
2058 // Set a known font description
2059 FontDescriptionRun fontDescriptionRun04;
2060 fontDescriptionRun04.characterRun.characterIndex = 28u;
2061 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2062 fontDescriptionRun04.familyLength = fontArabic.size();
2063 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2064 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2065 fontDescriptionRun04.familyDefined = true;
2066 fontDescriptionRun04.weightDefined = false;
2067 fontDescriptionRun04.widthDefined = false;
2068 fontDescriptionRun04.slantDefined = false;
2069 fontDescriptionRun04.sizeDefined = false;
2071 // Set a known font description
2072 FontDescriptionRun fontDescriptionRun05;
2073 fontDescriptionRun05.characterRun.characterIndex = 42u;
2074 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2075 fontDescriptionRun05.familyLength = fontLatin.size();
2076 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2077 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2078 fontDescriptionRun05.familyDefined = true;
2079 fontDescriptionRun05.weightDefined = false;
2080 fontDescriptionRun05.widthDefined = false;
2081 fontDescriptionRun05.slantDefined = false;
2082 fontDescriptionRun05.sizeDefined = false;
2084 // Set a known font description
2085 FontDescriptionRun fontDescriptionRun06;
2086 fontDescriptionRun06.characterRun.characterIndex = 54u;
2087 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2088 fontDescriptionRun06.familyLength = fontHebrew.size();
2089 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2090 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2091 fontDescriptionRun06.familyDefined = true;
2092 fontDescriptionRun06.weightDefined = false;
2093 fontDescriptionRun06.widthDefined = false;
2094 fontDescriptionRun06.slantDefined = false;
2095 fontDescriptionRun06.sizeDefined = false;
2097 // Set a known font description
2098 FontDescriptionRun fontDescriptionRun07;
2099 fontDescriptionRun07.characterRun.characterIndex = 64u;
2100 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2101 fontDescriptionRun07.familyLength = fontHebrew.size();
2102 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2103 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2104 fontDescriptionRun07.familyDefined = true;
2105 fontDescriptionRun07.weightDefined = false;
2106 fontDescriptionRun07.widthDefined = false;
2107 fontDescriptionRun07.slantDefined = false;
2108 fontDescriptionRun07.sizeDefined = false;
2110 // Set a known font description
2111 FontDescriptionRun fontDescriptionRun08;
2112 fontDescriptionRun08.characterRun.characterIndex = 74u;
2113 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2114 fontDescriptionRun08.familyLength = fontLatin.size();
2115 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2116 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2117 fontDescriptionRun08.familyDefined = true;
2118 fontDescriptionRun08.weightDefined = false;
2119 fontDescriptionRun08.widthDefined = false;
2120 fontDescriptionRun08.slantDefined = false;
2121 fontDescriptionRun08.sizeDefined = false;
2123 // Set a known font description
2124 FontDescriptionRun fontDescriptionRun09;
2125 fontDescriptionRun09.characterRun.characterIndex = 92u;
2126 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2127 fontDescriptionRun09.familyLength = fontLatin.size();
2128 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2129 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2130 fontDescriptionRun09.familyDefined = true;
2131 fontDescriptionRun09.weightDefined = false;
2132 fontDescriptionRun09.widthDefined = false;
2133 fontDescriptionRun09.slantDefined = false;
2134 fontDescriptionRun09.sizeDefined = false;
2136 // Set a known font description
2137 FontDescriptionRun fontDescriptionRun10;
2138 fontDescriptionRun10.characterRun.characterIndex = 104u;
2139 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2140 fontDescriptionRun10.familyLength = fontArabic.size();
2141 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2142 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2143 fontDescriptionRun10.familyDefined = true;
2144 fontDescriptionRun10.weightDefined = false;
2145 fontDescriptionRun10.widthDefined = false;
2146 fontDescriptionRun10.slantDefined = false;
2147 fontDescriptionRun10.sizeDefined = false;
2149 // Set a known font description
2150 FontDescriptionRun fontDescriptionRun11;
2151 fontDescriptionRun11.characterRun.characterIndex = 118u;
2152 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2153 fontDescriptionRun11.familyLength = fontHebrew.size();
2154 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2155 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2156 fontDescriptionRun11.familyDefined = true;
2157 fontDescriptionRun11.weightDefined = false;
2158 fontDescriptionRun11.widthDefined = false;
2159 fontDescriptionRun11.slantDefined = false;
2160 fontDescriptionRun11.sizeDefined = false;
2162 // Set a known font description
2163 FontDescriptionRun fontDescriptionRun12;
2164 fontDescriptionRun12.characterRun.characterIndex = 128u;
2165 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2166 fontDescriptionRun12.familyLength = fontLatin.size();
2167 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2168 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2169 fontDescriptionRun12.familyDefined = true;
2170 fontDescriptionRun12.weightDefined = false;
2171 fontDescriptionRun12.widthDefined = false;
2172 fontDescriptionRun12.slantDefined = false;
2173 fontDescriptionRun12.sizeDefined = false;
2175 // Set a known font description
2176 FontDescriptionRun fontDescriptionRun13;
2177 fontDescriptionRun13.characterRun.characterIndex = 145u;
2178 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2179 fontDescriptionRun13.familyLength = fontHebrew.size();
2180 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2181 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2182 fontDescriptionRun13.familyDefined = true;
2183 fontDescriptionRun13.weightDefined = false;
2184 fontDescriptionRun13.widthDefined = false;
2185 fontDescriptionRun13.slantDefined = false;
2186 fontDescriptionRun13.sizeDefined = false;
2188 // Set a known font description
2189 FontDescriptionRun fontDescriptionRun14;
2190 fontDescriptionRun14.characterRun.characterIndex = 154u;
2191 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2192 fontDescriptionRun14.familyLength = fontLatin.size();
2193 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2194 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2195 fontDescriptionRun14.familyDefined = true;
2196 fontDescriptionRun14.weightDefined = false;
2197 fontDescriptionRun14.widthDefined = false;
2198 fontDescriptionRun14.slantDefined = false;
2199 fontDescriptionRun14.sizeDefined = false;
2201 // Set a known font description
2202 FontDescriptionRun fontDescriptionRun15;
2203 fontDescriptionRun15.characterRun.characterIndex = 156u;
2204 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2205 fontDescriptionRun15.familyLength = fontHebrew.size();
2206 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2207 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2208 fontDescriptionRun15.familyDefined = true;
2209 fontDescriptionRun15.weightDefined = false;
2210 fontDescriptionRun15.widthDefined = false;
2211 fontDescriptionRun15.slantDefined = false;
2212 fontDescriptionRun15.sizeDefined = false;
2214 // Set a known font description
2215 FontDescriptionRun fontDescriptionRun16;
2216 fontDescriptionRun16.characterRun.characterIndex = 166u;
2217 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2218 fontDescriptionRun16.familyLength = fontLatin.size();
2219 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2220 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2221 fontDescriptionRun16.familyDefined = true;
2222 fontDescriptionRun16.weightDefined = false;
2223 fontDescriptionRun16.widthDefined = false;
2224 fontDescriptionRun16.slantDefined = false;
2225 fontDescriptionRun16.sizeDefined = false;
2227 // Set a known font description
2228 FontDescriptionRun fontDescriptionRun17;
2229 fontDescriptionRun17.characterRun.characterIndex = 178u;
2230 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2231 fontDescriptionRun17.familyLength = fontArabic.size();
2232 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2233 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2234 fontDescriptionRun17.familyDefined = true;
2235 fontDescriptionRun17.weightDefined = false;
2236 fontDescriptionRun17.widthDefined = false;
2237 fontDescriptionRun17.slantDefined = false;
2238 fontDescriptionRun17.sizeDefined = false;
2240 Vector<FontDescriptionRun> fontDescriptionRuns;
2241 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2251 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2252 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2253 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2254 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2255 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2256 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2257 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2258 Size textArea(100.f, 300.f);
2259 Size layoutSize(92.f, 380.f);
2262 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2263 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2264 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2265 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2266 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,
2267 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2268 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,
2269 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2270 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2271 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2272 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2273 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2274 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2275 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2276 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2277 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,
2278 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2279 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2282 struct LineRun line01 =
2295 struct LineRun line02 =
2308 struct LineRun line03 =
2321 struct LineRun line04 =
2334 struct LineRun line05 =
2347 struct LineRun line06 =
2360 struct LineRun line07 =
2373 struct LineRun line08 =
2386 struct LineRun line09 =
2399 struct LineRun line10 =
2412 struct LineRun line11 =
2425 struct LineRun line12 =
2438 struct LineRun line13 =
2451 struct LineRun line14 =
2464 struct LineRun line15 =
2477 struct LineRun line16 =
2490 struct LineRun line17 =
2503 struct LineRun line18 =
2516 struct LineRun line19 =
2529 Vector<LineRun> lines;
2530 lines.PushBack( line01 );
2531 lines.PushBack( line02 );
2532 lines.PushBack( line03 );
2533 lines.PushBack( line04 );
2534 lines.PushBack( line05 );
2535 lines.PushBack( line06 );
2536 lines.PushBack( line07 );
2537 lines.PushBack( line08 );
2538 lines.PushBack( line09 );
2539 lines.PushBack( line10 );
2540 lines.PushBack( line11 );
2541 lines.PushBack( line12 );
2542 lines.PushBack( line13 );
2543 lines.PushBack( line14 );
2544 lines.PushBack( line15 );
2545 lines.PushBack( line16 );
2546 lines.PushBack( line17 );
2547 lines.PushBack( line18 );
2548 lines.PushBack( line19 );
2550 LayoutTextData data =
2552 "Layout bidirectional text.",
2553 "Hello world demo שלום עולם.\n"
2554 "مرحبا بالعالم hello world שלום עולם\n"
2555 "שלום עולם hello world demo.\n"
2556 "hello world مرحبا بالعالم שלום עולם\n"
2557 "Hello world demo שלום עולם.\n"
2558 "שלום עולם hello world مرحبا بالعالم\n",
2561 fontDescriptionRuns.Begin(),
2567 Layout::Engine::MULTI_LINE_BOX,
2574 if( !LayoutTextTest( data ) )
2576 tet_result(TET_FAIL);
2579 tet_result(TET_PASS);
2583 int UtcDaliTextUpdateLayout03(void)
2585 ToolkitTestApplication application;
2586 tet_infoline(" UtcDaliTextUpdateLayout03");
2588 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2590 const std::string fontLatin( "TizenSans" );
2591 const std::string fontHebrew( "TizenSansHebrew" );
2592 const std::string fontArabic( "TizenSansArabic" );
2594 // Set a known font description
2595 FontDescriptionRun fontDescriptionRun01;
2596 fontDescriptionRun01.characterRun.characterIndex = 0u;
2597 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2598 fontDescriptionRun01.familyLength = fontLatin.size();
2599 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2600 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2601 fontDescriptionRun01.familyDefined = true;
2602 fontDescriptionRun01.weightDefined = false;
2603 fontDescriptionRun01.widthDefined = false;
2604 fontDescriptionRun01.slantDefined = false;
2605 fontDescriptionRun01.sizeDefined = false;
2607 // Set a known font description
2608 FontDescriptionRun fontDescriptionRun02;
2609 fontDescriptionRun02.characterRun.characterIndex = 17u;
2610 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2611 fontDescriptionRun02.familyLength = fontHebrew.size();
2612 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2613 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2614 fontDescriptionRun02.familyDefined = true;
2615 fontDescriptionRun02.weightDefined = false;
2616 fontDescriptionRun02.widthDefined = false;
2617 fontDescriptionRun02.slantDefined = false;
2618 fontDescriptionRun02.sizeDefined = false;
2620 // Set a known font description
2621 FontDescriptionRun fontDescriptionRun03;
2622 fontDescriptionRun03.characterRun.characterIndex = 26u;
2623 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2624 fontDescriptionRun03.familyLength = fontLatin.size();
2625 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2626 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2627 fontDescriptionRun03.familyDefined = true;
2628 fontDescriptionRun03.weightDefined = false;
2629 fontDescriptionRun03.widthDefined = false;
2630 fontDescriptionRun03.slantDefined = false;
2631 fontDescriptionRun03.sizeDefined = false;
2633 // Set a known font description
2634 FontDescriptionRun fontDescriptionRun04;
2635 fontDescriptionRun04.characterRun.characterIndex = 28u;
2636 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2637 fontDescriptionRun04.familyLength = fontArabic.size();
2638 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2639 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2640 fontDescriptionRun04.familyDefined = true;
2641 fontDescriptionRun04.weightDefined = false;
2642 fontDescriptionRun04.widthDefined = false;
2643 fontDescriptionRun04.slantDefined = false;
2644 fontDescriptionRun04.sizeDefined = false;
2646 // Set a known font description
2647 FontDescriptionRun fontDescriptionRun05;
2648 fontDescriptionRun05.characterRun.characterIndex = 42u;
2649 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2650 fontDescriptionRun05.familyLength = fontLatin.size();
2651 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2652 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2653 fontDescriptionRun05.familyDefined = true;
2654 fontDescriptionRun05.weightDefined = false;
2655 fontDescriptionRun05.widthDefined = false;
2656 fontDescriptionRun05.slantDefined = false;
2657 fontDescriptionRun05.sizeDefined = false;
2659 // Set a known font description
2660 FontDescriptionRun fontDescriptionRun06;
2661 fontDescriptionRun06.characterRun.characterIndex = 54u;
2662 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2663 fontDescriptionRun06.familyLength = fontHebrew.size();
2664 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2665 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2666 fontDescriptionRun06.familyDefined = true;
2667 fontDescriptionRun06.weightDefined = false;
2668 fontDescriptionRun06.widthDefined = false;
2669 fontDescriptionRun06.slantDefined = false;
2670 fontDescriptionRun06.sizeDefined = false;
2672 // Set a known font description
2673 FontDescriptionRun fontDescriptionRun07;
2674 fontDescriptionRun07.characterRun.characterIndex = 64u;
2675 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2676 fontDescriptionRun07.familyLength = fontHebrew.size();
2677 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2678 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2679 fontDescriptionRun07.familyDefined = true;
2680 fontDescriptionRun07.weightDefined = false;
2681 fontDescriptionRun07.widthDefined = false;
2682 fontDescriptionRun07.slantDefined = false;
2683 fontDescriptionRun07.sizeDefined = false;
2685 // Set a known font description
2686 FontDescriptionRun fontDescriptionRun08;
2687 fontDescriptionRun08.characterRun.characterIndex = 74u;
2688 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2689 fontDescriptionRun08.familyLength = fontLatin.size();
2690 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2691 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2692 fontDescriptionRun08.familyDefined = true;
2693 fontDescriptionRun08.weightDefined = false;
2694 fontDescriptionRun08.widthDefined = false;
2695 fontDescriptionRun08.slantDefined = false;
2696 fontDescriptionRun08.sizeDefined = false;
2698 // Set a known font description
2699 FontDescriptionRun fontDescriptionRun09;
2700 fontDescriptionRun09.characterRun.characterIndex = 92u;
2701 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2702 fontDescriptionRun09.familyLength = fontLatin.size();
2703 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2704 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2705 fontDescriptionRun09.familyDefined = true;
2706 fontDescriptionRun09.weightDefined = false;
2707 fontDescriptionRun09.widthDefined = false;
2708 fontDescriptionRun09.slantDefined = false;
2709 fontDescriptionRun09.sizeDefined = false;
2711 // Set a known font description
2712 FontDescriptionRun fontDescriptionRun10;
2713 fontDescriptionRun10.characterRun.characterIndex = 104u;
2714 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2715 fontDescriptionRun10.familyLength = fontArabic.size();
2716 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2717 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2718 fontDescriptionRun10.familyDefined = true;
2719 fontDescriptionRun10.weightDefined = false;
2720 fontDescriptionRun10.widthDefined = false;
2721 fontDescriptionRun10.slantDefined = false;
2722 fontDescriptionRun10.sizeDefined = false;
2724 // Set a known font description
2725 FontDescriptionRun fontDescriptionRun11;
2726 fontDescriptionRun11.characterRun.characterIndex = 118u;
2727 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2728 fontDescriptionRun11.familyLength = fontHebrew.size();
2729 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2730 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2731 fontDescriptionRun11.familyDefined = true;
2732 fontDescriptionRun11.weightDefined = false;
2733 fontDescriptionRun11.widthDefined = false;
2734 fontDescriptionRun11.slantDefined = false;
2735 fontDescriptionRun11.sizeDefined = false;
2737 // Set a known font description
2738 FontDescriptionRun fontDescriptionRun12;
2739 fontDescriptionRun12.characterRun.characterIndex = 128u;
2740 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2741 fontDescriptionRun12.familyLength = fontLatin.size();
2742 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2743 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2744 fontDescriptionRun12.familyDefined = true;
2745 fontDescriptionRun12.weightDefined = false;
2746 fontDescriptionRun12.widthDefined = false;
2747 fontDescriptionRun12.slantDefined = false;
2748 fontDescriptionRun12.sizeDefined = false;
2750 // Set a known font description
2751 FontDescriptionRun fontDescriptionRun13;
2752 fontDescriptionRun13.characterRun.characterIndex = 145u;
2753 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2754 fontDescriptionRun13.familyLength = fontHebrew.size();
2755 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2756 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2757 fontDescriptionRun13.familyDefined = true;
2758 fontDescriptionRun13.weightDefined = false;
2759 fontDescriptionRun13.widthDefined = false;
2760 fontDescriptionRun13.slantDefined = false;
2761 fontDescriptionRun13.sizeDefined = false;
2763 // Set a known font description
2764 FontDescriptionRun fontDescriptionRun14;
2765 fontDescriptionRun14.characterRun.characterIndex = 154u;
2766 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2767 fontDescriptionRun14.familyLength = fontLatin.size();
2768 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2769 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2770 fontDescriptionRun14.familyDefined = true;
2771 fontDescriptionRun14.weightDefined = false;
2772 fontDescriptionRun14.widthDefined = false;
2773 fontDescriptionRun14.slantDefined = false;
2774 fontDescriptionRun14.sizeDefined = false;
2776 // Set a known font description
2777 FontDescriptionRun fontDescriptionRun15;
2778 fontDescriptionRun15.characterRun.characterIndex = 156u;
2779 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2780 fontDescriptionRun15.familyLength = fontHebrew.size();
2781 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2782 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2783 fontDescriptionRun15.familyDefined = true;
2784 fontDescriptionRun15.weightDefined = false;
2785 fontDescriptionRun15.widthDefined = false;
2786 fontDescriptionRun15.slantDefined = false;
2787 fontDescriptionRun15.sizeDefined = false;
2789 // Set a known font description
2790 FontDescriptionRun fontDescriptionRun16;
2791 fontDescriptionRun16.characterRun.characterIndex = 166u;
2792 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2793 fontDescriptionRun16.familyLength = fontLatin.size();
2794 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2795 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2796 fontDescriptionRun16.familyDefined = true;
2797 fontDescriptionRun16.weightDefined = false;
2798 fontDescriptionRun16.widthDefined = false;
2799 fontDescriptionRun16.slantDefined = false;
2800 fontDescriptionRun16.sizeDefined = false;
2802 // Set a known font description
2803 FontDescriptionRun fontDescriptionRun17;
2804 fontDescriptionRun17.characterRun.characterIndex = 178u;
2805 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2806 fontDescriptionRun17.familyLength = fontArabic.size();
2807 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2808 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2809 fontDescriptionRun17.familyDefined = true;
2810 fontDescriptionRun17.weightDefined = false;
2811 fontDescriptionRun17.widthDefined = false;
2812 fontDescriptionRun17.slantDefined = false;
2813 fontDescriptionRun17.sizeDefined = false;
2815 Vector<FontDescriptionRun> fontDescriptionRuns;
2816 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2817 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2818 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2825 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2826 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2827 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2828 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2829 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2830 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2831 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2832 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2833 Size textArea(100.f, 300.f);
2834 Size layoutSize(92.f, 380.f);
2837 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2838 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2839 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2840 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2841 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,
2842 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2843 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,
2844 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2845 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2846 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2847 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2848 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2849 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2850 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2851 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2852 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,
2853 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2854 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2857 struct LineRun line01 =
2870 struct LineRun line02 =
2883 struct LineRun line03 =
2896 struct LineRun line04 =
2909 struct LineRun line05 =
2922 struct LineRun line06 =
2935 struct LineRun line07 =
2948 struct LineRun line08 =
2961 struct LineRun line09 =
2974 struct LineRun line10 =
2987 struct LineRun line11 =
3000 struct LineRun line12 =
3013 struct LineRun line13 =
3026 struct LineRun line14 =
3039 struct LineRun line15 =
3052 struct LineRun line16 =
3065 struct LineRun line17 =
3078 struct LineRun line18 =
3091 struct LineRun line19 =
3104 Vector<LineRun> lines;
3105 lines.PushBack( line01 );
3106 lines.PushBack( line02 );
3107 lines.PushBack( line03 );
3108 lines.PushBack( line04 );
3109 lines.PushBack( line05 );
3110 lines.PushBack( line06 );
3111 lines.PushBack( line07 );
3112 lines.PushBack( line08 );
3113 lines.PushBack( line09 );
3114 lines.PushBack( line10 );
3115 lines.PushBack( line11 );
3116 lines.PushBack( line12 );
3117 lines.PushBack( line13 );
3118 lines.PushBack( line14 );
3119 lines.PushBack( line15 );
3120 lines.PushBack( line16 );
3121 lines.PushBack( line17 );
3122 lines.PushBack( line18 );
3123 lines.PushBack( line19 );
3125 LayoutTextData data =
3127 "Layout bidirectional text.",
3128 "Hello world demo שלום עולם.\n"
3129 "مرحبا بالعالم hello world שלום עולם\n"
3130 "שלום עולם hello world demo.\n"
3131 "hello world مرحبا بالعالم שלום עולם\n"
3132 "Hello world demo שלום עולם.\n"
3133 "שלום עולם hello world مرحبا بالعالم\n",
3136 fontDescriptionRuns.Begin(),
3142 Layout::Engine::MULTI_LINE_BOX,
3149 if( !LayoutTextTest( data ) )
3151 tet_result(TET_FAIL);
3154 tet_result(TET_PASS);
3158 int UtcDaliTextLayoutEllipsis01(void)
3160 ToolkitTestApplication application;
3161 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3163 // Layout single-line LTR text with ellipsis.
3165 const std::string fontLatin( "TizenSans" );
3167 // Set a known font description
3168 FontDescriptionRun fontDescriptionRun01;
3169 fontDescriptionRun01.characterRun.characterIndex = 0u;
3170 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3171 fontDescriptionRun01.familyLength = fontLatin.size();
3172 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3173 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3174 fontDescriptionRun01.familyDefined = true;
3175 fontDescriptionRun01.weightDefined = false;
3176 fontDescriptionRun01.widthDefined = false;
3177 fontDescriptionRun01.slantDefined = false;
3178 fontDescriptionRun01.sizeDefined = false;
3180 Vector<FontDescriptionRun> fontDescriptionRuns;
3181 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3183 struct LineRun line01 =
3196 Vector<LineRun> lines;
3197 lines.PushBack( line01 );
3201 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
3204 Size textArea( 100.f, 50.f );
3205 Size layoutSize( 100.f, 20.f );
3207 LayoutTextData data =
3209 "Layout single-line LTR text with ellipsis.",
3210 "Hello world demo hello world demo hello world demo.",
3213 fontDescriptionRuns.Begin(),
3219 Layout::Engine::SINGLE_LINE_BOX,
3226 if( !LayoutTextTest( data ) )
3228 tet_result(TET_FAIL);
3231 tet_result(TET_PASS);
3235 int UtcDaliTextLayoutEllipsis02(void)
3237 ToolkitTestApplication application;
3238 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3240 // Layout multi-line LTR text with ellipsis.
3242 const std::string fontLatin( "TizenSans" );
3244 // Set a known font description
3245 FontDescriptionRun fontDescriptionRun01;
3246 fontDescriptionRun01.characterRun.characterIndex = 0u;
3247 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3248 fontDescriptionRun01.familyLength = fontLatin.size();
3249 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3250 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3251 fontDescriptionRun01.familyDefined = true;
3252 fontDescriptionRun01.weightDefined = false;
3253 fontDescriptionRun01.widthDefined = false;
3254 fontDescriptionRun01.slantDefined = false;
3255 fontDescriptionRun01.sizeDefined = false;
3257 Vector<FontDescriptionRun> fontDescriptionRuns;
3258 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3260 struct LineRun line01 =
3273 struct LineRun line02 =
3286 Vector<LineRun> lines;
3287 lines.PushBack( line01 );
3288 lines.PushBack( line02 );
3292 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
3293 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 52.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
3296 Size textArea( 100.f, 50.f );
3297 Size layoutSize( 100.f, 40.f );
3299 LayoutTextData data =
3301 "Layout multi-line LTR text with ellipsis.",
3302 "Hello world demo hello world demo hello world demo.",
3305 fontDescriptionRuns.Begin(),
3311 Layout::Engine::MULTI_LINE_BOX,
3318 if( !LayoutTextTest( data ) )
3320 tet_result(TET_FAIL);
3323 tet_result(TET_PASS);
3327 int UtcDaliTextLayoutEllipsis03(void)
3329 ToolkitTestApplication application;
3330 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3332 // Layout single-line RTL text with ellipsis.
3334 const std::string fontHebrew( "TizenSansHebrew" );
3335 const std::string fontArabic( "TizenSansArabic" );
3337 // Set a known font description
3338 FontDescriptionRun fontDescriptionRun01;
3339 fontDescriptionRun01.characterRun.characterIndex = 0u;
3340 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3341 fontDescriptionRun01.familyLength = fontHebrew.size();
3342 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3343 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3344 fontDescriptionRun01.familyDefined = true;
3345 fontDescriptionRun01.weightDefined = false;
3346 fontDescriptionRun01.widthDefined = false;
3347 fontDescriptionRun01.slantDefined = false;
3348 fontDescriptionRun01.sizeDefined = false;
3350 FontDescriptionRun fontDescriptionRun02;
3351 fontDescriptionRun02.characterRun.characterIndex = 10u;
3352 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3353 fontDescriptionRun02.familyLength = fontArabic.size();
3354 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3355 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3356 fontDescriptionRun02.familyDefined = true;
3357 fontDescriptionRun02.weightDefined = false;
3358 fontDescriptionRun02.widthDefined = false;
3359 fontDescriptionRun02.slantDefined = false;
3360 fontDescriptionRun02.sizeDefined = false;
3362 FontDescriptionRun fontDescriptionRun03;
3363 fontDescriptionRun03.characterRun.characterIndex = 24u;
3364 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3365 fontDescriptionRun03.familyLength = fontHebrew.size();
3366 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3367 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3368 fontDescriptionRun03.familyDefined = true;
3369 fontDescriptionRun03.weightDefined = false;
3370 fontDescriptionRun03.widthDefined = false;
3371 fontDescriptionRun03.slantDefined = false;
3372 fontDescriptionRun03.sizeDefined = false;
3374 FontDescriptionRun fontDescriptionRun04;
3375 fontDescriptionRun04.characterRun.characterIndex = 34u;
3376 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3377 fontDescriptionRun04.familyLength = fontArabic.size();
3378 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3379 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3380 fontDescriptionRun04.familyDefined = true;
3381 fontDescriptionRun04.weightDefined = false;
3382 fontDescriptionRun04.widthDefined = false;
3383 fontDescriptionRun04.slantDefined = false;
3384 fontDescriptionRun04.sizeDefined = false;
3386 FontDescriptionRun fontDescriptionRun05;
3387 fontDescriptionRun05.characterRun.characterIndex = 48u;
3388 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3389 fontDescriptionRun05.familyLength = fontHebrew.size();
3390 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3391 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3392 fontDescriptionRun05.familyDefined = true;
3393 fontDescriptionRun05.weightDefined = false;
3394 fontDescriptionRun05.widthDefined = false;
3395 fontDescriptionRun05.slantDefined = false;
3396 fontDescriptionRun05.sizeDefined = false;
3398 FontDescriptionRun fontDescriptionRun06;
3399 fontDescriptionRun06.characterRun.characterIndex = 58u;
3400 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3401 fontDescriptionRun06.familyLength = fontArabic.size();
3402 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3403 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3404 fontDescriptionRun06.familyDefined = true;
3405 fontDescriptionRun06.weightDefined = false;
3406 fontDescriptionRun06.widthDefined = false;
3407 fontDescriptionRun06.slantDefined = false;
3408 fontDescriptionRun06.sizeDefined = false;
3410 Vector<FontDescriptionRun> fontDescriptionRuns;
3411 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3412 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3413 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3414 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3415 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3416 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3418 struct LineRun line01 =
3431 Vector<LineRun> lines;
3432 lines.PushBack( line01 );
3436 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3439 Size textArea( 100.f, 50.f );
3440 Size layoutSize( 100.f, 20.f );
3442 LayoutTextData data =
3444 "Layout single-line RTL text with ellipsis.",
3445 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3448 fontDescriptionRuns.Begin(),
3454 Layout::Engine::SINGLE_LINE_BOX,
3461 if( !LayoutTextTest( data ) )
3463 tet_result(TET_FAIL);
3466 tet_result(TET_PASS);
3470 int UtcDaliTextLayoutEllipsis04(void)
3472 ToolkitTestApplication application;
3473 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3475 // Layout multi-line RTL text with ellipsis.
3477 const std::string fontHebrew( "TizenSansHebrew" );
3478 const std::string fontArabic( "TizenSansArabic" );
3480 // Set a known font description
3481 FontDescriptionRun fontDescriptionRun01;
3482 fontDescriptionRun01.characterRun.characterIndex = 0u;
3483 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3484 fontDescriptionRun01.familyLength = fontHebrew.size();
3485 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3486 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3487 fontDescriptionRun01.familyDefined = true;
3488 fontDescriptionRun01.weightDefined = false;
3489 fontDescriptionRun01.widthDefined = false;
3490 fontDescriptionRun01.slantDefined = false;
3491 fontDescriptionRun01.sizeDefined = false;
3493 FontDescriptionRun fontDescriptionRun02;
3494 fontDescriptionRun02.characterRun.characterIndex = 10u;
3495 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3496 fontDescriptionRun02.familyLength = fontArabic.size();
3497 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3498 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3499 fontDescriptionRun02.familyDefined = true;
3500 fontDescriptionRun02.weightDefined = false;
3501 fontDescriptionRun02.widthDefined = false;
3502 fontDescriptionRun02.slantDefined = false;
3503 fontDescriptionRun02.sizeDefined = false;
3505 FontDescriptionRun fontDescriptionRun03;
3506 fontDescriptionRun03.characterRun.characterIndex = 24u;
3507 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3508 fontDescriptionRun03.familyLength = fontHebrew.size();
3509 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3510 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3511 fontDescriptionRun03.familyDefined = true;
3512 fontDescriptionRun03.weightDefined = false;
3513 fontDescriptionRun03.widthDefined = false;
3514 fontDescriptionRun03.slantDefined = false;
3515 fontDescriptionRun03.sizeDefined = false;
3517 FontDescriptionRun fontDescriptionRun04;
3518 fontDescriptionRun04.characterRun.characterIndex = 34u;
3519 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3520 fontDescriptionRun04.familyLength = fontArabic.size();
3521 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3522 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3523 fontDescriptionRun04.familyDefined = true;
3524 fontDescriptionRun04.weightDefined = false;
3525 fontDescriptionRun04.widthDefined = false;
3526 fontDescriptionRun04.slantDefined = false;
3527 fontDescriptionRun04.sizeDefined = false;
3529 FontDescriptionRun fontDescriptionRun05;
3530 fontDescriptionRun05.characterRun.characterIndex = 48u;
3531 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3532 fontDescriptionRun05.familyLength = fontHebrew.size();
3533 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3534 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3535 fontDescriptionRun05.familyDefined = true;
3536 fontDescriptionRun05.weightDefined = false;
3537 fontDescriptionRun05.widthDefined = false;
3538 fontDescriptionRun05.slantDefined = false;
3539 fontDescriptionRun05.sizeDefined = false;
3541 FontDescriptionRun fontDescriptionRun06;
3542 fontDescriptionRun06.characterRun.characterIndex = 58u;
3543 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3544 fontDescriptionRun06.familyLength = fontArabic.size();
3545 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3546 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3547 fontDescriptionRun06.familyDefined = true;
3548 fontDescriptionRun06.weightDefined = false;
3549 fontDescriptionRun06.widthDefined = false;
3550 fontDescriptionRun06.slantDefined = false;
3551 fontDescriptionRun06.sizeDefined = false;
3553 Vector<FontDescriptionRun> fontDescriptionRuns;
3554 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3555 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3556 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3557 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3558 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3559 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3561 struct LineRun line01 =
3574 struct LineRun line02 =
3587 Vector<LineRun> lines;
3588 lines.PushBack( line01 );
3589 lines.PushBack( line02 );
3593 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3594 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f,
3597 Size textArea( 100.f, 50.f );
3598 Size layoutSize( 100.f, 40.f );
3600 LayoutTextData data =
3602 "Layout single-line RTL text with ellipsis.",
3603 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3606 fontDescriptionRuns.Begin(),
3612 Layout::Engine::MULTI_LINE_BOX,
3619 if( !LayoutTextTest( data ) )
3621 tet_result(TET_FAIL);
3624 tet_result(TET_PASS);
3628 int UtcDaliTextLayoutEllipsis05(void)
3630 ToolkitTestApplication application;
3631 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3633 const std::string fontLatin( "TizenSans" );
3635 // Set a known font description
3636 FontDescriptionRun fontDescriptionRun01;
3637 fontDescriptionRun01.characterRun.characterIndex = 0u;
3638 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3639 fontDescriptionRun01.familyLength = fontLatin.size();
3640 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3641 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3642 fontDescriptionRun01.familyDefined = true;
3643 fontDescriptionRun01.weightDefined = false;
3644 fontDescriptionRun01.widthDefined = false;
3645 fontDescriptionRun01.slantDefined = false;
3646 fontDescriptionRun01.sizeDefined = false;
3648 Vector<FontDescriptionRun> fontDescriptionRuns;
3649 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3651 struct LineRun line01 =
3664 Vector<LineRun> lines;
3665 lines.PushBack( line01 );
3672 Size textArea( 100.f, 19.f );
3673 Size layoutSize( 100.f, 20.f );
3675 LayoutTextData data =
3677 "Not enough height.",
3681 fontDescriptionRuns.Begin(),
3687 Layout::Engine::MULTI_LINE_BOX,
3694 if( !LayoutTextTest( data ) )
3696 tet_result(TET_FAIL);
3699 tet_result(TET_PASS);
3703 int UtcDaliTextReorderLayout01(void)
3705 ToolkitTestApplication application;
3706 tet_infoline(" UtcDaliTextReorderLayout01");
3708 // Reorder lines. No right to left characters.
3710 const std::string fontLatin( "TizenSans" );
3712 // Set a known font description
3713 FontDescriptionRun fontDescriptionRun01;
3714 fontDescriptionRun01.characterRun.characterIndex = 0u;
3715 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3716 fontDescriptionRun01.familyLength = fontLatin.size();
3717 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3718 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3719 fontDescriptionRun01.familyDefined = true;
3720 fontDescriptionRun01.weightDefined = false;
3721 fontDescriptionRun01.widthDefined = false;
3722 fontDescriptionRun01.slantDefined = false;
3723 fontDescriptionRun01.sizeDefined = false;
3725 Vector<FontDescriptionRun> fontDescriptionRuns;
3726 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3730 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
3733 Size textArea( 100.f, 300.f );
3735 ReLayoutRightToLeftLinesData data =
3737 "Text with no right to left text.",
3741 fontDescriptionRuns.Begin(),
3748 if( !ReLayoutRightToLeftLinesTest( data ) )
3750 tet_result(TET_FAIL);
3753 tet_result(TET_PASS);
3757 int UtcDaliTextReorderLayout02(void)
3759 ToolkitTestApplication application;
3760 tet_infoline(" UtcDaliTextReorderLayout02");
3762 // Reorder lines of the first paragraph.
3764 const std::string fontHebrew( "TizenSansHebrew" );
3765 const std::string fontArabic( "TizenSansArabic" );
3767 // Set a known font description
3768 FontDescriptionRun fontDescriptionRun01;
3769 fontDescriptionRun01.characterRun.characterIndex = 0u;
3770 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3771 fontDescriptionRun01.familyLength = fontHebrew.size();
3772 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3773 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3774 fontDescriptionRun01.familyDefined = true;
3775 fontDescriptionRun01.weightDefined = false;
3776 fontDescriptionRun01.widthDefined = false;
3777 fontDescriptionRun01.slantDefined = false;
3778 fontDescriptionRun01.sizeDefined = false;
3780 FontDescriptionRun fontDescriptionRun02;
3781 fontDescriptionRun02.characterRun.characterIndex = 10u;
3782 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3783 fontDescriptionRun02.familyLength = fontArabic.size();
3784 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3785 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3786 fontDescriptionRun02.familyDefined = true;
3787 fontDescriptionRun02.weightDefined = false;
3788 fontDescriptionRun02.widthDefined = false;
3789 fontDescriptionRun02.slantDefined = false;
3790 fontDescriptionRun02.sizeDefined = false;
3792 FontDescriptionRun fontDescriptionRun03;
3793 fontDescriptionRun03.characterRun.characterIndex = 24u;
3794 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3795 fontDescriptionRun03.familyLength = fontArabic.size();
3796 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3797 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3798 fontDescriptionRun03.familyDefined = true;
3799 fontDescriptionRun03.weightDefined = false;
3800 fontDescriptionRun03.widthDefined = false;
3801 fontDescriptionRun03.slantDefined = false;
3802 fontDescriptionRun03.sizeDefined = false;
3804 FontDescriptionRun fontDescriptionRun04;
3805 fontDescriptionRun04.characterRun.characterIndex = 38u;
3806 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3807 fontDescriptionRun04.familyLength = fontHebrew.size();
3808 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3809 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3810 fontDescriptionRun04.familyDefined = true;
3811 fontDescriptionRun04.weightDefined = false;
3812 fontDescriptionRun04.widthDefined = false;
3813 fontDescriptionRun04.slantDefined = false;
3814 fontDescriptionRun04.sizeDefined = false;
3816 FontDescriptionRun fontDescriptionRun05;
3817 fontDescriptionRun05.characterRun.characterIndex = 48u;
3818 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3819 fontDescriptionRun05.familyLength = fontHebrew.size();
3820 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3821 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3822 fontDescriptionRun05.familyDefined = true;
3823 fontDescriptionRun05.weightDefined = false;
3824 fontDescriptionRun05.widthDefined = false;
3825 fontDescriptionRun05.slantDefined = false;
3826 fontDescriptionRun05.sizeDefined = false;
3828 FontDescriptionRun fontDescriptionRun06;
3829 fontDescriptionRun06.characterRun.characterIndex = 58u;
3830 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3831 fontDescriptionRun06.familyLength = fontArabic.size();
3832 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3833 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3834 fontDescriptionRun06.familyDefined = true;
3835 fontDescriptionRun06.weightDefined = false;
3836 fontDescriptionRun06.widthDefined = false;
3837 fontDescriptionRun06.slantDefined = false;
3838 fontDescriptionRun06.sizeDefined = false;
3840 Vector<FontDescriptionRun> fontDescriptionRuns;
3841 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3842 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3843 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3844 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3845 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3846 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3850 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
3851 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,
3852 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
3853 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3854 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3855 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3858 Size textArea( 100.f, 300.f );
3860 ReLayoutRightToLeftLinesData data =
3862 "Paragraphs with right to left text.",
3863 "שלום עולם مرحبا بالعالم\n"
3864 "مرحبا بالعالم שלום עולם\n"
3865 "שלום עולם مرحبا بالعالم.",
3868 fontDescriptionRuns.Begin(),
3875 if( !ReLayoutRightToLeftLinesTest( data ) )
3877 tet_result(TET_FAIL);
3880 tet_result(TET_PASS);
3884 int UtcDaliTextReorderLayout03(void)
3886 ToolkitTestApplication application;
3887 tet_infoline(" UtcDaliTextReorderLayout03");
3889 // Reorder lines of the mid paragraph.
3891 const std::string fontHebrew( "TizenSansHebrew" );
3892 const std::string fontArabic( "TizenSansArabic" );
3894 // Set a known font description
3895 FontDescriptionRun fontDescriptionRun01;
3896 fontDescriptionRun01.characterRun.characterIndex = 0u;
3897 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3898 fontDescriptionRun01.familyLength = fontHebrew.size();
3899 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3900 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3901 fontDescriptionRun01.familyDefined = true;
3902 fontDescriptionRun01.weightDefined = false;
3903 fontDescriptionRun01.widthDefined = false;
3904 fontDescriptionRun01.slantDefined = false;
3905 fontDescriptionRun01.sizeDefined = false;
3907 FontDescriptionRun fontDescriptionRun02;
3908 fontDescriptionRun02.characterRun.characterIndex = 10u;
3909 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3910 fontDescriptionRun02.familyLength = fontArabic.size();
3911 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3912 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3913 fontDescriptionRun02.familyDefined = true;
3914 fontDescriptionRun02.weightDefined = false;
3915 fontDescriptionRun02.widthDefined = false;
3916 fontDescriptionRun02.slantDefined = false;
3917 fontDescriptionRun02.sizeDefined = false;
3919 FontDescriptionRun fontDescriptionRun03;
3920 fontDescriptionRun03.characterRun.characterIndex = 24u;
3921 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3922 fontDescriptionRun03.familyLength = fontArabic.size();
3923 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3924 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3925 fontDescriptionRun03.familyDefined = true;
3926 fontDescriptionRun03.weightDefined = false;
3927 fontDescriptionRun03.widthDefined = false;
3928 fontDescriptionRun03.slantDefined = false;
3929 fontDescriptionRun03.sizeDefined = false;
3931 FontDescriptionRun fontDescriptionRun04;
3932 fontDescriptionRun04.characterRun.characterIndex = 38u;
3933 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3934 fontDescriptionRun04.familyLength = fontHebrew.size();
3935 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3936 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3937 fontDescriptionRun04.familyDefined = true;
3938 fontDescriptionRun04.weightDefined = false;
3939 fontDescriptionRun04.widthDefined = false;
3940 fontDescriptionRun04.slantDefined = false;
3941 fontDescriptionRun04.sizeDefined = false;
3943 FontDescriptionRun fontDescriptionRun05;
3944 fontDescriptionRun05.characterRun.characterIndex = 48u;
3945 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3946 fontDescriptionRun05.familyLength = fontHebrew.size();
3947 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3948 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3949 fontDescriptionRun05.familyDefined = true;
3950 fontDescriptionRun05.weightDefined = false;
3951 fontDescriptionRun05.widthDefined = false;
3952 fontDescriptionRun05.slantDefined = false;
3953 fontDescriptionRun05.sizeDefined = false;
3955 FontDescriptionRun fontDescriptionRun06;
3956 fontDescriptionRun06.characterRun.characterIndex = 58u;
3957 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3958 fontDescriptionRun06.familyLength = fontArabic.size();
3959 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3960 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3961 fontDescriptionRun06.familyDefined = true;
3962 fontDescriptionRun06.weightDefined = false;
3963 fontDescriptionRun06.widthDefined = false;
3964 fontDescriptionRun06.slantDefined = false;
3965 fontDescriptionRun06.sizeDefined = false;
3967 Vector<FontDescriptionRun> fontDescriptionRuns;
3968 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3969 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3970 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3971 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3972 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3973 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3977 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3978 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3979 86.f, -8.f, 81.f, -6.f, 74.f, -8.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f,
3980 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3981 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3982 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3985 Size textArea( 100.f, 300.f );
3987 ReLayoutRightToLeftLinesData data =
3989 "Paragraphs with right to left text.",
3990 "שלום עולם مرحبا بالعالم\n"
3991 "مرحبا بالعالم שלום עולם\n"
3992 "שלום עולם مرحبا بالعالم.",
3995 fontDescriptionRuns.Begin(),
4002 if( !ReLayoutRightToLeftLinesTest( data ) )
4004 tet_result(TET_FAIL);
4007 tet_result(TET_PASS);
4011 int UtcDaliTextReorderLayout04(void)
4013 ToolkitTestApplication application;
4014 tet_infoline(" UtcDaliTextReorderLayout04");
4016 // Reorder lines of the last paragraph.
4018 const std::string fontHebrew( "TizenSansHebrew" );
4019 const std::string fontArabic( "TizenSansArabic" );
4021 // Set a known font description
4022 FontDescriptionRun fontDescriptionRun01;
4023 fontDescriptionRun01.characterRun.characterIndex = 0u;
4024 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4025 fontDescriptionRun01.familyLength = fontHebrew.size();
4026 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4027 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4028 fontDescriptionRun01.familyDefined = true;
4029 fontDescriptionRun01.weightDefined = false;
4030 fontDescriptionRun01.widthDefined = false;
4031 fontDescriptionRun01.slantDefined = false;
4032 fontDescriptionRun01.sizeDefined = false;
4034 FontDescriptionRun fontDescriptionRun02;
4035 fontDescriptionRun02.characterRun.characterIndex = 10u;
4036 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4037 fontDescriptionRun02.familyLength = fontArabic.size();
4038 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4039 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4040 fontDescriptionRun02.familyDefined = true;
4041 fontDescriptionRun02.weightDefined = false;
4042 fontDescriptionRun02.widthDefined = false;
4043 fontDescriptionRun02.slantDefined = false;
4044 fontDescriptionRun02.sizeDefined = false;
4046 FontDescriptionRun fontDescriptionRun03;
4047 fontDescriptionRun03.characterRun.characterIndex = 24u;
4048 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4049 fontDescriptionRun03.familyLength = fontArabic.size();
4050 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4051 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4052 fontDescriptionRun03.familyDefined = true;
4053 fontDescriptionRun03.weightDefined = false;
4054 fontDescriptionRun03.widthDefined = false;
4055 fontDescriptionRun03.slantDefined = false;
4056 fontDescriptionRun03.sizeDefined = false;
4058 FontDescriptionRun fontDescriptionRun04;
4059 fontDescriptionRun04.characterRun.characterIndex = 38u;
4060 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4061 fontDescriptionRun04.familyLength = fontHebrew.size();
4062 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4063 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4064 fontDescriptionRun04.familyDefined = true;
4065 fontDescriptionRun04.weightDefined = false;
4066 fontDescriptionRun04.widthDefined = false;
4067 fontDescriptionRun04.slantDefined = false;
4068 fontDescriptionRun04.sizeDefined = false;
4070 FontDescriptionRun fontDescriptionRun05;
4071 fontDescriptionRun05.characterRun.characterIndex = 48u;
4072 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4073 fontDescriptionRun05.familyLength = fontHebrew.size();
4074 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4075 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4076 fontDescriptionRun05.familyDefined = true;
4077 fontDescriptionRun05.weightDefined = false;
4078 fontDescriptionRun05.widthDefined = false;
4079 fontDescriptionRun05.slantDefined = false;
4080 fontDescriptionRun05.sizeDefined = false;
4082 FontDescriptionRun fontDescriptionRun06;
4083 fontDescriptionRun06.characterRun.characterIndex = 58u;
4084 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4085 fontDescriptionRun06.familyLength = fontArabic.size();
4086 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4087 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4088 fontDescriptionRun06.familyDefined = true;
4089 fontDescriptionRun06.weightDefined = false;
4090 fontDescriptionRun06.widthDefined = false;
4091 fontDescriptionRun06.slantDefined = false;
4092 fontDescriptionRun06.sizeDefined = false;
4094 Vector<FontDescriptionRun> fontDescriptionRuns;
4095 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4096 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4097 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4098 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4099 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4100 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4104 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4105 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
4106 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
4107 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4108 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
4109 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4112 Size textArea( 100.f, 300.f );
4114 ReLayoutRightToLeftLinesData data =
4116 "Paragraphs with right to left text.",
4117 "שלום עולם مرحبا بالعالم\n"
4118 "مرحبا بالعالم שלום עולם\n"
4119 "שלום עולם مرحبا بالعالم.",
4122 fontDescriptionRuns.Begin(),
4129 if( !ReLayoutRightToLeftLinesTest( data ) )
4131 tet_result(TET_FAIL);
4134 tet_result(TET_PASS);
4138 int UtcDaliTextAlign01(void)
4140 ToolkitTestApplication application;
4141 tet_infoline(" UtcDaliTextAlign01");
4143 // Calculate text alignment.
4145 const std::string fontLatin( "TizenSans" );
4146 const std::string fontHebrew( "TizenSansHebrew" );
4147 const std::string fontArabic( "TizenSansArabic" );
4149 // Set a known font description
4150 FontDescriptionRun fontDescriptionRun01;
4151 fontDescriptionRun01.characterRun.characterIndex = 0u;
4152 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4153 fontDescriptionRun01.familyLength = fontLatin.size();
4154 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4155 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4156 fontDescriptionRun01.familyDefined = true;
4157 fontDescriptionRun01.weightDefined = false;
4158 fontDescriptionRun01.widthDefined = false;
4159 fontDescriptionRun01.slantDefined = false;
4160 fontDescriptionRun01.sizeDefined = false;
4162 FontDescriptionRun fontDescriptionRun02;
4163 fontDescriptionRun02.characterRun.characterIndex = 12u;
4164 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4165 fontDescriptionRun02.familyLength = fontHebrew.size();
4166 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4167 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4168 fontDescriptionRun02.familyDefined = true;
4169 fontDescriptionRun02.weightDefined = false;
4170 fontDescriptionRun02.widthDefined = false;
4171 fontDescriptionRun02.slantDefined = false;
4172 fontDescriptionRun02.sizeDefined = false;
4174 FontDescriptionRun fontDescriptionRun03;
4175 fontDescriptionRun03.characterRun.characterIndex = 22u;
4176 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4177 fontDescriptionRun03.familyLength = fontArabic.size();
4178 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4179 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4180 fontDescriptionRun03.familyDefined = true;
4181 fontDescriptionRun03.weightDefined = false;
4182 fontDescriptionRun03.widthDefined = false;
4183 fontDescriptionRun03.slantDefined = false;
4184 fontDescriptionRun03.sizeDefined = false;
4186 FontDescriptionRun fontDescriptionRun04;
4187 fontDescriptionRun04.characterRun.characterIndex = 36u;
4188 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4189 fontDescriptionRun04.familyLength = fontLatin.size();
4190 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4191 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4192 fontDescriptionRun04.familyDefined = true;
4193 fontDescriptionRun04.weightDefined = false;
4194 fontDescriptionRun04.widthDefined = false;
4195 fontDescriptionRun04.slantDefined = false;
4196 fontDescriptionRun04.sizeDefined = false;
4198 FontDescriptionRun fontDescriptionRun05;
4199 fontDescriptionRun05.characterRun.characterIndex = 48u;
4200 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4201 fontDescriptionRun05.familyLength = fontLatin.size();
4202 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4203 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4204 fontDescriptionRun05.familyDefined = true;
4205 fontDescriptionRun05.weightDefined = false;
4206 fontDescriptionRun05.widthDefined = false;
4207 fontDescriptionRun05.slantDefined = false;
4208 fontDescriptionRun05.sizeDefined = false;
4210 FontDescriptionRun fontDescriptionRun06;
4211 fontDescriptionRun06.characterRun.characterIndex = 60u;
4212 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4213 fontDescriptionRun06.familyLength = fontArabic.size();
4214 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4215 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4216 fontDescriptionRun06.familyDefined = true;
4217 fontDescriptionRun06.weightDefined = false;
4218 fontDescriptionRun06.widthDefined = false;
4219 fontDescriptionRun06.slantDefined = false;
4220 fontDescriptionRun06.sizeDefined = false;
4222 Vector<FontDescriptionRun> fontDescriptionRuns;
4223 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4224 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4225 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4226 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4227 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4228 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4230 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4232 Size textArea( 100.f, 300.f );
4235 "Begin alignment for the first paragraph.",
4236 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4239 fontDescriptionRuns.Begin(),
4240 Text::HorizontalAlignment::BEGIN,
4241 Text::VerticalAlignment::TOP,
4246 Dali::LayoutDirection::LEFT_TO_RIGHT,
4250 if( !AlignTest( data ) )
4252 tet_result(TET_FAIL);
4255 tet_result(TET_PASS);
4259 int UtcDaliTextAlign02(void)
4261 ToolkitTestApplication application;
4262 tet_infoline(" UtcDaliTextAlign02");
4264 // Calculate text alignment.
4266 const std::string fontLatin( "TizenSans" );
4267 const std::string fontHebrew( "TizenSansHebrew" );
4268 const std::string fontArabic( "TizenSansArabic" );
4270 // Set a known font description
4271 FontDescriptionRun fontDescriptionRun01;
4272 fontDescriptionRun01.characterRun.characterIndex = 0u;
4273 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4274 fontDescriptionRun01.familyLength = fontLatin.size();
4275 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4276 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4277 fontDescriptionRun01.familyDefined = true;
4278 fontDescriptionRun01.weightDefined = false;
4279 fontDescriptionRun01.widthDefined = false;
4280 fontDescriptionRun01.slantDefined = false;
4281 fontDescriptionRun01.sizeDefined = false;
4283 FontDescriptionRun fontDescriptionRun02;
4284 fontDescriptionRun02.characterRun.characterIndex = 12u;
4285 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4286 fontDescriptionRun02.familyLength = fontHebrew.size();
4287 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4288 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4289 fontDescriptionRun02.familyDefined = true;
4290 fontDescriptionRun02.weightDefined = false;
4291 fontDescriptionRun02.widthDefined = false;
4292 fontDescriptionRun02.slantDefined = false;
4293 fontDescriptionRun02.sizeDefined = false;
4295 FontDescriptionRun fontDescriptionRun03;
4296 fontDescriptionRun03.characterRun.characterIndex = 22u;
4297 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4298 fontDescriptionRun03.familyLength = fontArabic.size();
4299 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4300 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4301 fontDescriptionRun03.familyDefined = true;
4302 fontDescriptionRun03.weightDefined = false;
4303 fontDescriptionRun03.widthDefined = false;
4304 fontDescriptionRun03.slantDefined = false;
4305 fontDescriptionRun03.sizeDefined = false;
4307 FontDescriptionRun fontDescriptionRun04;
4308 fontDescriptionRun04.characterRun.characterIndex = 36u;
4309 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4310 fontDescriptionRun04.familyLength = fontLatin.size();
4311 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4312 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4313 fontDescriptionRun04.familyDefined = true;
4314 fontDescriptionRun04.weightDefined = false;
4315 fontDescriptionRun04.widthDefined = false;
4316 fontDescriptionRun04.slantDefined = false;
4317 fontDescriptionRun04.sizeDefined = false;
4319 FontDescriptionRun fontDescriptionRun05;
4320 fontDescriptionRun05.characterRun.characterIndex = 48u;
4321 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4322 fontDescriptionRun05.familyLength = fontLatin.size();
4323 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4324 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4325 fontDescriptionRun05.familyDefined = true;
4326 fontDescriptionRun05.weightDefined = false;
4327 fontDescriptionRun05.widthDefined = false;
4328 fontDescriptionRun05.slantDefined = false;
4329 fontDescriptionRun05.sizeDefined = false;
4331 FontDescriptionRun fontDescriptionRun06;
4332 fontDescriptionRun06.characterRun.characterIndex = 60u;
4333 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4334 fontDescriptionRun06.familyLength = fontArabic.size();
4335 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4336 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4337 fontDescriptionRun06.familyDefined = true;
4338 fontDescriptionRun06.weightDefined = false;
4339 fontDescriptionRun06.widthDefined = false;
4340 fontDescriptionRun06.slantDefined = false;
4341 fontDescriptionRun06.sizeDefined = false;
4343 Vector<FontDescriptionRun> fontDescriptionRuns;
4344 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4345 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4346 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4347 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4348 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4349 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4351 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4353 Size textArea( 100.f, 300.f );
4356 "Begin alignment for the mid paragraph.",
4357 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4360 fontDescriptionRuns.Begin(),
4361 Text::HorizontalAlignment::BEGIN,
4362 Text::VerticalAlignment::TOP,
4367 Dali::LayoutDirection::LEFT_TO_RIGHT,
4371 if( !AlignTest( data ) )
4373 tet_result(TET_FAIL);
4376 tet_result(TET_PASS);
4380 int UtcDaliTextAlign03(void)
4382 ToolkitTestApplication application;
4383 tet_infoline(" UtcDaliTextAlign03");
4385 // Calculate text alignment.
4387 const std::string fontLatin( "TizenSans" );
4388 const std::string fontHebrew( "TizenSansHebrew" );
4389 const std::string fontArabic( "TizenSansArabic" );
4391 // Set a known font description
4392 FontDescriptionRun fontDescriptionRun01;
4393 fontDescriptionRun01.characterRun.characterIndex = 0u;
4394 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4395 fontDescriptionRun01.familyLength = fontLatin.size();
4396 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4397 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4398 fontDescriptionRun01.familyDefined = true;
4399 fontDescriptionRun01.weightDefined = false;
4400 fontDescriptionRun01.widthDefined = false;
4401 fontDescriptionRun01.slantDefined = false;
4402 fontDescriptionRun01.sizeDefined = false;
4404 FontDescriptionRun fontDescriptionRun02;
4405 fontDescriptionRun02.characterRun.characterIndex = 12u;
4406 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4407 fontDescriptionRun02.familyLength = fontHebrew.size();
4408 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4409 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4410 fontDescriptionRun02.familyDefined = true;
4411 fontDescriptionRun02.weightDefined = false;
4412 fontDescriptionRun02.widthDefined = false;
4413 fontDescriptionRun02.slantDefined = false;
4414 fontDescriptionRun02.sizeDefined = false;
4416 FontDescriptionRun fontDescriptionRun03;
4417 fontDescriptionRun03.characterRun.characterIndex = 22u;
4418 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4419 fontDescriptionRun03.familyLength = fontArabic.size();
4420 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4421 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4422 fontDescriptionRun03.familyDefined = true;
4423 fontDescriptionRun03.weightDefined = false;
4424 fontDescriptionRun03.widthDefined = false;
4425 fontDescriptionRun03.slantDefined = false;
4426 fontDescriptionRun03.sizeDefined = false;
4428 FontDescriptionRun fontDescriptionRun04;
4429 fontDescriptionRun04.characterRun.characterIndex = 36u;
4430 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4431 fontDescriptionRun04.familyLength = fontLatin.size();
4432 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4433 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4434 fontDescriptionRun04.familyDefined = true;
4435 fontDescriptionRun04.weightDefined = false;
4436 fontDescriptionRun04.widthDefined = false;
4437 fontDescriptionRun04.slantDefined = false;
4438 fontDescriptionRun04.sizeDefined = false;
4440 FontDescriptionRun fontDescriptionRun05;
4441 fontDescriptionRun05.characterRun.characterIndex = 48u;
4442 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4443 fontDescriptionRun05.familyLength = fontLatin.size();
4444 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4445 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4446 fontDescriptionRun05.familyDefined = true;
4447 fontDescriptionRun05.weightDefined = false;
4448 fontDescriptionRun05.widthDefined = false;
4449 fontDescriptionRun05.slantDefined = false;
4450 fontDescriptionRun05.sizeDefined = false;
4452 FontDescriptionRun fontDescriptionRun06;
4453 fontDescriptionRun06.characterRun.characterIndex = 60u;
4454 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4455 fontDescriptionRun06.familyLength = fontArabic.size();
4456 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4457 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4458 fontDescriptionRun06.familyDefined = true;
4459 fontDescriptionRun06.weightDefined = false;
4460 fontDescriptionRun06.widthDefined = false;
4461 fontDescriptionRun06.slantDefined = false;
4462 fontDescriptionRun06.sizeDefined = false;
4464 Vector<FontDescriptionRun> fontDescriptionRuns;
4465 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4466 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4467 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4468 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4469 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4470 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4472 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4474 Size textArea( 100.f, 300.f );
4477 "Begin alignment for the last paragraph.",
4478 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4481 fontDescriptionRuns.Begin(),
4482 Text::HorizontalAlignment::BEGIN,
4483 Text::VerticalAlignment::TOP,
4488 Dali::LayoutDirection::LEFT_TO_RIGHT,
4492 if( !AlignTest( data ) )
4494 tet_result(TET_FAIL);
4497 tet_result(TET_PASS);
4501 int UtcDaliTextAlign04(void)
4503 ToolkitTestApplication application;
4504 tet_infoline(" UtcDaliTextAlign04");
4506 // Calculate text alignment.
4508 const std::string fontLatin( "TizenSans" );
4509 const std::string fontHebrew( "TizenSansHebrew" );
4510 const std::string fontArabic( "TizenSansArabic" );
4512 // Set a known font description
4513 FontDescriptionRun fontDescriptionRun01;
4514 fontDescriptionRun01.characterRun.characterIndex = 0u;
4515 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4516 fontDescriptionRun01.familyLength = fontLatin.size();
4517 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4518 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4519 fontDescriptionRun01.familyDefined = true;
4520 fontDescriptionRun01.weightDefined = false;
4521 fontDescriptionRun01.widthDefined = false;
4522 fontDescriptionRun01.slantDefined = false;
4523 fontDescriptionRun01.sizeDefined = false;
4525 FontDescriptionRun fontDescriptionRun02;
4526 fontDescriptionRun02.characterRun.characterIndex = 12u;
4527 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4528 fontDescriptionRun02.familyLength = fontHebrew.size();
4529 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4530 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4531 fontDescriptionRun02.familyDefined = true;
4532 fontDescriptionRun02.weightDefined = false;
4533 fontDescriptionRun02.widthDefined = false;
4534 fontDescriptionRun02.slantDefined = false;
4535 fontDescriptionRun02.sizeDefined = false;
4537 FontDescriptionRun fontDescriptionRun03;
4538 fontDescriptionRun03.characterRun.characterIndex = 22u;
4539 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4540 fontDescriptionRun03.familyLength = fontArabic.size();
4541 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4542 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4543 fontDescriptionRun03.familyDefined = true;
4544 fontDescriptionRun03.weightDefined = false;
4545 fontDescriptionRun03.widthDefined = false;
4546 fontDescriptionRun03.slantDefined = false;
4547 fontDescriptionRun03.sizeDefined = false;
4549 FontDescriptionRun fontDescriptionRun04;
4550 fontDescriptionRun04.characterRun.characterIndex = 36u;
4551 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4552 fontDescriptionRun04.familyLength = fontLatin.size();
4553 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4554 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4555 fontDescriptionRun04.familyDefined = true;
4556 fontDescriptionRun04.weightDefined = false;
4557 fontDescriptionRun04.widthDefined = false;
4558 fontDescriptionRun04.slantDefined = false;
4559 fontDescriptionRun04.sizeDefined = false;
4561 FontDescriptionRun fontDescriptionRun05;
4562 fontDescriptionRun05.characterRun.characterIndex = 48u;
4563 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4564 fontDescriptionRun05.familyLength = fontLatin.size();
4565 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4566 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4567 fontDescriptionRun05.familyDefined = true;
4568 fontDescriptionRun05.weightDefined = false;
4569 fontDescriptionRun05.widthDefined = false;
4570 fontDescriptionRun05.slantDefined = false;
4571 fontDescriptionRun05.sizeDefined = false;
4573 FontDescriptionRun fontDescriptionRun06;
4574 fontDescriptionRun06.characterRun.characterIndex = 60u;
4575 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4576 fontDescriptionRun06.familyLength = fontArabic.size();
4577 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4578 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4579 fontDescriptionRun06.familyDefined = true;
4580 fontDescriptionRun06.weightDefined = false;
4581 fontDescriptionRun06.widthDefined = false;
4582 fontDescriptionRun06.slantDefined = false;
4583 fontDescriptionRun06.sizeDefined = false;
4585 Vector<FontDescriptionRun> fontDescriptionRuns;
4586 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4587 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4588 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4589 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4590 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4591 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4593 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4595 Size textArea( 100.f, 300.f );
4598 "Center alignment for the first paragraph.",
4599 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4602 fontDescriptionRuns.Begin(),
4603 Text::HorizontalAlignment::CENTER,
4604 Text::VerticalAlignment::TOP,
4609 Dali::LayoutDirection::LEFT_TO_RIGHT,
4613 if( !AlignTest( data ) )
4615 tet_result(TET_FAIL);
4618 tet_result(TET_PASS);
4622 int UtcDaliTextAlign05(void)
4624 ToolkitTestApplication application;
4625 tet_infoline(" UtcDaliTextAlign05");
4627 // Calculate text alignment.
4629 const std::string fontLatin( "TizenSans" );
4630 const std::string fontHebrew( "TizenSansHebrew" );
4631 const std::string fontArabic( "TizenSansArabic" );
4633 // Set a known font description
4634 FontDescriptionRun fontDescriptionRun01;
4635 fontDescriptionRun01.characterRun.characterIndex = 0u;
4636 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4637 fontDescriptionRun01.familyLength = fontLatin.size();
4638 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4639 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4640 fontDescriptionRun01.familyDefined = true;
4641 fontDescriptionRun01.weightDefined = false;
4642 fontDescriptionRun01.widthDefined = false;
4643 fontDescriptionRun01.slantDefined = false;
4644 fontDescriptionRun01.sizeDefined = false;
4646 FontDescriptionRun fontDescriptionRun02;
4647 fontDescriptionRun02.characterRun.characterIndex = 12u;
4648 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4649 fontDescriptionRun02.familyLength = fontHebrew.size();
4650 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4651 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4652 fontDescriptionRun02.familyDefined = true;
4653 fontDescriptionRun02.weightDefined = false;
4654 fontDescriptionRun02.widthDefined = false;
4655 fontDescriptionRun02.slantDefined = false;
4656 fontDescriptionRun02.sizeDefined = false;
4658 FontDescriptionRun fontDescriptionRun03;
4659 fontDescriptionRun03.characterRun.characterIndex = 22u;
4660 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4661 fontDescriptionRun03.familyLength = fontArabic.size();
4662 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4663 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4664 fontDescriptionRun03.familyDefined = true;
4665 fontDescriptionRun03.weightDefined = false;
4666 fontDescriptionRun03.widthDefined = false;
4667 fontDescriptionRun03.slantDefined = false;
4668 fontDescriptionRun03.sizeDefined = false;
4670 FontDescriptionRun fontDescriptionRun04;
4671 fontDescriptionRun04.characterRun.characterIndex = 36u;
4672 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4673 fontDescriptionRun04.familyLength = fontLatin.size();
4674 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4675 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4676 fontDescriptionRun04.familyDefined = true;
4677 fontDescriptionRun04.weightDefined = false;
4678 fontDescriptionRun04.widthDefined = false;
4679 fontDescriptionRun04.slantDefined = false;
4680 fontDescriptionRun04.sizeDefined = false;
4682 FontDescriptionRun fontDescriptionRun05;
4683 fontDescriptionRun05.characterRun.characterIndex = 48u;
4684 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4685 fontDescriptionRun05.familyLength = fontLatin.size();
4686 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4687 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4688 fontDescriptionRun05.familyDefined = true;
4689 fontDescriptionRun05.weightDefined = false;
4690 fontDescriptionRun05.widthDefined = false;
4691 fontDescriptionRun05.slantDefined = false;
4692 fontDescriptionRun05.sizeDefined = false;
4694 FontDescriptionRun fontDescriptionRun06;
4695 fontDescriptionRun06.characterRun.characterIndex = 60u;
4696 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4697 fontDescriptionRun06.familyLength = fontArabic.size();
4698 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4699 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4700 fontDescriptionRun06.familyDefined = true;
4701 fontDescriptionRun06.weightDefined = false;
4702 fontDescriptionRun06.widthDefined = false;
4703 fontDescriptionRun06.slantDefined = false;
4704 fontDescriptionRun06.sizeDefined = false;
4706 Vector<FontDescriptionRun> fontDescriptionRuns;
4707 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4708 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4709 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4710 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4711 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4712 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4714 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4716 Size textArea( 100.f, 300.f );
4719 "Center alignment for the mid paragraph.",
4720 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4723 fontDescriptionRuns.Begin(),
4724 Text::HorizontalAlignment::CENTER,
4725 Text::VerticalAlignment::TOP,
4730 Dali::LayoutDirection::LEFT_TO_RIGHT,
4734 if( !AlignTest( data ) )
4736 tet_result(TET_FAIL);
4739 tet_result(TET_PASS);
4743 int UtcDaliTextAlign06(void)
4745 ToolkitTestApplication application;
4746 tet_infoline(" UtcDaliTextAlign06");
4748 // Calculate text alignment.
4750 const std::string fontLatin( "TizenSans" );
4751 const std::string fontHebrew( "TizenSansHebrew" );
4752 const std::string fontArabic( "TizenSansArabic" );
4754 // Set a known font description
4755 FontDescriptionRun fontDescriptionRun01;
4756 fontDescriptionRun01.characterRun.characterIndex = 0u;
4757 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4758 fontDescriptionRun01.familyLength = fontLatin.size();
4759 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4760 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4761 fontDescriptionRun01.familyDefined = true;
4762 fontDescriptionRun01.weightDefined = false;
4763 fontDescriptionRun01.widthDefined = false;
4764 fontDescriptionRun01.slantDefined = false;
4765 fontDescriptionRun01.sizeDefined = false;
4767 FontDescriptionRun fontDescriptionRun02;
4768 fontDescriptionRun02.characterRun.characterIndex = 12u;
4769 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4770 fontDescriptionRun02.familyLength = fontHebrew.size();
4771 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4772 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4773 fontDescriptionRun02.familyDefined = true;
4774 fontDescriptionRun02.weightDefined = false;
4775 fontDescriptionRun02.widthDefined = false;
4776 fontDescriptionRun02.slantDefined = false;
4777 fontDescriptionRun02.sizeDefined = false;
4779 FontDescriptionRun fontDescriptionRun03;
4780 fontDescriptionRun03.characterRun.characterIndex = 22u;
4781 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4782 fontDescriptionRun03.familyLength = fontArabic.size();
4783 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4784 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4785 fontDescriptionRun03.familyDefined = true;
4786 fontDescriptionRun03.weightDefined = false;
4787 fontDescriptionRun03.widthDefined = false;
4788 fontDescriptionRun03.slantDefined = false;
4789 fontDescriptionRun03.sizeDefined = false;
4791 FontDescriptionRun fontDescriptionRun04;
4792 fontDescriptionRun04.characterRun.characterIndex = 36u;
4793 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4794 fontDescriptionRun04.familyLength = fontLatin.size();
4795 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4796 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4797 fontDescriptionRun04.familyDefined = true;
4798 fontDescriptionRun04.weightDefined = false;
4799 fontDescriptionRun04.widthDefined = false;
4800 fontDescriptionRun04.slantDefined = false;
4801 fontDescriptionRun04.sizeDefined = false;
4803 FontDescriptionRun fontDescriptionRun05;
4804 fontDescriptionRun05.characterRun.characterIndex = 48u;
4805 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4806 fontDescriptionRun05.familyLength = fontLatin.size();
4807 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4808 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4809 fontDescriptionRun05.familyDefined = true;
4810 fontDescriptionRun05.weightDefined = false;
4811 fontDescriptionRun05.widthDefined = false;
4812 fontDescriptionRun05.slantDefined = false;
4813 fontDescriptionRun05.sizeDefined = false;
4815 FontDescriptionRun fontDescriptionRun06;
4816 fontDescriptionRun06.characterRun.characterIndex = 60u;
4817 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4818 fontDescriptionRun06.familyLength = fontArabic.size();
4819 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4820 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4821 fontDescriptionRun06.familyDefined = true;
4822 fontDescriptionRun06.weightDefined = false;
4823 fontDescriptionRun06.widthDefined = false;
4824 fontDescriptionRun06.slantDefined = false;
4825 fontDescriptionRun06.sizeDefined = false;
4827 Vector<FontDescriptionRun> fontDescriptionRuns;
4828 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4829 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4830 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4831 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4832 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4833 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4835 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4837 Size textArea( 100.f, 300.f );
4840 "Center alignment for the last paragraph.",
4841 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4844 fontDescriptionRuns.Begin(),
4845 Text::HorizontalAlignment::CENTER,
4846 Text::VerticalAlignment::TOP,
4851 Dali::LayoutDirection::LEFT_TO_RIGHT,
4855 if( !AlignTest( data ) )
4857 tet_result(TET_FAIL);
4860 tet_result(TET_PASS);
4864 int UtcDaliTextAlign07(void)
4866 ToolkitTestApplication application;
4867 tet_infoline(" UtcDaliTextAlign07");
4869 // Calculate text alignment.
4871 const std::string fontLatin( "TizenSans" );
4872 const std::string fontHebrew( "TizenSansHebrew" );
4873 const std::string fontArabic( "TizenSansArabic" );
4875 // Set a known font description
4876 FontDescriptionRun fontDescriptionRun01;
4877 fontDescriptionRun01.characterRun.characterIndex = 0u;
4878 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4879 fontDescriptionRun01.familyLength = fontLatin.size();
4880 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4881 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4882 fontDescriptionRun01.familyDefined = true;
4883 fontDescriptionRun01.weightDefined = false;
4884 fontDescriptionRun01.widthDefined = false;
4885 fontDescriptionRun01.slantDefined = false;
4886 fontDescriptionRun01.sizeDefined = false;
4888 FontDescriptionRun fontDescriptionRun02;
4889 fontDescriptionRun02.characterRun.characterIndex = 12u;
4890 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4891 fontDescriptionRun02.familyLength = fontHebrew.size();
4892 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4893 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4894 fontDescriptionRun02.familyDefined = true;
4895 fontDescriptionRun02.weightDefined = false;
4896 fontDescriptionRun02.widthDefined = false;
4897 fontDescriptionRun02.slantDefined = false;
4898 fontDescriptionRun02.sizeDefined = false;
4900 FontDescriptionRun fontDescriptionRun03;
4901 fontDescriptionRun03.characterRun.characterIndex = 22u;
4902 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4903 fontDescriptionRun03.familyLength = fontArabic.size();
4904 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4905 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4906 fontDescriptionRun03.familyDefined = true;
4907 fontDescriptionRun03.weightDefined = false;
4908 fontDescriptionRun03.widthDefined = false;
4909 fontDescriptionRun03.slantDefined = false;
4910 fontDescriptionRun03.sizeDefined = false;
4912 FontDescriptionRun fontDescriptionRun04;
4913 fontDescriptionRun04.characterRun.characterIndex = 36u;
4914 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4915 fontDescriptionRun04.familyLength = fontLatin.size();
4916 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4917 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4918 fontDescriptionRun04.familyDefined = true;
4919 fontDescriptionRun04.weightDefined = false;
4920 fontDescriptionRun04.widthDefined = false;
4921 fontDescriptionRun04.slantDefined = false;
4922 fontDescriptionRun04.sizeDefined = false;
4924 FontDescriptionRun fontDescriptionRun05;
4925 fontDescriptionRun05.characterRun.characterIndex = 48u;
4926 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4927 fontDescriptionRun05.familyLength = fontLatin.size();
4928 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4929 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4930 fontDescriptionRun05.familyDefined = true;
4931 fontDescriptionRun05.weightDefined = false;
4932 fontDescriptionRun05.widthDefined = false;
4933 fontDescriptionRun05.slantDefined = false;
4934 fontDescriptionRun05.sizeDefined = false;
4936 FontDescriptionRun fontDescriptionRun06;
4937 fontDescriptionRun06.characterRun.characterIndex = 60u;
4938 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4939 fontDescriptionRun06.familyLength = fontArabic.size();
4940 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4941 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4942 fontDescriptionRun06.familyDefined = true;
4943 fontDescriptionRun06.weightDefined = false;
4944 fontDescriptionRun06.widthDefined = false;
4945 fontDescriptionRun06.slantDefined = false;
4946 fontDescriptionRun06.sizeDefined = false;
4948 Vector<FontDescriptionRun> fontDescriptionRuns;
4949 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4950 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4951 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4952 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4953 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4954 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4956 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4958 Size textArea( 100.f, 300.f );
4961 "End alignment for the first paragraph.",
4962 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4965 fontDescriptionRuns.Begin(),
4966 Text::HorizontalAlignment::END,
4967 Text::VerticalAlignment::TOP,
4972 Dali::LayoutDirection::LEFT_TO_RIGHT,
4976 if( !AlignTest( data ) )
4978 tet_result(TET_FAIL);
4981 tet_result(TET_PASS);
4985 int UtcDaliTextAlign08(void)
4987 ToolkitTestApplication application;
4988 tet_infoline(" UtcDaliTextAlign08");
4990 // Calculate text alignment.
4992 const std::string fontLatin( "TizenSans" );
4993 const std::string fontHebrew( "TizenSansHebrew" );
4994 const std::string fontArabic( "TizenSansArabic" );
4996 // Set a known font description
4997 FontDescriptionRun fontDescriptionRun01;
4998 fontDescriptionRun01.characterRun.characterIndex = 0u;
4999 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5000 fontDescriptionRun01.familyLength = fontLatin.size();
5001 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5002 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5003 fontDescriptionRun01.familyDefined = true;
5004 fontDescriptionRun01.weightDefined = false;
5005 fontDescriptionRun01.widthDefined = false;
5006 fontDescriptionRun01.slantDefined = false;
5007 fontDescriptionRun01.sizeDefined = false;
5009 FontDescriptionRun fontDescriptionRun02;
5010 fontDescriptionRun02.characterRun.characterIndex = 12u;
5011 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5012 fontDescriptionRun02.familyLength = fontHebrew.size();
5013 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5014 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5015 fontDescriptionRun02.familyDefined = true;
5016 fontDescriptionRun02.weightDefined = false;
5017 fontDescriptionRun02.widthDefined = false;
5018 fontDescriptionRun02.slantDefined = false;
5019 fontDescriptionRun02.sizeDefined = false;
5021 FontDescriptionRun fontDescriptionRun03;
5022 fontDescriptionRun03.characterRun.characterIndex = 22u;
5023 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5024 fontDescriptionRun03.familyLength = fontArabic.size();
5025 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5026 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5027 fontDescriptionRun03.familyDefined = true;
5028 fontDescriptionRun03.weightDefined = false;
5029 fontDescriptionRun03.widthDefined = false;
5030 fontDescriptionRun03.slantDefined = false;
5031 fontDescriptionRun03.sizeDefined = false;
5033 FontDescriptionRun fontDescriptionRun04;
5034 fontDescriptionRun04.characterRun.characterIndex = 36u;
5035 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5036 fontDescriptionRun04.familyLength = fontLatin.size();
5037 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5038 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5039 fontDescriptionRun04.familyDefined = true;
5040 fontDescriptionRun04.weightDefined = false;
5041 fontDescriptionRun04.widthDefined = false;
5042 fontDescriptionRun04.slantDefined = false;
5043 fontDescriptionRun04.sizeDefined = false;
5045 FontDescriptionRun fontDescriptionRun05;
5046 fontDescriptionRun05.characterRun.characterIndex = 48u;
5047 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5048 fontDescriptionRun05.familyLength = fontLatin.size();
5049 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5050 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5051 fontDescriptionRun05.familyDefined = true;
5052 fontDescriptionRun05.weightDefined = false;
5053 fontDescriptionRun05.widthDefined = false;
5054 fontDescriptionRun05.slantDefined = false;
5055 fontDescriptionRun05.sizeDefined = false;
5057 FontDescriptionRun fontDescriptionRun06;
5058 fontDescriptionRun06.characterRun.characterIndex = 60u;
5059 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5060 fontDescriptionRun06.familyLength = fontArabic.size();
5061 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5062 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5063 fontDescriptionRun06.familyDefined = true;
5064 fontDescriptionRun06.weightDefined = false;
5065 fontDescriptionRun06.widthDefined = false;
5066 fontDescriptionRun06.slantDefined = false;
5067 fontDescriptionRun06.sizeDefined = false;
5069 Vector<FontDescriptionRun> fontDescriptionRuns;
5070 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5071 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5072 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5073 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5074 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5075 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5077 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5079 Size textArea( 100.f, 300.f );
5082 "End alignment for the mid paragraph.",
5083 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5086 fontDescriptionRuns.Begin(),
5087 Text::HorizontalAlignment::END,
5088 Text::VerticalAlignment::TOP,
5093 Dali::LayoutDirection::LEFT_TO_RIGHT,
5097 if( !AlignTest( data ) )
5099 tet_result(TET_FAIL);
5102 tet_result(TET_PASS);
5106 int UtcDaliTextAlign09(void)
5108 ToolkitTestApplication application;
5109 tet_infoline(" UtcDaliTextAlign09");
5111 // Calculate text alignment.
5113 const std::string fontLatin( "TizenSans" );
5114 const std::string fontHebrew( "TizenSansHebrew" );
5115 const std::string fontArabic( "TizenSansArabic" );
5117 // Set a known font description
5118 FontDescriptionRun fontDescriptionRun01;
5119 fontDescriptionRun01.characterRun.characterIndex = 0u;
5120 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5121 fontDescriptionRun01.familyLength = fontLatin.size();
5122 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5123 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5124 fontDescriptionRun01.familyDefined = true;
5125 fontDescriptionRun01.weightDefined = false;
5126 fontDescriptionRun01.widthDefined = false;
5127 fontDescriptionRun01.slantDefined = false;
5128 fontDescriptionRun01.sizeDefined = false;
5130 FontDescriptionRun fontDescriptionRun02;
5131 fontDescriptionRun02.characterRun.characterIndex = 12u;
5132 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5133 fontDescriptionRun02.familyLength = fontHebrew.size();
5134 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5135 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5136 fontDescriptionRun02.familyDefined = true;
5137 fontDescriptionRun02.weightDefined = false;
5138 fontDescriptionRun02.widthDefined = false;
5139 fontDescriptionRun02.slantDefined = false;
5140 fontDescriptionRun02.sizeDefined = false;
5142 FontDescriptionRun fontDescriptionRun03;
5143 fontDescriptionRun03.characterRun.characterIndex = 22u;
5144 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5145 fontDescriptionRun03.familyLength = fontArabic.size();
5146 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5147 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5148 fontDescriptionRun03.familyDefined = true;
5149 fontDescriptionRun03.weightDefined = false;
5150 fontDescriptionRun03.widthDefined = false;
5151 fontDescriptionRun03.slantDefined = false;
5152 fontDescriptionRun03.sizeDefined = false;
5154 FontDescriptionRun fontDescriptionRun04;
5155 fontDescriptionRun04.characterRun.characterIndex = 36u;
5156 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5157 fontDescriptionRun04.familyLength = fontLatin.size();
5158 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5159 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5160 fontDescriptionRun04.familyDefined = true;
5161 fontDescriptionRun04.weightDefined = false;
5162 fontDescriptionRun04.widthDefined = false;
5163 fontDescriptionRun04.slantDefined = false;
5164 fontDescriptionRun04.sizeDefined = false;
5166 FontDescriptionRun fontDescriptionRun05;
5167 fontDescriptionRun05.characterRun.characterIndex = 48u;
5168 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5169 fontDescriptionRun05.familyLength = fontLatin.size();
5170 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5171 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5172 fontDescriptionRun05.familyDefined = true;
5173 fontDescriptionRun05.weightDefined = false;
5174 fontDescriptionRun05.widthDefined = false;
5175 fontDescriptionRun05.slantDefined = false;
5176 fontDescriptionRun05.sizeDefined = false;
5178 FontDescriptionRun fontDescriptionRun06;
5179 fontDescriptionRun06.characterRun.characterIndex = 60u;
5180 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5181 fontDescriptionRun06.familyLength = fontArabic.size();
5182 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5183 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5184 fontDescriptionRun06.familyDefined = true;
5185 fontDescriptionRun06.weightDefined = false;
5186 fontDescriptionRun06.widthDefined = false;
5187 fontDescriptionRun06.slantDefined = false;
5188 fontDescriptionRun06.sizeDefined = false;
5190 Vector<FontDescriptionRun> fontDescriptionRuns;
5191 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5192 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5193 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5194 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5195 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5196 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5198 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5200 Size textArea( 100.f, 300.f );
5203 "End alignment for the last paragraph.",
5204 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5207 fontDescriptionRuns.Begin(),
5208 Text::HorizontalAlignment::END,
5209 Text::VerticalAlignment::TOP,
5214 Dali::LayoutDirection::LEFT_TO_RIGHT,
5218 if( !AlignTest( data ) )
5220 tet_result(TET_FAIL);
5223 tet_result(TET_PASS);
5227 int UtcDaliTextAlign10(void)
5229 ToolkitTestApplication application;
5230 tet_infoline(" UtcDaliTextAlign10");
5232 // Calculate text alignment.
5234 const std::string fontLatin( "TizenSans" );
5235 const std::string fontHebrew( "TizenSansHebrew" );
5236 const std::string fontArabic( "TizenSansArabic" );
5238 // Set a known font description
5239 FontDescriptionRun fontDescriptionRun01;
5240 fontDescriptionRun01.characterRun.characterIndex = 0u;
5241 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5242 fontDescriptionRun01.familyLength = fontLatin.size();
5243 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5244 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5245 fontDescriptionRun01.familyDefined = true;
5246 fontDescriptionRun01.weightDefined = false;
5247 fontDescriptionRun01.widthDefined = false;
5248 fontDescriptionRun01.slantDefined = false;
5249 fontDescriptionRun01.sizeDefined = false;
5251 FontDescriptionRun fontDescriptionRun02;
5252 fontDescriptionRun02.characterRun.characterIndex = 12u;
5253 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5254 fontDescriptionRun02.familyLength = fontHebrew.size();
5255 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5256 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5257 fontDescriptionRun02.familyDefined = true;
5258 fontDescriptionRun02.weightDefined = false;
5259 fontDescriptionRun02.widthDefined = false;
5260 fontDescriptionRun02.slantDefined = false;
5261 fontDescriptionRun02.sizeDefined = false;
5263 FontDescriptionRun fontDescriptionRun03;
5264 fontDescriptionRun03.characterRun.characterIndex = 22u;
5265 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5266 fontDescriptionRun03.familyLength = fontArabic.size();
5267 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5268 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5269 fontDescriptionRun03.familyDefined = true;
5270 fontDescriptionRun03.weightDefined = false;
5271 fontDescriptionRun03.widthDefined = false;
5272 fontDescriptionRun03.slantDefined = false;
5273 fontDescriptionRun03.sizeDefined = false;
5275 FontDescriptionRun fontDescriptionRun04;
5276 fontDescriptionRun04.characterRun.characterIndex = 36u;
5277 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5278 fontDescriptionRun04.familyLength = fontLatin.size();
5279 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5280 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5281 fontDescriptionRun04.familyDefined = true;
5282 fontDescriptionRun04.weightDefined = false;
5283 fontDescriptionRun04.widthDefined = false;
5284 fontDescriptionRun04.slantDefined = false;
5285 fontDescriptionRun04.sizeDefined = false;
5287 FontDescriptionRun fontDescriptionRun05;
5288 fontDescriptionRun05.characterRun.characterIndex = 48u;
5289 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5290 fontDescriptionRun05.familyLength = fontLatin.size();
5291 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5292 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5293 fontDescriptionRun05.familyDefined = true;
5294 fontDescriptionRun05.weightDefined = false;
5295 fontDescriptionRun05.widthDefined = false;
5296 fontDescriptionRun05.slantDefined = false;
5297 fontDescriptionRun05.sizeDefined = false;
5299 FontDescriptionRun fontDescriptionRun06;
5300 fontDescriptionRun06.characterRun.characterIndex = 60u;
5301 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5302 fontDescriptionRun06.familyLength = fontArabic.size();
5303 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5304 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5305 fontDescriptionRun06.familyDefined = true;
5306 fontDescriptionRun06.weightDefined = false;
5307 fontDescriptionRun06.widthDefined = false;
5308 fontDescriptionRun06.slantDefined = false;
5309 fontDescriptionRun06.sizeDefined = false;
5311 Vector<FontDescriptionRun> fontDescriptionRuns;
5312 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5313 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5314 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5315 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5316 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5317 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5319 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5321 Size textArea( 100.f, 300.f );
5324 "Begin alignment for the first paragraph.",
5325 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5328 fontDescriptionRuns.Begin(),
5329 Text::HorizontalAlignment::END,
5330 Text::VerticalAlignment::TOP,
5335 Dali::LayoutDirection::RIGHT_TO_LEFT,
5339 if( !AlignTest( data ) )
5341 tet_result(TET_FAIL);
5344 tet_result(TET_PASS);
5348 int UtcDaliTextAlign11(void)
5350 ToolkitTestApplication application;
5351 tet_infoline(" UtcDaliTextAlign11");
5353 // Calculate text alignment.
5355 const std::string fontLatin( "TizenSans" );
5356 const std::string fontHebrew( "TizenSansHebrew" );
5357 const std::string fontArabic( "TizenSansArabic" );
5359 // Set a known font description
5360 FontDescriptionRun fontDescriptionRun01;
5361 fontDescriptionRun01.characterRun.characterIndex = 0u;
5362 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5363 fontDescriptionRun01.familyLength = fontLatin.size();
5364 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5365 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5366 fontDescriptionRun01.familyDefined = true;
5367 fontDescriptionRun01.weightDefined = false;
5368 fontDescriptionRun01.widthDefined = false;
5369 fontDescriptionRun01.slantDefined = false;
5370 fontDescriptionRun01.sizeDefined = false;
5372 FontDescriptionRun fontDescriptionRun02;
5373 fontDescriptionRun02.characterRun.characterIndex = 12u;
5374 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5375 fontDescriptionRun02.familyLength = fontHebrew.size();
5376 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5377 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5378 fontDescriptionRun02.familyDefined = true;
5379 fontDescriptionRun02.weightDefined = false;
5380 fontDescriptionRun02.widthDefined = false;
5381 fontDescriptionRun02.slantDefined = false;
5382 fontDescriptionRun02.sizeDefined = false;
5384 FontDescriptionRun fontDescriptionRun03;
5385 fontDescriptionRun03.characterRun.characterIndex = 22u;
5386 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5387 fontDescriptionRun03.familyLength = fontArabic.size();
5388 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5389 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5390 fontDescriptionRun03.familyDefined = true;
5391 fontDescriptionRun03.weightDefined = false;
5392 fontDescriptionRun03.widthDefined = false;
5393 fontDescriptionRun03.slantDefined = false;
5394 fontDescriptionRun03.sizeDefined = false;
5396 FontDescriptionRun fontDescriptionRun04;
5397 fontDescriptionRun04.characterRun.characterIndex = 36u;
5398 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5399 fontDescriptionRun04.familyLength = fontLatin.size();
5400 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5401 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5402 fontDescriptionRun04.familyDefined = true;
5403 fontDescriptionRun04.weightDefined = false;
5404 fontDescriptionRun04.widthDefined = false;
5405 fontDescriptionRun04.slantDefined = false;
5406 fontDescriptionRun04.sizeDefined = false;
5408 FontDescriptionRun fontDescriptionRun05;
5409 fontDescriptionRun05.characterRun.characterIndex = 48u;
5410 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5411 fontDescriptionRun05.familyLength = fontLatin.size();
5412 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5413 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5414 fontDescriptionRun05.familyDefined = true;
5415 fontDescriptionRun05.weightDefined = false;
5416 fontDescriptionRun05.widthDefined = false;
5417 fontDescriptionRun05.slantDefined = false;
5418 fontDescriptionRun05.sizeDefined = false;
5420 FontDescriptionRun fontDescriptionRun06;
5421 fontDescriptionRun06.characterRun.characterIndex = 60u;
5422 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5423 fontDescriptionRun06.familyLength = fontArabic.size();
5424 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5425 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5426 fontDescriptionRun06.familyDefined = true;
5427 fontDescriptionRun06.weightDefined = false;
5428 fontDescriptionRun06.widthDefined = false;
5429 fontDescriptionRun06.slantDefined = false;
5430 fontDescriptionRun06.sizeDefined = false;
5432 Vector<FontDescriptionRun> fontDescriptionRuns;
5433 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5434 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5435 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5436 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5437 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5438 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5440 float positions[] = { 20.f, 33.f, 2.f, 0.f, 0.f, 0.f };
5442 Size textArea( 100.f, 300.f );
5445 "End alignment for the last paragraph.",
5446 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5449 fontDescriptionRuns.Begin(),
5450 Text::HorizontalAlignment::END,
5451 Text::VerticalAlignment::TOP,
5456 Dali::LayoutDirection::LEFT_TO_RIGHT,
5460 if( !AlignTest( data ) )
5462 tet_result(TET_FAIL);
5465 tet_result(TET_PASS);
5469 int UtcDaliTextAlign12(void)
5471 ToolkitTestApplication application;
5472 tet_infoline(" UtcDaliTextAlign12");
5474 // Calculate text alignment.
5476 const std::string fontLatin( "TizenSans" );
5477 const std::string fontHebrew( "TizenSansHebrew" );
5478 const std::string fontArabic( "TizenSansArabic" );
5480 // Set a known font description
5481 FontDescriptionRun fontDescriptionRun01;
5482 fontDescriptionRun01.characterRun.characterIndex = 0u;
5483 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5484 fontDescriptionRun01.familyLength = fontLatin.size();
5485 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5486 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5487 fontDescriptionRun01.familyDefined = true;
5488 fontDescriptionRun01.weightDefined = false;
5489 fontDescriptionRun01.widthDefined = false;
5490 fontDescriptionRun01.slantDefined = false;
5491 fontDescriptionRun01.sizeDefined = false;
5493 FontDescriptionRun fontDescriptionRun02;
5494 fontDescriptionRun02.characterRun.characterIndex = 12u;
5495 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5496 fontDescriptionRun02.familyLength = fontHebrew.size();
5497 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5498 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5499 fontDescriptionRun02.familyDefined = true;
5500 fontDescriptionRun02.weightDefined = false;
5501 fontDescriptionRun02.widthDefined = false;
5502 fontDescriptionRun02.slantDefined = false;
5503 fontDescriptionRun02.sizeDefined = false;
5505 FontDescriptionRun fontDescriptionRun03;
5506 fontDescriptionRun03.characterRun.characterIndex = 22u;
5507 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5508 fontDescriptionRun03.familyLength = fontArabic.size();
5509 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5510 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5511 fontDescriptionRun03.familyDefined = true;
5512 fontDescriptionRun03.weightDefined = false;
5513 fontDescriptionRun03.widthDefined = false;
5514 fontDescriptionRun03.slantDefined = false;
5515 fontDescriptionRun03.sizeDefined = false;
5517 FontDescriptionRun fontDescriptionRun04;
5518 fontDescriptionRun04.characterRun.characterIndex = 36u;
5519 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5520 fontDescriptionRun04.familyLength = fontLatin.size();
5521 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5522 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5523 fontDescriptionRun04.familyDefined = true;
5524 fontDescriptionRun04.weightDefined = false;
5525 fontDescriptionRun04.widthDefined = false;
5526 fontDescriptionRun04.slantDefined = false;
5527 fontDescriptionRun04.sizeDefined = false;
5529 FontDescriptionRun fontDescriptionRun05;
5530 fontDescriptionRun05.characterRun.characterIndex = 48u;
5531 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5532 fontDescriptionRun05.familyLength = fontLatin.size();
5533 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5534 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5535 fontDescriptionRun05.familyDefined = true;
5536 fontDescriptionRun05.weightDefined = false;
5537 fontDescriptionRun05.widthDefined = false;
5538 fontDescriptionRun05.slantDefined = false;
5539 fontDescriptionRun05.sizeDefined = false;
5541 FontDescriptionRun fontDescriptionRun06;
5542 fontDescriptionRun06.characterRun.characterIndex = 60u;
5543 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5544 fontDescriptionRun06.familyLength = fontArabic.size();
5545 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5546 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5547 fontDescriptionRun06.familyDefined = true;
5548 fontDescriptionRun06.weightDefined = false;
5549 fontDescriptionRun06.widthDefined = false;
5550 fontDescriptionRun06.slantDefined = false;
5551 fontDescriptionRun06.sizeDefined = false;
5553 Vector<FontDescriptionRun> fontDescriptionRuns;
5554 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5555 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5556 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5557 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5558 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5559 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5561 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5563 Size textArea( 100.f, 300.f );
5566 "Begin alignment for the first paragraph.",
5567 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5570 fontDescriptionRuns.Begin(),
5571 Text::HorizontalAlignment::BEGIN,
5572 Text::VerticalAlignment::TOP,
5577 Dali::LayoutDirection::LEFT_TO_RIGHT,
5581 if( !AlignTest( data ) )
5583 tet_result(TET_FAIL);
5586 tet_result(TET_PASS);
5590 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5592 ToolkitTestApplication application;
5593 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5595 Layout::Engine engine;
5596 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5598 engine.SetDefaultLineSpacing( 10.f );
5599 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5601 tet_result(TET_PASS);