2 * Copyright (c) 2019 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" );
87 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf" );
89 // 1) Create the model.
90 LogicalModelPtr logicalModel;
91 VisualModelPtr visualModel;
95 Vector<FontDescriptionRun> fontDescriptionRuns;
96 if( 0u != data.numberOfFonts )
98 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
99 data.fontDescriptions,
100 data.fontDescriptions + data.numberOfFonts );
103 LayoutOptions options;
104 options.reorder = false;
105 options.align = false;
106 CreateTextModel( data.text,
116 // 2) Clear the layout.
117 Vector<LineRun>& lines = visualModel->mLines;
119 const Length numberOfCharacters = logicalModel->mText.Count();
120 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
121 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
122 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
124 LineIndex startRemoveIndex = 0u;
126 if( 0u != lines.Count() )
128 startRemoveIndex = lines.Count();
129 LineIndex endRemoveIndex = startRemoveIndex;
130 ClearGlyphRuns( data.startIndex,
131 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
136 // Update the character runs of the lines.
137 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
138 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
139 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
140 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
141 ClearCharacterRuns( startCharacterIndex,
142 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
147 lines.Erase( lines.Begin() + startRemoveIndex,
148 lines.Begin() + endRemoveIndex );
151 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
153 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
154 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
157 Layout::Engine engine;
158 engine.SetMetrics( metrics );
159 engine.SetLayout( data.layout );
161 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
162 float outlineWidth = visualModel->GetOutlineWidth();
164 Layout::Parameters layoutParameters( data.textArea,
165 logicalModel->mText.Begin(),
166 logicalModel->mLineBreakInfo.Begin(),
167 logicalModel->mWordBreakInfo.Begin(),
168 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
169 visualModel->mGlyphs.Begin(),
170 visualModel->mGlyphsToCharacters.Begin(),
171 visualModel->mCharactersPerGlyph.Begin(),
172 visualModel->mCharactersToGlyph.Begin(),
173 visualModel->mGlyphsPerCharacter.Begin(),
175 Text::HorizontalAlignment::BEGIN,
176 Text::LineWrap::WORD,
181 layoutParameters.isLastNewParagraph = isLastNewParagraph;
183 // The initial glyph and the number of glyphs to layout.
184 layoutParameters.startGlyphIndex = data.startIndex;
185 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
186 layoutParameters.startLineIndex = startRemoveIndex;
187 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
189 layoutSize = Vector2::ZERO;
191 bool isAutoScroll = false;
192 const bool updated = engine.LayoutText( layoutParameters,
199 // 4) Compare the results.
201 if( updated != data.updated )
203 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
207 if( layoutSize != data.layoutSize )
209 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
213 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
215 const Vector2& position = *( glyphPositions.Begin() + index );
217 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
219 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
222 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
224 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
229 if( lines.Count() != data.numberOfLines )
231 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
235 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
237 const LineRun& line = *( lines.Begin() + index );
238 const LineRun& expectedLine = *( data.lines + index );
240 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
242 std::cout << " Different line info for line : " << index << std::endl;
244 std::cout << " expected" << std::endl;
245 Print( expectedLine );
248 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
250 std::cout << " Different line info for line : " << index << std::endl;
252 std::cout << " expected" << std::endl;
253 Print( expectedLine );
257 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
259 std::cout << " Different line info for line : " << index << std::endl;
261 std::cout << " expected" << std::endl;
262 Print( expectedLine );
265 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
267 std::cout << " Different line info for line : " << index << std::endl;
269 std::cout << " expected" << std::endl;
270 Print( expectedLine );
274 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
276 std::cout << " Different line info for line : " << index << std::endl;
278 std::cout << " expected" << std::endl;
279 Print( expectedLine );
283 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
285 std::cout << " Different line info for line : " << index << std::endl;
287 std::cout << " expected" << std::endl;
288 Print( expectedLine );
292 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
294 std::cout << " Different line info for line : " << index << std::endl;
296 std::cout << " expected" << std::endl;
297 Print( expectedLine );
301 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
303 std::cout << " Different line info for line : " << index << std::endl;
305 std::cout << " expected" << std::endl;
306 Print( expectedLine );
310 if( line.ellipsis != expectedLine.ellipsis )
312 std::cout << " Different line info for line : " << index << std::endl;
314 std::cout << " expected" << std::endl;
315 Print( expectedLine );
319 // Do not compare the alignment offset as it's not calculated in the layout.
320 // Do not compare the line direction as it's not set in the layout.
326 //////////////////////////////////////////////////////////
328 struct ReLayoutRightToLeftLinesData
330 std::string description;
333 unsigned int numberOfFonts;
334 FontDescriptionRun* fontDescriptions;
335 unsigned int totalNumberOfGlyphs;
337 unsigned int startIndex;
338 unsigned int numberOfCharacters;
341 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
344 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
345 fontClient.SetDpi( 96u, 96u );
347 char* pathNamePtr = get_current_dir_name();
348 const std::string pathName( pathNamePtr );
351 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
352 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
353 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
355 // 1) Create the model.
356 LogicalModelPtr logicalModel;
357 VisualModelPtr visualModel;
361 Vector<FontDescriptionRun> fontDescriptionRuns;
362 if( 0u != data.numberOfFonts )
364 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
365 data.fontDescriptions,
366 data.fontDescriptions + data.numberOfFonts );
369 LayoutOptions options;
370 options.reorder = false;
371 options.align = false;
372 CreateTextModel( data.text,
382 // 2) Call the ReLayoutRightToLeftLines() method.
383 Layout::Engine engine;
384 engine.SetMetrics( metrics );
386 float outlineWidth = visualModel->GetOutlineWidth();
387 Layout::Parameters layoutParameters( data.textArea,
388 logicalModel->mText.Begin(),
389 logicalModel->mLineBreakInfo.Begin(),
390 logicalModel->mWordBreakInfo.Begin(),
391 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
392 visualModel->mGlyphs.Begin(),
393 visualModel->mGlyphsToCharacters.Begin(),
394 visualModel->mCharactersPerGlyph.Begin(),
395 visualModel->mCharactersToGlyph.Begin(),
396 visualModel->mGlyphsPerCharacter.Begin(),
397 visualModel->mGlyphs.Count(),
398 Text::HorizontalAlignment::BEGIN,
399 Text::LineWrap::WORD,
404 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
405 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
407 engine.ReLayoutRightToLeftLines( layoutParameters,
409 data.numberOfCharacters,
410 visualModel->mGlyphPositions );
412 // 3) Compare the results.
413 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
415 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
417 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
421 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
423 const Vector2& position = *( glyphPositions.Begin() + index );
425 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
427 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
430 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
432 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
440 //////////////////////////////////////////////////////////
444 std::string description;
447 unsigned int numberOfFonts;
448 FontDescriptionRun* fontDescriptions;
449 Text::HorizontalAlignment::Type horizontalAlignment;
450 Text::VerticalAlignment::Type verticalAlignment;
451 unsigned int startIndex;
452 unsigned int numberOfCharacters;
453 unsigned int numberOfLines;
455 Dali::LayoutDirection::Type layoutDirection;
456 bool matchSystemLanguageDirection;
459 bool AlignTest( const AlignData& data )
462 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
463 fontClient.SetDpi( 96u, 96u );
465 char* pathNamePtr = get_current_dir_name();
466 const std::string pathName( pathNamePtr );
469 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
470 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
471 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
473 // 1) Create the model.
474 LogicalModelPtr logicalModel;
475 VisualModelPtr visualModel;
479 Vector<FontDescriptionRun> fontDescriptionRuns;
480 if( 0u != data.numberOfFonts )
482 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
483 data.fontDescriptions,
484 data.fontDescriptions + data.numberOfFonts );
487 LayoutOptions options;
488 options.align = false;
489 CreateTextModel( data.text,
499 // Call the Align method.
500 Layout::Engine engine;
501 engine.SetMetrics( metrics );
503 float alignmentOffset = 0.f;
504 engine.Align( data.textArea,
506 data.numberOfCharacters,
507 data.horizontalAlignment,
510 data.layoutDirection,
511 data.matchSystemLanguageDirection );
514 if( data.numberOfLines != visualModel->mLines.Count() )
516 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
520 const LineRun* const linesBuffer = visualModel->mLines.Begin();
521 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
523 const LineRun& line = *( linesBuffer + index );
525 if( line.alignmentOffset != *( data.lineOffsets + index ) )
527 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
536 //////////////////////////////////////////////////////////
538 // UtcDaliTextLayoutSetGetLayout
539 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
540 // UtcDaliTextLayoutSetGetHorizontalAlignment
541 // UtcDaliTextLayoutSetGetVerticalAlignment
542 // UtcDaliTextLayoutSetGetCursorWidth
543 // UtcDaliTextLayoutNoText
544 // UtcDaliTextLayoutSmallTextArea01
545 // UtcDaliTextLayoutSmallTextArea02
546 // UtcDaliTextLayoutMultilineText01
547 // UtcDaliTextLayoutMultilineText02
548 // UtcDaliTextLayoutMultilineText03
549 // UtcDaliTextLayoutMultilineText04
550 // UtcDaliTextLayoutMultilineText05
551 // UtcDaliTextUpdateLayout01
552 // UtcDaliTextUpdateLayout02
553 // UtcDaliTextUpdateLayout03
554 // UtcDaliTextLayoutEllipsis01
555 // UtcDaliTextLayoutEllipsis02
556 // UtcDaliTextLayoutEllipsis03
557 // UtcDaliTextLayoutEllipsis04
558 // UtcDaliTextLayoutEllipsis04
559 // UtcDaliTextReorderLayout01
560 // UtcDaliTextReorderLayout02
561 // UtcDaliTextReorderLayout03
562 // UtcDaliTextReorderLayout04
563 // UtcDaliTextAlign01
564 // UtcDaliTextAlign02
565 // UtcDaliTextAlign03
566 // UtcDaliTextAlign04
567 // UtcDaliTextAlign05
568 // UtcDaliTextAlign06
569 // UtcDaliTextAlign07
570 // UtcDaliTextAlign08
571 // UtcDaliTextAlign09
573 //////////////////////////////////////////////////////////
575 int UtcDaliTextLayoutSetGetLayout(void)
577 ToolkitTestApplication application;
578 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
580 Layout::Engine engine;
582 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
584 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
585 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
587 tet_result(TET_PASS);
591 int UtcDaliTextLayoutSetGetCursorWidth(void)
593 ToolkitTestApplication application;
596 Layout::Engine engine;
598 DALI_TEST_EQUALS( 0, engine.GetCursorWidth(), TEST_LOCATION );
600 engine.SetCursorWidth( 2 );
601 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
603 tet_result(TET_PASS);
607 int UtcDaliTextLayoutNoText(void)
609 ToolkitTestApplication application;
610 tet_infoline(" UtcDaliTextLayoutNoText");
612 Size textArea(100.f, 60.f);
613 Size layoutSize = Vector2::ZERO;
614 LayoutTextData data =
626 Layout::Engine::MULTI_LINE_BOX,
633 if( !LayoutTextTest( data ) )
635 tet_result(TET_FAIL);
638 tet_result(TET_PASS);
642 int UtcDaliTextLayoutSmallTextArea01(void)
644 ToolkitTestApplication application;
645 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
647 // Won't layout the text in multi-line if the width is too small.
649 const std::string fontFamily( "TizenSans" );
651 // Set a known font description
652 FontDescriptionRun fontDescriptionRun;
653 fontDescriptionRun.characterRun.characterIndex = 0u;
654 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
655 fontDescriptionRun.familyLength = fontFamily.size();
656 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
657 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
658 fontDescriptionRun.familyDefined = true;
659 fontDescriptionRun.weightDefined = false;
660 fontDescriptionRun.widthDefined = false;
661 fontDescriptionRun.slantDefined = false;
662 fontDescriptionRun.sizeDefined = false;
664 Vector<FontDescriptionRun> fontDescriptionRuns;
665 fontDescriptionRuns.PushBack( fontDescriptionRun );
666 Size textArea(1.f, 1.f);
667 Size layoutSize = Vector2::ZERO;
668 LayoutTextData data =
670 "Layout text in a small area",
674 fontDescriptionRuns.Begin(),
680 Layout::Engine::MULTI_LINE_BOX,
687 if( !LayoutTextTest( data ) )
689 tet_result(TET_FAIL);
692 tet_result(TET_PASS);
696 int UtcDaliTextLayoutSmallTextArea02(void)
698 ToolkitTestApplication application;
699 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
701 // Will layout the text in single line as it can be scrolled.
703 const std::string fontFamily( "TizenSans" );
705 // Set a known font description
706 FontDescriptionRun fontDescriptionRun;
707 fontDescriptionRun.characterRun.characterIndex = 0u;
708 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
709 fontDescriptionRun.familyLength = fontFamily.size();
710 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
711 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
712 fontDescriptionRun.familyDefined = true;
713 fontDescriptionRun.weightDefined = false;
714 fontDescriptionRun.widthDefined = false;
715 fontDescriptionRun.slantDefined = false;
716 fontDescriptionRun.sizeDefined = false;
718 Vector<FontDescriptionRun> fontDescriptionRuns;
719 fontDescriptionRuns.PushBack( fontDescriptionRun );
720 Size textArea(1.f, 1.f);
721 Size layoutSize(78.f, 19.f);
722 float positions[] = { 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f };
723 struct LineRun line =
736 Vector<LineRun> lines;
737 lines.PushBack( line );
739 LayoutTextData data =
741 "Layout text in a small area",
745 fontDescriptionRuns.Begin(),
751 Layout::Engine::SINGLE_LINE_BOX,
758 if( !LayoutTextTest( data ) )
760 tet_result(TET_FAIL);
763 tet_result(TET_PASS);
767 int UtcDaliTextLayoutMultilineText01(void)
769 ToolkitTestApplication application;
770 tet_infoline(" UtcDaliTextLayoutMultilineText01");
772 // Layout some lines of left to right text.
774 const std::string fontFamily( "TizenSans" );
776 // Set a known font description
777 FontDescriptionRun fontDescriptionRun1;
778 fontDescriptionRun1.characterRun.characterIndex = 0u;
779 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
780 fontDescriptionRun1.familyLength = fontFamily.size();
781 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
782 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
783 fontDescriptionRun1.familyDefined = true;
784 fontDescriptionRun1.weightDefined = false;
785 fontDescriptionRun1.widthDefined = false;
786 fontDescriptionRun1.slantDefined = false;
787 fontDescriptionRun1.sizeDefined = false;
789 FontDescriptionRun fontDescriptionRun2;
790 fontDescriptionRun2.characterRun.characterIndex = 18u;
791 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
792 fontDescriptionRun2.familyLength = fontFamily.size();
793 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
794 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
795 fontDescriptionRun2.familyDefined = true;
796 fontDescriptionRun2.weightDefined = false;
797 fontDescriptionRun2.widthDefined = false;
798 fontDescriptionRun2.slantDefined = false;
799 fontDescriptionRun2.sizeDefined = false;
801 Vector<FontDescriptionRun> fontDescriptionRuns;
802 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
803 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
804 Size textArea(100.f, 300.f);
805 Size layoutSize(91.f, 95.f);
808 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
809 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
810 0.f, -12.f, 8.f, -9.f, 16.f, -9.f, 26.f, -9.f, 35.f, -9.f, 44.f, -11.f, 50.f, -0.f,
811 0.f, -12.f, 10.f, -12.f, 14.f, -12.f, 25.f, -9.f, 34.f, -9.f, 40.f, -9.f, 49.f, -9.f, 58.f, -11.f, 64.f, -0.f,
812 0.f, -12.f, 4.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 34.f, -0.f, 40.f, -9.f, 49.f, -12.f, 53.f, -0.f, 58.f, -11.f, 65.f, -9.f, 74.f, -9.f, 82.f, -11.f, 90.f, -2.f
814 struct LineRun line0 =
827 struct LineRun line1 =
840 struct LineRun line2 =
853 struct LineRun line3 =
866 struct LineRun line4 =
879 Vector<LineRun> lines;
880 lines.PushBack( line0 );
881 lines.PushBack( line1 );
882 lines.PushBack( line2 );
883 lines.PushBack( line3 );
884 lines.PushBack( line4 );
886 LayoutTextData data =
888 "Layout simple multi-line text",
889 "Hello world demo.\n"
890 "Layout different lines of text.",
893 fontDescriptionRuns.Begin(),
899 Layout::Engine::MULTI_LINE_BOX,
906 if( !LayoutTextTest( data ) )
908 tet_result(TET_FAIL);
911 tet_result(TET_PASS);
915 int UtcDaliTextLayoutMultilineText02(void)
917 ToolkitTestApplication application;
918 tet_infoline(" UtcDaliTextLayoutMultilineText02");
920 // Layout some lines of bidirectional text.
922 const std::string fontFamily1( "TizenSans" );
924 // Set a known font description
925 FontDescriptionRun fontDescriptionRun1;
926 fontDescriptionRun1.characterRun.characterIndex = 0u;
927 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
928 fontDescriptionRun1.familyLength = fontFamily1.size();
929 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
930 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
931 fontDescriptionRun1.familyDefined = true;
932 fontDescriptionRun1.weightDefined = false;
933 fontDescriptionRun1.widthDefined = false;
934 fontDescriptionRun1.slantDefined = false;
935 fontDescriptionRun1.sizeDefined = false;
937 const std::string fontFamily2( "TizenSansHebrew" );
939 // Set a known font description
940 FontDescriptionRun fontDescriptionRun2;
941 fontDescriptionRun2.characterRun.characterIndex = 17u;
942 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
943 fontDescriptionRun2.familyLength = fontFamily2.size();
944 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
945 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
946 fontDescriptionRun2.familyDefined = true;
947 fontDescriptionRun2.weightDefined = false;
948 fontDescriptionRun2.widthDefined = false;
949 fontDescriptionRun2.slantDefined = false;
950 fontDescriptionRun2.sizeDefined = false;
952 const std::string fontFamily3( "TizenSans" );
954 // Set a known font description
955 FontDescriptionRun fontDescriptionRun3;
956 fontDescriptionRun3.characterRun.characterIndex = 26u;
957 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
958 fontDescriptionRun3.familyLength = fontFamily3.size();
959 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
960 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
961 fontDescriptionRun3.familyDefined = true;
962 fontDescriptionRun3.weightDefined = false;
963 fontDescriptionRun3.widthDefined = false;
964 fontDescriptionRun3.slantDefined = false;
965 fontDescriptionRun3.sizeDefined = false;
967 const std::string fontFamily4( "TizenSansHebrew" );
969 // Set a known font description
970 FontDescriptionRun fontDescriptionRun4;
971 fontDescriptionRun4.characterRun.characterIndex = 28u;
972 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
973 fontDescriptionRun4.familyLength = fontFamily4.size();
974 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
975 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
976 fontDescriptionRun4.familyDefined = true;
977 fontDescriptionRun4.weightDefined = false;
978 fontDescriptionRun4.widthDefined = false;
979 fontDescriptionRun4.slantDefined = false;
980 fontDescriptionRun4.sizeDefined = false;
982 const std::string fontFamily5( "TizenSans" );
984 // Set a known font description
985 FontDescriptionRun fontDescriptionRun5;
986 fontDescriptionRun5.characterRun.characterIndex = 38u;
987 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
988 fontDescriptionRun5.familyLength = fontFamily5.size();
989 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
990 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
991 fontDescriptionRun5.familyDefined = true;
992 fontDescriptionRun5.weightDefined = false;
993 fontDescriptionRun5.widthDefined = false;
994 fontDescriptionRun5.slantDefined = false;
995 fontDescriptionRun5.sizeDefined = false;
997 Vector<FontDescriptionRun> fontDescriptionRuns;
998 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
999 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1000 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1001 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
1002 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
1003 Size textArea(100.f, 300.f);
1004 Size layoutSize(78.f, 114.f);
1007 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
1008 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,
1009 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1010 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
1011 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
1012 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1014 struct LineRun line0 =
1027 struct LineRun line1 =
1040 struct LineRun line2 =
1053 struct LineRun line3 =
1066 struct LineRun line4 =
1079 struct LineRun line5 =
1092 Vector<LineRun> lines;
1093 lines.PushBack( line0 );
1094 lines.PushBack( line1 );
1095 lines.PushBack( line2 );
1096 lines.PushBack( line3 );
1097 lines.PushBack( line4 );
1098 lines.PushBack( line5 );
1100 LayoutTextData data =
1102 "Layout bidirectional text.",
1103 "Hello world demo שלום עולם.\n"
1104 "שלום עולם hello world demo.",
1107 fontDescriptionRuns.Begin(),
1113 Layout::Engine::MULTI_LINE_BOX,
1120 if( !LayoutTextTest( data ) )
1122 tet_result(TET_FAIL);
1125 tet_result(TET_PASS);
1129 int UtcDaliTextLayoutMultilineText03(void)
1131 ToolkitTestApplication application;
1132 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1134 // Layout a long word which doesn't fit in the width of the text area.
1136 const std::string fontFamily( "TizenSans" );
1138 // Set a known font description
1139 FontDescriptionRun fontDescriptionRun;
1140 fontDescriptionRun.characterRun.characterIndex = 0u;
1141 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1142 fontDescriptionRun.familyLength = fontFamily.size();
1143 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1144 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1145 fontDescriptionRun.familyDefined = true;
1146 fontDescriptionRun.weightDefined = false;
1147 fontDescriptionRun.widthDefined = false;
1148 fontDescriptionRun.slantDefined = false;
1149 fontDescriptionRun.sizeDefined = false;
1151 Vector<FontDescriptionRun> fontDescriptionRuns;
1152 fontDescriptionRuns.PushBack( fontDescriptionRun );
1153 Size textArea(100.f, 300.f);
1154 Size layoutSize(94.f, 57.f);
1157 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -9.f, 46.f, -9.f, 56.f, -9.f, 62.f, -13.f, 65.f, -13.f, 74.f, -13.f, 83.f, -9.f,
1158 0.f, -9.f, 12.f, -9.f, 22.f, -13.f, 30.f, -9.f, 39.f, -13.f, 43.f, -13.f, 46.f, -9.f, 55.f, -9.f, 66.f, -9.f, 76.f, -9.f, 82.f, -13.f, 85.f, -13.f,
1159 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1161 struct LineRun line0 =
1174 struct LineRun line1 =
1187 struct LineRun line2 =
1200 Vector<LineRun> lines;
1201 lines.PushBack( line0 );
1202 lines.PushBack( line1 );
1203 lines.PushBack( line2 );
1205 LayoutTextData data =
1207 "Layout a long word which doesn't fit in the width of the text area.",
1208 "Helloworlddemohelloworlddemo.",
1211 fontDescriptionRuns.Begin(),
1217 Layout::Engine::MULTI_LINE_BOX,
1224 if( !LayoutTextTest( data ) )
1226 tet_result(TET_FAIL);
1229 tet_result(TET_PASS);
1233 int UtcDaliTextLayoutMultilineText04(void)
1235 ToolkitTestApplication application;
1236 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1238 // Layout simple text ending with a \n. It has to add a void line at the end.
1240 const std::string fontFamily( "TizenSans" );
1242 // Set a known font description
1243 FontDescriptionRun fontDescriptionRun;
1244 fontDescriptionRun.characterRun.characterIndex = 0u;
1245 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1246 fontDescriptionRun.familyLength = fontFamily.size();
1247 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1248 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1249 fontDescriptionRun.familyDefined = true;
1250 fontDescriptionRun.weightDefined = false;
1251 fontDescriptionRun.widthDefined = false;
1252 fontDescriptionRun.slantDefined = false;
1253 fontDescriptionRun.sizeDefined = false;
1255 Vector<FontDescriptionRun> fontDescriptionRuns;
1256 fontDescriptionRuns.PushBack( fontDescriptionRun );
1257 Size textArea(100.f, 300.f);
1258 Size layoutSize(81.f, 38.f);
1261 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -2.f, 81.f, -12.f
1263 struct LineRun line0 =
1275 struct LineRun line1 =
1288 Vector<LineRun> lines;
1289 lines.PushBack( line0 );
1290 lines.PushBack( line1 );
1292 LayoutTextData data =
1294 "Layout simple text ending with a \n.",
1298 fontDescriptionRuns.Begin(),
1304 Layout::Engine::MULTI_LINE_BOX,
1311 if( !LayoutTextTest( data ) )
1313 tet_result(TET_FAIL);
1316 tet_result(TET_PASS);
1320 int UtcDaliTextLayoutMultilineText05(void)
1322 ToolkitTestApplication application;
1323 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1325 // Layout simple text with one character with a different font size.
1327 const std::string fontFamily( "TizenSans" );
1329 // Set a known font description
1330 FontDescriptionRun fontDescriptionRun1;
1331 fontDescriptionRun1.characterRun.characterIndex = 0u;
1332 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1333 fontDescriptionRun1.familyLength = fontFamily.size();
1334 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1335 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1336 fontDescriptionRun1.familyDefined = true;
1337 fontDescriptionRun1.weightDefined = false;
1338 fontDescriptionRun1.widthDefined = false;
1339 fontDescriptionRun1.slantDefined = false;
1340 fontDescriptionRun1.sizeDefined = false;
1342 FontDescriptionRun fontDescriptionRun2;
1343 fontDescriptionRun2.characterRun.characterIndex = 6u;
1344 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1345 fontDescriptionRun2.familyLength = fontFamily.size();
1346 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1347 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1348 fontDescriptionRun2.size = 1280u;
1349 fontDescriptionRun2.familyDefined = true;
1350 fontDescriptionRun2.weightDefined = false;
1351 fontDescriptionRun2.widthDefined = false;
1352 fontDescriptionRun2.slantDefined = false;
1353 fontDescriptionRun2.sizeDefined = true;
1355 FontDescriptionRun fontDescriptionRun3;
1356 fontDescriptionRun3.characterRun.characterIndex = 7u;
1357 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1358 fontDescriptionRun3.familyLength = fontFamily.size();
1359 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1360 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1361 fontDescriptionRun3.familyDefined = true;
1362 fontDescriptionRun3.weightDefined = false;
1363 fontDescriptionRun3.widthDefined = false;
1364 fontDescriptionRun3.slantDefined = false;
1365 fontDescriptionRun3.sizeDefined = false;
1367 Vector<FontDescriptionRun> fontDescriptionRuns;
1368 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1369 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1370 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1371 Size textArea(100.f, 300.f);
1372 Size layoutSize(87.f, 51.f);
1375 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1376 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1378 struct LineRun line0 =
1391 struct LineRun line1 =
1404 Vector<LineRun> lines;
1405 lines.PushBack( line0 );
1406 lines.PushBack( line1 );
1408 LayoutTextData data =
1410 "Layout simple text with one character with a different font size.",
1411 "Hello world demo.",
1414 fontDescriptionRuns.Begin(),
1420 Layout::Engine::MULTI_LINE_BOX,
1427 if( !LayoutTextTest( data ) )
1429 tet_result(TET_FAIL);
1432 tet_result(TET_PASS);
1436 int UtcDaliTextUpdateLayout01(void)
1438 ToolkitTestApplication application;
1439 tet_infoline(" UtcDaliTextUpdateLayout01");
1441 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1443 const std::string fontLatin( "TizenSans" );
1444 const std::string fontHebrew( "TizenSansHebrew" );
1445 const std::string fontArabic( "TizenSansArabic" );
1447 // Set a known font description
1448 FontDescriptionRun fontDescriptionRun01;
1449 fontDescriptionRun01.characterRun.characterIndex = 0u;
1450 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1451 fontDescriptionRun01.familyLength = fontLatin.size();
1452 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1453 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1454 fontDescriptionRun01.familyDefined = true;
1455 fontDescriptionRun01.weightDefined = false;
1456 fontDescriptionRun01.widthDefined = false;
1457 fontDescriptionRun01.slantDefined = false;
1458 fontDescriptionRun01.sizeDefined = false;
1460 // Set a known font description
1461 FontDescriptionRun fontDescriptionRun02;
1462 fontDescriptionRun02.characterRun.characterIndex = 17u;
1463 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1464 fontDescriptionRun02.familyLength = fontHebrew.size();
1465 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1466 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1467 fontDescriptionRun02.familyDefined = true;
1468 fontDescriptionRun02.weightDefined = false;
1469 fontDescriptionRun02.widthDefined = false;
1470 fontDescriptionRun02.slantDefined = false;
1471 fontDescriptionRun02.sizeDefined = false;
1473 // Set a known font description
1474 FontDescriptionRun fontDescriptionRun03;
1475 fontDescriptionRun03.characterRun.characterIndex = 26u;
1476 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1477 fontDescriptionRun03.familyLength = fontLatin.size();
1478 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1479 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1480 fontDescriptionRun03.familyDefined = true;
1481 fontDescriptionRun03.weightDefined = false;
1482 fontDescriptionRun03.widthDefined = false;
1483 fontDescriptionRun03.slantDefined = false;
1484 fontDescriptionRun03.sizeDefined = false;
1486 // Set a known font description
1487 FontDescriptionRun fontDescriptionRun04;
1488 fontDescriptionRun04.characterRun.characterIndex = 28u;
1489 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1490 fontDescriptionRun04.familyLength = fontArabic.size();
1491 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1492 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1493 fontDescriptionRun04.familyDefined = true;
1494 fontDescriptionRun04.weightDefined = false;
1495 fontDescriptionRun04.widthDefined = false;
1496 fontDescriptionRun04.slantDefined = false;
1497 fontDescriptionRun04.sizeDefined = false;
1499 // Set a known font description
1500 FontDescriptionRun fontDescriptionRun05;
1501 fontDescriptionRun05.characterRun.characterIndex = 42u;
1502 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1503 fontDescriptionRun05.familyLength = fontLatin.size();
1504 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1505 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1506 fontDescriptionRun05.familyDefined = true;
1507 fontDescriptionRun05.weightDefined = false;
1508 fontDescriptionRun05.widthDefined = false;
1509 fontDescriptionRun05.slantDefined = false;
1510 fontDescriptionRun05.sizeDefined = false;
1512 // Set a known font description
1513 FontDescriptionRun fontDescriptionRun06;
1514 fontDescriptionRun06.characterRun.characterIndex = 54u;
1515 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1516 fontDescriptionRun06.familyLength = fontHebrew.size();
1517 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1518 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1519 fontDescriptionRun06.familyDefined = true;
1520 fontDescriptionRun06.weightDefined = false;
1521 fontDescriptionRun06.widthDefined = false;
1522 fontDescriptionRun06.slantDefined = false;
1523 fontDescriptionRun06.sizeDefined = false;
1525 // Set a known font description
1526 FontDescriptionRun fontDescriptionRun07;
1527 fontDescriptionRun07.characterRun.characterIndex = 64u;
1528 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1529 fontDescriptionRun07.familyLength = fontHebrew.size();
1530 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1531 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1532 fontDescriptionRun07.familyDefined = true;
1533 fontDescriptionRun07.weightDefined = false;
1534 fontDescriptionRun07.widthDefined = false;
1535 fontDescriptionRun07.slantDefined = false;
1536 fontDescriptionRun07.sizeDefined = false;
1538 // Set a known font description
1539 FontDescriptionRun fontDescriptionRun08;
1540 fontDescriptionRun08.characterRun.characterIndex = 74u;
1541 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1542 fontDescriptionRun08.familyLength = fontLatin.size();
1543 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1544 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1545 fontDescriptionRun08.familyDefined = true;
1546 fontDescriptionRun08.weightDefined = false;
1547 fontDescriptionRun08.widthDefined = false;
1548 fontDescriptionRun08.slantDefined = false;
1549 fontDescriptionRun08.sizeDefined = false;
1551 // Set a known font description
1552 FontDescriptionRun fontDescriptionRun09;
1553 fontDescriptionRun09.characterRun.characterIndex = 92u;
1554 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1555 fontDescriptionRun09.familyLength = fontLatin.size();
1556 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1557 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1558 fontDescriptionRun09.familyDefined = true;
1559 fontDescriptionRun09.weightDefined = false;
1560 fontDescriptionRun09.widthDefined = false;
1561 fontDescriptionRun09.slantDefined = false;
1562 fontDescriptionRun09.sizeDefined = false;
1564 // Set a known font description
1565 FontDescriptionRun fontDescriptionRun10;
1566 fontDescriptionRun10.characterRun.characterIndex = 104u;
1567 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1568 fontDescriptionRun10.familyLength = fontArabic.size();
1569 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1570 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1571 fontDescriptionRun10.familyDefined = true;
1572 fontDescriptionRun10.weightDefined = false;
1573 fontDescriptionRun10.widthDefined = false;
1574 fontDescriptionRun10.slantDefined = false;
1575 fontDescriptionRun10.sizeDefined = false;
1577 // Set a known font description
1578 FontDescriptionRun fontDescriptionRun11;
1579 fontDescriptionRun11.characterRun.characterIndex = 118u;
1580 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1581 fontDescriptionRun11.familyLength = fontHebrew.size();
1582 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1583 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1584 fontDescriptionRun11.familyDefined = true;
1585 fontDescriptionRun11.weightDefined = false;
1586 fontDescriptionRun11.widthDefined = false;
1587 fontDescriptionRun11.slantDefined = false;
1588 fontDescriptionRun11.sizeDefined = false;
1590 // Set a known font description
1591 FontDescriptionRun fontDescriptionRun12;
1592 fontDescriptionRun12.characterRun.characterIndex = 128u;
1593 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1594 fontDescriptionRun12.familyLength = fontLatin.size();
1595 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1596 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1597 fontDescriptionRun12.familyDefined = true;
1598 fontDescriptionRun12.weightDefined = false;
1599 fontDescriptionRun12.widthDefined = false;
1600 fontDescriptionRun12.slantDefined = false;
1601 fontDescriptionRun12.sizeDefined = false;
1603 // Set a known font description
1604 FontDescriptionRun fontDescriptionRun13;
1605 fontDescriptionRun13.characterRun.characterIndex = 145u;
1606 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1607 fontDescriptionRun13.familyLength = fontHebrew.size();
1608 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1609 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1610 fontDescriptionRun13.familyDefined = true;
1611 fontDescriptionRun13.weightDefined = false;
1612 fontDescriptionRun13.widthDefined = false;
1613 fontDescriptionRun13.slantDefined = false;
1614 fontDescriptionRun13.sizeDefined = false;
1616 // Set a known font description
1617 FontDescriptionRun fontDescriptionRun14;
1618 fontDescriptionRun14.characterRun.characterIndex = 154u;
1619 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1620 fontDescriptionRun14.familyLength = fontLatin.size();
1621 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1622 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1623 fontDescriptionRun14.familyDefined = true;
1624 fontDescriptionRun14.weightDefined = false;
1625 fontDescriptionRun14.widthDefined = false;
1626 fontDescriptionRun14.slantDefined = false;
1627 fontDescriptionRun14.sizeDefined = false;
1629 // Set a known font description
1630 FontDescriptionRun fontDescriptionRun15;
1631 fontDescriptionRun15.characterRun.characterIndex = 156u;
1632 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1633 fontDescriptionRun15.familyLength = fontHebrew.size();
1634 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1635 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1636 fontDescriptionRun15.familyDefined = true;
1637 fontDescriptionRun15.weightDefined = false;
1638 fontDescriptionRun15.widthDefined = false;
1639 fontDescriptionRun15.slantDefined = false;
1640 fontDescriptionRun15.sizeDefined = false;
1642 // Set a known font description
1643 FontDescriptionRun fontDescriptionRun16;
1644 fontDescriptionRun16.characterRun.characterIndex = 166u;
1645 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1646 fontDescriptionRun16.familyLength = fontLatin.size();
1647 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1648 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1649 fontDescriptionRun16.familyDefined = true;
1650 fontDescriptionRun16.weightDefined = false;
1651 fontDescriptionRun16.widthDefined = false;
1652 fontDescriptionRun16.slantDefined = false;
1653 fontDescriptionRun16.sizeDefined = false;
1655 // Set a known font description
1656 FontDescriptionRun fontDescriptionRun17;
1657 fontDescriptionRun17.characterRun.characterIndex = 178u;
1658 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1659 fontDescriptionRun17.familyLength = fontArabic.size();
1660 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1661 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1662 fontDescriptionRun17.familyDefined = true;
1663 fontDescriptionRun17.weightDefined = false;
1664 fontDescriptionRun17.widthDefined = false;
1665 fontDescriptionRun17.slantDefined = false;
1666 fontDescriptionRun17.sizeDefined = false;
1668 Vector<FontDescriptionRun> fontDescriptionRuns;
1669 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1675 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1676 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1677 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1678 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1679 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1680 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1681 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1682 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1683 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1684 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1685 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1686 Size textArea(100.f, 300.f);
1687 Size layoutSize(92.f, 361.f);
1690 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
1691 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,
1692 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1693 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,
1694 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,
1695 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1696 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
1697 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
1698 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1699 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
1700 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,
1701 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1702 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
1703 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,
1704 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1705 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
1706 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
1707 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,
1710 struct LineRun line01 =
1723 struct LineRun line02 =
1736 struct LineRun line03 =
1749 struct LineRun line04 =
1762 struct LineRun line05 =
1775 struct LineRun line06 =
1788 struct LineRun line07 =
1801 struct LineRun line08 =
1814 struct LineRun line09 =
1827 struct LineRun line10 =
1840 struct LineRun line11 =
1853 struct LineRun line12 =
1866 struct LineRun line13 =
1879 struct LineRun line14 =
1892 struct LineRun line15 =
1905 struct LineRun line16 =
1918 struct LineRun line17 =
1931 struct LineRun line18 =
1944 struct LineRun line19 =
1957 Vector<LineRun> lines;
1958 lines.PushBack( line01 );
1959 lines.PushBack( line02 );
1960 lines.PushBack( line03 );
1961 lines.PushBack( line04 );
1962 lines.PushBack( line05 );
1963 lines.PushBack( line06 );
1964 lines.PushBack( line07 );
1965 lines.PushBack( line08 );
1966 lines.PushBack( line09 );
1967 lines.PushBack( line10 );
1968 lines.PushBack( line11 );
1969 lines.PushBack( line12 );
1970 lines.PushBack( line13 );
1971 lines.PushBack( line14 );
1972 lines.PushBack( line15 );
1973 lines.PushBack( line16 );
1974 lines.PushBack( line17 );
1975 lines.PushBack( line18 );
1976 lines.PushBack( line19 );
1978 LayoutTextData data =
1980 "Layout bidirectional text.",
1981 "Hello world demo שלום עולם.\n"
1982 "مرحبا بالعالم hello world שלום עולם\n"
1983 "שלום עולם hello world demo.\n"
1984 "hello world مرحبا بالعالم שלום עולם\n"
1985 "Hello world demo שלום עולם.\n"
1986 "שלום עולם hello world مرحبا بالعالم\n",
1989 fontDescriptionRuns.Begin(),
1995 Layout::Engine::MULTI_LINE_BOX,
2002 if( !LayoutTextTest( data ) )
2004 tet_result(TET_FAIL);
2007 tet_result(TET_PASS);
2011 int UtcDaliTextUpdateLayout02(void)
2013 ToolkitTestApplication application;
2014 tet_infoline(" UtcDaliTextUpdateLayout02");
2016 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2018 const std::string fontLatin( "TizenSans" );
2019 const std::string fontHebrew( "TizenSansHebrew" );
2020 const std::string fontArabic( "TizenSansArabic" );
2022 // Set a known font description
2023 FontDescriptionRun fontDescriptionRun01;
2024 fontDescriptionRun01.characterRun.characterIndex = 0u;
2025 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2026 fontDescriptionRun01.familyLength = fontLatin.size();
2027 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2028 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2029 fontDescriptionRun01.familyDefined = true;
2030 fontDescriptionRun01.weightDefined = false;
2031 fontDescriptionRun01.widthDefined = false;
2032 fontDescriptionRun01.slantDefined = false;
2033 fontDescriptionRun01.sizeDefined = false;
2035 // Set a known font description
2036 FontDescriptionRun fontDescriptionRun02;
2037 fontDescriptionRun02.characterRun.characterIndex = 17u;
2038 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2039 fontDescriptionRun02.familyLength = fontHebrew.size();
2040 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2041 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2042 fontDescriptionRun02.familyDefined = true;
2043 fontDescriptionRun02.weightDefined = false;
2044 fontDescriptionRun02.widthDefined = false;
2045 fontDescriptionRun02.slantDefined = false;
2046 fontDescriptionRun02.sizeDefined = false;
2048 // Set a known font description
2049 FontDescriptionRun fontDescriptionRun03;
2050 fontDescriptionRun03.characterRun.characterIndex = 26u;
2051 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2052 fontDescriptionRun03.familyLength = fontLatin.size();
2053 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2054 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2055 fontDescriptionRun03.familyDefined = true;
2056 fontDescriptionRun03.weightDefined = false;
2057 fontDescriptionRun03.widthDefined = false;
2058 fontDescriptionRun03.slantDefined = false;
2059 fontDescriptionRun03.sizeDefined = false;
2061 // Set a known font description
2062 FontDescriptionRun fontDescriptionRun04;
2063 fontDescriptionRun04.characterRun.characterIndex = 28u;
2064 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2065 fontDescriptionRun04.familyLength = fontArabic.size();
2066 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2067 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2068 fontDescriptionRun04.familyDefined = true;
2069 fontDescriptionRun04.weightDefined = false;
2070 fontDescriptionRun04.widthDefined = false;
2071 fontDescriptionRun04.slantDefined = false;
2072 fontDescriptionRun04.sizeDefined = false;
2074 // Set a known font description
2075 FontDescriptionRun fontDescriptionRun05;
2076 fontDescriptionRun05.characterRun.characterIndex = 42u;
2077 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2078 fontDescriptionRun05.familyLength = fontLatin.size();
2079 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2080 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2081 fontDescriptionRun05.familyDefined = true;
2082 fontDescriptionRun05.weightDefined = false;
2083 fontDescriptionRun05.widthDefined = false;
2084 fontDescriptionRun05.slantDefined = false;
2085 fontDescriptionRun05.sizeDefined = false;
2087 // Set a known font description
2088 FontDescriptionRun fontDescriptionRun06;
2089 fontDescriptionRun06.characterRun.characterIndex = 54u;
2090 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2091 fontDescriptionRun06.familyLength = fontHebrew.size();
2092 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2093 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2094 fontDescriptionRun06.familyDefined = true;
2095 fontDescriptionRun06.weightDefined = false;
2096 fontDescriptionRun06.widthDefined = false;
2097 fontDescriptionRun06.slantDefined = false;
2098 fontDescriptionRun06.sizeDefined = false;
2100 // Set a known font description
2101 FontDescriptionRun fontDescriptionRun07;
2102 fontDescriptionRun07.characterRun.characterIndex = 64u;
2103 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2104 fontDescriptionRun07.familyLength = fontHebrew.size();
2105 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2106 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2107 fontDescriptionRun07.familyDefined = true;
2108 fontDescriptionRun07.weightDefined = false;
2109 fontDescriptionRun07.widthDefined = false;
2110 fontDescriptionRun07.slantDefined = false;
2111 fontDescriptionRun07.sizeDefined = false;
2113 // Set a known font description
2114 FontDescriptionRun fontDescriptionRun08;
2115 fontDescriptionRun08.characterRun.characterIndex = 74u;
2116 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2117 fontDescriptionRun08.familyLength = fontLatin.size();
2118 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2119 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2120 fontDescriptionRun08.familyDefined = true;
2121 fontDescriptionRun08.weightDefined = false;
2122 fontDescriptionRun08.widthDefined = false;
2123 fontDescriptionRun08.slantDefined = false;
2124 fontDescriptionRun08.sizeDefined = false;
2126 // Set a known font description
2127 FontDescriptionRun fontDescriptionRun09;
2128 fontDescriptionRun09.characterRun.characterIndex = 92u;
2129 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2130 fontDescriptionRun09.familyLength = fontLatin.size();
2131 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2132 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2133 fontDescriptionRun09.familyDefined = true;
2134 fontDescriptionRun09.weightDefined = false;
2135 fontDescriptionRun09.widthDefined = false;
2136 fontDescriptionRun09.slantDefined = false;
2137 fontDescriptionRun09.sizeDefined = false;
2139 // Set a known font description
2140 FontDescriptionRun fontDescriptionRun10;
2141 fontDescriptionRun10.characterRun.characterIndex = 104u;
2142 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2143 fontDescriptionRun10.familyLength = fontArabic.size();
2144 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2145 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2146 fontDescriptionRun10.familyDefined = true;
2147 fontDescriptionRun10.weightDefined = false;
2148 fontDescriptionRun10.widthDefined = false;
2149 fontDescriptionRun10.slantDefined = false;
2150 fontDescriptionRun10.sizeDefined = false;
2152 // Set a known font description
2153 FontDescriptionRun fontDescriptionRun11;
2154 fontDescriptionRun11.characterRun.characterIndex = 118u;
2155 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2156 fontDescriptionRun11.familyLength = fontHebrew.size();
2157 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2158 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2159 fontDescriptionRun11.familyDefined = true;
2160 fontDescriptionRun11.weightDefined = false;
2161 fontDescriptionRun11.widthDefined = false;
2162 fontDescriptionRun11.slantDefined = false;
2163 fontDescriptionRun11.sizeDefined = false;
2165 // Set a known font description
2166 FontDescriptionRun fontDescriptionRun12;
2167 fontDescriptionRun12.characterRun.characterIndex = 128u;
2168 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2169 fontDescriptionRun12.familyLength = fontLatin.size();
2170 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2171 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2172 fontDescriptionRun12.familyDefined = true;
2173 fontDescriptionRun12.weightDefined = false;
2174 fontDescriptionRun12.widthDefined = false;
2175 fontDescriptionRun12.slantDefined = false;
2176 fontDescriptionRun12.sizeDefined = false;
2178 // Set a known font description
2179 FontDescriptionRun fontDescriptionRun13;
2180 fontDescriptionRun13.characterRun.characterIndex = 145u;
2181 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2182 fontDescriptionRun13.familyLength = fontHebrew.size();
2183 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2184 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2185 fontDescriptionRun13.familyDefined = true;
2186 fontDescriptionRun13.weightDefined = false;
2187 fontDescriptionRun13.widthDefined = false;
2188 fontDescriptionRun13.slantDefined = false;
2189 fontDescriptionRun13.sizeDefined = false;
2191 // Set a known font description
2192 FontDescriptionRun fontDescriptionRun14;
2193 fontDescriptionRun14.characterRun.characterIndex = 154u;
2194 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2195 fontDescriptionRun14.familyLength = fontLatin.size();
2196 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2197 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2198 fontDescriptionRun14.familyDefined = true;
2199 fontDescriptionRun14.weightDefined = false;
2200 fontDescriptionRun14.widthDefined = false;
2201 fontDescriptionRun14.slantDefined = false;
2202 fontDescriptionRun14.sizeDefined = false;
2204 // Set a known font description
2205 FontDescriptionRun fontDescriptionRun15;
2206 fontDescriptionRun15.characterRun.characterIndex = 156u;
2207 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2208 fontDescriptionRun15.familyLength = fontHebrew.size();
2209 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2210 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2211 fontDescriptionRun15.familyDefined = true;
2212 fontDescriptionRun15.weightDefined = false;
2213 fontDescriptionRun15.widthDefined = false;
2214 fontDescriptionRun15.slantDefined = false;
2215 fontDescriptionRun15.sizeDefined = false;
2217 // Set a known font description
2218 FontDescriptionRun fontDescriptionRun16;
2219 fontDescriptionRun16.characterRun.characterIndex = 166u;
2220 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2221 fontDescriptionRun16.familyLength = fontLatin.size();
2222 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2223 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2224 fontDescriptionRun16.familyDefined = true;
2225 fontDescriptionRun16.weightDefined = false;
2226 fontDescriptionRun16.widthDefined = false;
2227 fontDescriptionRun16.slantDefined = false;
2228 fontDescriptionRun16.sizeDefined = false;
2230 // Set a known font description
2231 FontDescriptionRun fontDescriptionRun17;
2232 fontDescriptionRun17.characterRun.characterIndex = 178u;
2233 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2234 fontDescriptionRun17.familyLength = fontArabic.size();
2235 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2236 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2237 fontDescriptionRun17.familyDefined = true;
2238 fontDescriptionRun17.weightDefined = false;
2239 fontDescriptionRun17.widthDefined = false;
2240 fontDescriptionRun17.slantDefined = false;
2241 fontDescriptionRun17.sizeDefined = false;
2243 Vector<FontDescriptionRun> fontDescriptionRuns;
2244 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2251 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2252 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2253 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2254 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2255 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2256 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2257 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2258 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2259 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2260 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2261 Size textArea(100.f, 300.f);
2262 Size layoutSize(92.f, 361.f);
2265 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
2266 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,
2267 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2268 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,
2269 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,
2270 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2271 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
2272 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2273 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2274 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2275 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,
2276 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2277 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
2278 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,
2279 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2280 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
2281 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2282 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,
2285 struct LineRun line01 =
2298 struct LineRun line02 =
2311 struct LineRun line03 =
2324 struct LineRun line04 =
2337 struct LineRun line05 =
2350 struct LineRun line06 =
2363 struct LineRun line07 =
2376 struct LineRun line08 =
2389 struct LineRun line09 =
2402 struct LineRun line10 =
2415 struct LineRun line11 =
2428 struct LineRun line12 =
2441 struct LineRun line13 =
2454 struct LineRun line14 =
2467 struct LineRun line15 =
2480 struct LineRun line16 =
2493 struct LineRun line17 =
2506 struct LineRun line18 =
2519 struct LineRun line19 =
2532 Vector<LineRun> lines;
2533 lines.PushBack( line01 );
2534 lines.PushBack( line02 );
2535 lines.PushBack( line03 );
2536 lines.PushBack( line04 );
2537 lines.PushBack( line05 );
2538 lines.PushBack( line06 );
2539 lines.PushBack( line07 );
2540 lines.PushBack( line08 );
2541 lines.PushBack( line09 );
2542 lines.PushBack( line10 );
2543 lines.PushBack( line11 );
2544 lines.PushBack( line12 );
2545 lines.PushBack( line13 );
2546 lines.PushBack( line14 );
2547 lines.PushBack( line15 );
2548 lines.PushBack( line16 );
2549 lines.PushBack( line17 );
2550 lines.PushBack( line18 );
2551 lines.PushBack( line19 );
2553 LayoutTextData data =
2555 "Layout bidirectional text.",
2556 "Hello world demo שלום עולם.\n"
2557 "مرحبا بالعالم hello world שלום עולם\n"
2558 "שלום עולם hello world demo.\n"
2559 "hello world مرحبا بالعالم שלום עולם\n"
2560 "Hello world demo שלום עולם.\n"
2561 "שלום עולם hello world مرحبا بالعالم\n",
2564 fontDescriptionRuns.Begin(),
2570 Layout::Engine::MULTI_LINE_BOX,
2577 if( !LayoutTextTest( data ) )
2579 tet_result(TET_FAIL);
2582 tet_result(TET_PASS);
2586 int UtcDaliTextUpdateLayout03(void)
2588 ToolkitTestApplication application;
2589 tet_infoline(" UtcDaliTextUpdateLayout03");
2591 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2593 const std::string fontLatin( "TizenSans" );
2594 const std::string fontHebrew( "TizenSansHebrew" );
2595 const std::string fontArabic( "TizenSansArabic" );
2597 // Set a known font description
2598 FontDescriptionRun fontDescriptionRun01;
2599 fontDescriptionRun01.characterRun.characterIndex = 0u;
2600 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2601 fontDescriptionRun01.familyLength = fontLatin.size();
2602 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2603 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2604 fontDescriptionRun01.familyDefined = true;
2605 fontDescriptionRun01.weightDefined = false;
2606 fontDescriptionRun01.widthDefined = false;
2607 fontDescriptionRun01.slantDefined = false;
2608 fontDescriptionRun01.sizeDefined = false;
2610 // Set a known font description
2611 FontDescriptionRun fontDescriptionRun02;
2612 fontDescriptionRun02.characterRun.characterIndex = 17u;
2613 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2614 fontDescriptionRun02.familyLength = fontHebrew.size();
2615 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2616 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2617 fontDescriptionRun02.familyDefined = true;
2618 fontDescriptionRun02.weightDefined = false;
2619 fontDescriptionRun02.widthDefined = false;
2620 fontDescriptionRun02.slantDefined = false;
2621 fontDescriptionRun02.sizeDefined = false;
2623 // Set a known font description
2624 FontDescriptionRun fontDescriptionRun03;
2625 fontDescriptionRun03.characterRun.characterIndex = 26u;
2626 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2627 fontDescriptionRun03.familyLength = fontLatin.size();
2628 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2629 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2630 fontDescriptionRun03.familyDefined = true;
2631 fontDescriptionRun03.weightDefined = false;
2632 fontDescriptionRun03.widthDefined = false;
2633 fontDescriptionRun03.slantDefined = false;
2634 fontDescriptionRun03.sizeDefined = false;
2636 // Set a known font description
2637 FontDescriptionRun fontDescriptionRun04;
2638 fontDescriptionRun04.characterRun.characterIndex = 28u;
2639 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2640 fontDescriptionRun04.familyLength = fontArabic.size();
2641 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2642 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2643 fontDescriptionRun04.familyDefined = true;
2644 fontDescriptionRun04.weightDefined = false;
2645 fontDescriptionRun04.widthDefined = false;
2646 fontDescriptionRun04.slantDefined = false;
2647 fontDescriptionRun04.sizeDefined = false;
2649 // Set a known font description
2650 FontDescriptionRun fontDescriptionRun05;
2651 fontDescriptionRun05.characterRun.characterIndex = 42u;
2652 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2653 fontDescriptionRun05.familyLength = fontLatin.size();
2654 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2655 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2656 fontDescriptionRun05.familyDefined = true;
2657 fontDescriptionRun05.weightDefined = false;
2658 fontDescriptionRun05.widthDefined = false;
2659 fontDescriptionRun05.slantDefined = false;
2660 fontDescriptionRun05.sizeDefined = false;
2662 // Set a known font description
2663 FontDescriptionRun fontDescriptionRun06;
2664 fontDescriptionRun06.characterRun.characterIndex = 54u;
2665 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2666 fontDescriptionRun06.familyLength = fontHebrew.size();
2667 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2668 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2669 fontDescriptionRun06.familyDefined = true;
2670 fontDescriptionRun06.weightDefined = false;
2671 fontDescriptionRun06.widthDefined = false;
2672 fontDescriptionRun06.slantDefined = false;
2673 fontDescriptionRun06.sizeDefined = false;
2675 // Set a known font description
2676 FontDescriptionRun fontDescriptionRun07;
2677 fontDescriptionRun07.characterRun.characterIndex = 64u;
2678 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2679 fontDescriptionRun07.familyLength = fontHebrew.size();
2680 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2681 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2682 fontDescriptionRun07.familyDefined = true;
2683 fontDescriptionRun07.weightDefined = false;
2684 fontDescriptionRun07.widthDefined = false;
2685 fontDescriptionRun07.slantDefined = false;
2686 fontDescriptionRun07.sizeDefined = false;
2688 // Set a known font description
2689 FontDescriptionRun fontDescriptionRun08;
2690 fontDescriptionRun08.characterRun.characterIndex = 74u;
2691 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2692 fontDescriptionRun08.familyLength = fontLatin.size();
2693 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2694 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2695 fontDescriptionRun08.familyDefined = true;
2696 fontDescriptionRun08.weightDefined = false;
2697 fontDescriptionRun08.widthDefined = false;
2698 fontDescriptionRun08.slantDefined = false;
2699 fontDescriptionRun08.sizeDefined = false;
2701 // Set a known font description
2702 FontDescriptionRun fontDescriptionRun09;
2703 fontDescriptionRun09.characterRun.characterIndex = 92u;
2704 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2705 fontDescriptionRun09.familyLength = fontLatin.size();
2706 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2707 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2708 fontDescriptionRun09.familyDefined = true;
2709 fontDescriptionRun09.weightDefined = false;
2710 fontDescriptionRun09.widthDefined = false;
2711 fontDescriptionRun09.slantDefined = false;
2712 fontDescriptionRun09.sizeDefined = false;
2714 // Set a known font description
2715 FontDescriptionRun fontDescriptionRun10;
2716 fontDescriptionRun10.characterRun.characterIndex = 104u;
2717 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2718 fontDescriptionRun10.familyLength = fontArabic.size();
2719 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2720 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2721 fontDescriptionRun10.familyDefined = true;
2722 fontDescriptionRun10.weightDefined = false;
2723 fontDescriptionRun10.widthDefined = false;
2724 fontDescriptionRun10.slantDefined = false;
2725 fontDescriptionRun10.sizeDefined = false;
2727 // Set a known font description
2728 FontDescriptionRun fontDescriptionRun11;
2729 fontDescriptionRun11.characterRun.characterIndex = 118u;
2730 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2731 fontDescriptionRun11.familyLength = fontHebrew.size();
2732 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2733 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2734 fontDescriptionRun11.familyDefined = true;
2735 fontDescriptionRun11.weightDefined = false;
2736 fontDescriptionRun11.widthDefined = false;
2737 fontDescriptionRun11.slantDefined = false;
2738 fontDescriptionRun11.sizeDefined = false;
2740 // Set a known font description
2741 FontDescriptionRun fontDescriptionRun12;
2742 fontDescriptionRun12.characterRun.characterIndex = 128u;
2743 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2744 fontDescriptionRun12.familyLength = fontLatin.size();
2745 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2746 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2747 fontDescriptionRun12.familyDefined = true;
2748 fontDescriptionRun12.weightDefined = false;
2749 fontDescriptionRun12.widthDefined = false;
2750 fontDescriptionRun12.slantDefined = false;
2751 fontDescriptionRun12.sizeDefined = false;
2753 // Set a known font description
2754 FontDescriptionRun fontDescriptionRun13;
2755 fontDescriptionRun13.characterRun.characterIndex = 145u;
2756 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2757 fontDescriptionRun13.familyLength = fontHebrew.size();
2758 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2759 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2760 fontDescriptionRun13.familyDefined = true;
2761 fontDescriptionRun13.weightDefined = false;
2762 fontDescriptionRun13.widthDefined = false;
2763 fontDescriptionRun13.slantDefined = false;
2764 fontDescriptionRun13.sizeDefined = false;
2766 // Set a known font description
2767 FontDescriptionRun fontDescriptionRun14;
2768 fontDescriptionRun14.characterRun.characterIndex = 154u;
2769 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2770 fontDescriptionRun14.familyLength = fontLatin.size();
2771 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2772 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2773 fontDescriptionRun14.familyDefined = true;
2774 fontDescriptionRun14.weightDefined = false;
2775 fontDescriptionRun14.widthDefined = false;
2776 fontDescriptionRun14.slantDefined = false;
2777 fontDescriptionRun14.sizeDefined = false;
2779 // Set a known font description
2780 FontDescriptionRun fontDescriptionRun15;
2781 fontDescriptionRun15.characterRun.characterIndex = 156u;
2782 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2783 fontDescriptionRun15.familyLength = fontHebrew.size();
2784 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2785 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2786 fontDescriptionRun15.familyDefined = true;
2787 fontDescriptionRun15.weightDefined = false;
2788 fontDescriptionRun15.widthDefined = false;
2789 fontDescriptionRun15.slantDefined = false;
2790 fontDescriptionRun15.sizeDefined = false;
2792 // Set a known font description
2793 FontDescriptionRun fontDescriptionRun16;
2794 fontDescriptionRun16.characterRun.characterIndex = 166u;
2795 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2796 fontDescriptionRun16.familyLength = fontLatin.size();
2797 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2798 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2799 fontDescriptionRun16.familyDefined = true;
2800 fontDescriptionRun16.weightDefined = false;
2801 fontDescriptionRun16.widthDefined = false;
2802 fontDescriptionRun16.slantDefined = false;
2803 fontDescriptionRun16.sizeDefined = false;
2805 // Set a known font description
2806 FontDescriptionRun fontDescriptionRun17;
2807 fontDescriptionRun17.characterRun.characterIndex = 178u;
2808 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2809 fontDescriptionRun17.familyLength = fontArabic.size();
2810 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2811 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2812 fontDescriptionRun17.familyDefined = true;
2813 fontDescriptionRun17.weightDefined = false;
2814 fontDescriptionRun17.widthDefined = false;
2815 fontDescriptionRun17.slantDefined = false;
2816 fontDescriptionRun17.sizeDefined = false;
2818 Vector<FontDescriptionRun> fontDescriptionRuns;
2819 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2825 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2826 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2827 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2828 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2829 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2830 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2831 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2832 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2833 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2834 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2835 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2836 Size textArea(100.f, 300.f);
2837 Size layoutSize(92.f, 361.f);
2840 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
2841 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,
2842 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2843 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,
2844 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,
2845 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2846 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
2847 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2848 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2849 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2850 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,
2851 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2852 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
2853 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,
2854 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2855 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f,
2856 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 48.f, -9.f, 58.f, -9.f, 64.f, -13.f, 67.f, -13.f, 76.f, -0.f,
2857 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,
2860 struct LineRun line01 =
2873 struct LineRun line02 =
2886 struct LineRun line03 =
2899 struct LineRun line04 =
2912 struct LineRun line05 =
2925 struct LineRun line06 =
2938 struct LineRun line07 =
2951 struct LineRun line08 =
2964 struct LineRun line09 =
2977 struct LineRun line10 =
2990 struct LineRun line11 =
3003 struct LineRun line12 =
3016 struct LineRun line13 =
3029 struct LineRun line14 =
3042 struct LineRun line15 =
3055 struct LineRun line16 =
3068 struct LineRun line17 =
3081 struct LineRun line18 =
3094 struct LineRun line19 =
3107 Vector<LineRun> lines;
3108 lines.PushBack( line01 );
3109 lines.PushBack( line02 );
3110 lines.PushBack( line03 );
3111 lines.PushBack( line04 );
3112 lines.PushBack( line05 );
3113 lines.PushBack( line06 );
3114 lines.PushBack( line07 );
3115 lines.PushBack( line08 );
3116 lines.PushBack( line09 );
3117 lines.PushBack( line10 );
3118 lines.PushBack( line11 );
3119 lines.PushBack( line12 );
3120 lines.PushBack( line13 );
3121 lines.PushBack( line14 );
3122 lines.PushBack( line15 );
3123 lines.PushBack( line16 );
3124 lines.PushBack( line17 );
3125 lines.PushBack( line18 );
3126 lines.PushBack( line19 );
3128 LayoutTextData data =
3130 "Layout bidirectional text.",
3131 "Hello world demo שלום עולם.\n"
3132 "مرحبا بالعالم hello world שלום עולם\n"
3133 "שלום עולם hello world demo.\n"
3134 "hello world مرحبا بالعالم שלום עולם\n"
3135 "Hello world demo שלום עולם.\n"
3136 "שלום עולם hello world مرحبا بالعالم\n",
3139 fontDescriptionRuns.Begin(),
3145 Layout::Engine::MULTI_LINE_BOX,
3152 if( !LayoutTextTest( data ) )
3154 tet_result(TET_FAIL);
3157 tet_result(TET_PASS);
3161 int UtcDaliTextLayoutEllipsis01(void)
3163 ToolkitTestApplication application;
3164 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3166 // Layout single-line LTR text with ellipsis.
3168 const std::string fontLatin( "TizenSans" );
3170 // Set a known font description
3171 FontDescriptionRun fontDescriptionRun01;
3172 fontDescriptionRun01.characterRun.characterIndex = 0u;
3173 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3174 fontDescriptionRun01.familyLength = fontLatin.size();
3175 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3176 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3177 fontDescriptionRun01.familyDefined = true;
3178 fontDescriptionRun01.weightDefined = false;
3179 fontDescriptionRun01.widthDefined = false;
3180 fontDescriptionRun01.slantDefined = false;
3181 fontDescriptionRun01.sizeDefined = false;
3183 Vector<FontDescriptionRun> fontDescriptionRuns;
3184 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3186 struct LineRun line01 =
3199 Vector<LineRun> lines;
3200 lines.PushBack( line01 );
3204 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f, 82.f, -13.f,
3207 Size textArea( 100.f, 50.f );
3208 Size layoutSize( 100.f, 19.f );
3210 LayoutTextData data =
3212 "Layout single-line LTR text with ellipsis.",
3213 "Hello world demo hello world demo hello world demo.",
3216 fontDescriptionRuns.Begin(),
3222 Layout::Engine::SINGLE_LINE_BOX,
3229 if( !LayoutTextTest( data ) )
3231 tet_result(TET_FAIL);
3234 tet_result(TET_PASS);
3238 int UtcDaliTextLayoutEllipsis02(void)
3240 ToolkitTestApplication application;
3241 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3243 // Layout multi-line LTR text with ellipsis.
3245 const std::string fontLatin( "TizenSans" );
3247 // Set a known font description
3248 FontDescriptionRun fontDescriptionRun01;
3249 fontDescriptionRun01.characterRun.characterIndex = 0u;
3250 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3251 fontDescriptionRun01.familyLength = fontLatin.size();
3252 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3253 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3254 fontDescriptionRun01.familyDefined = true;
3255 fontDescriptionRun01.weightDefined = false;
3256 fontDescriptionRun01.widthDefined = false;
3257 fontDescriptionRun01.slantDefined = false;
3258 fontDescriptionRun01.sizeDefined = false;
3260 Vector<FontDescriptionRun> fontDescriptionRuns;
3261 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3263 struct LineRun line01 =
3276 struct LineRun line02 =
3289 Vector<LineRun> lines;
3290 lines.PushBack( line01 );
3291 lines.PushBack( line02 );
3295 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 78.f, -0.f,
3296 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,
3299 Size textArea( 100.f, 50.f );
3300 Size layoutSize( 100.f, 38.f );
3302 LayoutTextData data =
3304 "Layout multi-line LTR text with ellipsis.",
3305 "Hello world demo hello world demo hello world demo.",
3308 fontDescriptionRuns.Begin(),
3314 Layout::Engine::MULTI_LINE_BOX,
3321 if( !LayoutTextTest( data ) )
3323 tet_result(TET_FAIL);
3326 tet_result(TET_PASS);
3330 int UtcDaliTextLayoutEllipsis03(void)
3332 ToolkitTestApplication application;
3333 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3335 // Layout single-line RTL text with ellipsis.
3337 const std::string fontHebrew( "TizenSansHebrew" );
3338 const std::string fontArabic( "TizenSansArabic" );
3340 // Set a known font description
3341 FontDescriptionRun fontDescriptionRun01;
3342 fontDescriptionRun01.characterRun.characterIndex = 0u;
3343 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3344 fontDescriptionRun01.familyLength = fontHebrew.size();
3345 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3346 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3347 fontDescriptionRun01.familyDefined = true;
3348 fontDescriptionRun01.weightDefined = false;
3349 fontDescriptionRun01.widthDefined = false;
3350 fontDescriptionRun01.slantDefined = false;
3351 fontDescriptionRun01.sizeDefined = false;
3353 FontDescriptionRun fontDescriptionRun02;
3354 fontDescriptionRun02.characterRun.characterIndex = 10u;
3355 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3356 fontDescriptionRun02.familyLength = fontArabic.size();
3357 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3358 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3359 fontDescriptionRun02.familyDefined = true;
3360 fontDescriptionRun02.weightDefined = false;
3361 fontDescriptionRun02.widthDefined = false;
3362 fontDescriptionRun02.slantDefined = false;
3363 fontDescriptionRun02.sizeDefined = false;
3365 FontDescriptionRun fontDescriptionRun03;
3366 fontDescriptionRun03.characterRun.characterIndex = 24u;
3367 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3368 fontDescriptionRun03.familyLength = fontHebrew.size();
3369 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3370 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3371 fontDescriptionRun03.familyDefined = true;
3372 fontDescriptionRun03.weightDefined = false;
3373 fontDescriptionRun03.widthDefined = false;
3374 fontDescriptionRun03.slantDefined = false;
3375 fontDescriptionRun03.sizeDefined = false;
3377 FontDescriptionRun fontDescriptionRun04;
3378 fontDescriptionRun04.characterRun.characterIndex = 34u;
3379 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3380 fontDescriptionRun04.familyLength = fontArabic.size();
3381 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3382 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3383 fontDescriptionRun04.familyDefined = true;
3384 fontDescriptionRun04.weightDefined = false;
3385 fontDescriptionRun04.widthDefined = false;
3386 fontDescriptionRun04.slantDefined = false;
3387 fontDescriptionRun04.sizeDefined = false;
3389 FontDescriptionRun fontDescriptionRun05;
3390 fontDescriptionRun05.characterRun.characterIndex = 48u;
3391 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3392 fontDescriptionRun05.familyLength = fontHebrew.size();
3393 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3394 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3395 fontDescriptionRun05.familyDefined = true;
3396 fontDescriptionRun05.weightDefined = false;
3397 fontDescriptionRun05.widthDefined = false;
3398 fontDescriptionRun05.slantDefined = false;
3399 fontDescriptionRun05.sizeDefined = false;
3401 FontDescriptionRun fontDescriptionRun06;
3402 fontDescriptionRun06.characterRun.characterIndex = 58u;
3403 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3404 fontDescriptionRun06.familyLength = fontArabic.size();
3405 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3406 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3407 fontDescriptionRun06.familyDefined = true;
3408 fontDescriptionRun06.weightDefined = false;
3409 fontDescriptionRun06.widthDefined = false;
3410 fontDescriptionRun06.slantDefined = false;
3411 fontDescriptionRun06.sizeDefined = false;
3413 Vector<FontDescriptionRun> fontDescriptionRuns;
3414 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3415 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3416 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3417 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3418 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3419 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3421 struct LineRun line01 =
3434 Vector<LineRun> lines;
3435 lines.PushBack( line01 );
3439 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
3442 Size textArea( 100.f, 50.f );
3443 Size layoutSize( 100.f, 19.f );
3445 LayoutTextData data =
3447 "Layout single-line RTL text with ellipsis.",
3448 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3451 fontDescriptionRuns.Begin(),
3457 Layout::Engine::SINGLE_LINE_BOX,
3464 if( !LayoutTextTest( data ) )
3466 tet_result(TET_FAIL);
3469 tet_result(TET_PASS);
3473 int UtcDaliTextLayoutEllipsis04(void)
3475 ToolkitTestApplication application;
3476 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3478 // Layout multi-line RTL text with ellipsis.
3480 const std::string fontHebrew( "TizenSansHebrew" );
3481 const std::string fontArabic( "TizenSansArabic" );
3483 // Set a known font description
3484 FontDescriptionRun fontDescriptionRun01;
3485 fontDescriptionRun01.characterRun.characterIndex = 0u;
3486 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3487 fontDescriptionRun01.familyLength = fontHebrew.size();
3488 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3489 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3490 fontDescriptionRun01.familyDefined = true;
3491 fontDescriptionRun01.weightDefined = false;
3492 fontDescriptionRun01.widthDefined = false;
3493 fontDescriptionRun01.slantDefined = false;
3494 fontDescriptionRun01.sizeDefined = false;
3496 FontDescriptionRun fontDescriptionRun02;
3497 fontDescriptionRun02.characterRun.characterIndex = 10u;
3498 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3499 fontDescriptionRun02.familyLength = fontArabic.size();
3500 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3501 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3502 fontDescriptionRun02.familyDefined = true;
3503 fontDescriptionRun02.weightDefined = false;
3504 fontDescriptionRun02.widthDefined = false;
3505 fontDescriptionRun02.slantDefined = false;
3506 fontDescriptionRun02.sizeDefined = false;
3508 FontDescriptionRun fontDescriptionRun03;
3509 fontDescriptionRun03.characterRun.characterIndex = 24u;
3510 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3511 fontDescriptionRun03.familyLength = fontHebrew.size();
3512 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3513 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3514 fontDescriptionRun03.familyDefined = true;
3515 fontDescriptionRun03.weightDefined = false;
3516 fontDescriptionRun03.widthDefined = false;
3517 fontDescriptionRun03.slantDefined = false;
3518 fontDescriptionRun03.sizeDefined = false;
3520 FontDescriptionRun fontDescriptionRun04;
3521 fontDescriptionRun04.characterRun.characterIndex = 34u;
3522 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3523 fontDescriptionRun04.familyLength = fontArabic.size();
3524 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3525 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3526 fontDescriptionRun04.familyDefined = true;
3527 fontDescriptionRun04.weightDefined = false;
3528 fontDescriptionRun04.widthDefined = false;
3529 fontDescriptionRun04.slantDefined = false;
3530 fontDescriptionRun04.sizeDefined = false;
3532 FontDescriptionRun fontDescriptionRun05;
3533 fontDescriptionRun05.characterRun.characterIndex = 48u;
3534 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3535 fontDescriptionRun05.familyLength = fontHebrew.size();
3536 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3537 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3538 fontDescriptionRun05.familyDefined = true;
3539 fontDescriptionRun05.weightDefined = false;
3540 fontDescriptionRun05.widthDefined = false;
3541 fontDescriptionRun05.slantDefined = false;
3542 fontDescriptionRun05.sizeDefined = false;
3544 FontDescriptionRun fontDescriptionRun06;
3545 fontDescriptionRun06.characterRun.characterIndex = 58u;
3546 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3547 fontDescriptionRun06.familyLength = fontArabic.size();
3548 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3549 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3550 fontDescriptionRun06.familyDefined = true;
3551 fontDescriptionRun06.weightDefined = false;
3552 fontDescriptionRun06.widthDefined = false;
3553 fontDescriptionRun06.slantDefined = false;
3554 fontDescriptionRun06.sizeDefined = false;
3556 Vector<FontDescriptionRun> fontDescriptionRuns;
3557 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3558 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3559 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3560 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3561 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3562 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3564 struct LineRun line01 =
3577 struct LineRun line02 =
3590 Vector<LineRun> lines;
3591 lines.PushBack( line01 );
3592 lines.PushBack( line02 );
3596 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
3597 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,
3600 Size textArea( 100.f, 50.f );
3601 Size layoutSize( 100.f, 38.f );
3603 LayoutTextData data =
3605 "Layout single-line RTL text with ellipsis.",
3606 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3609 fontDescriptionRuns.Begin(),
3615 Layout::Engine::MULTI_LINE_BOX,
3622 if( !LayoutTextTest( data ) )
3624 tet_result(TET_FAIL);
3627 tet_result(TET_PASS);
3631 int UtcDaliTextLayoutEllipsis05(void)
3633 ToolkitTestApplication application;
3634 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3636 const std::string fontLatin( "TizenSans" );
3638 // Set a known font description
3639 FontDescriptionRun fontDescriptionRun01;
3640 fontDescriptionRun01.characterRun.characterIndex = 0u;
3641 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3642 fontDescriptionRun01.familyLength = fontLatin.size();
3643 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3644 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3645 fontDescriptionRun01.familyDefined = true;
3646 fontDescriptionRun01.weightDefined = false;
3647 fontDescriptionRun01.widthDefined = false;
3648 fontDescriptionRun01.slantDefined = false;
3649 fontDescriptionRun01.sizeDefined = false;
3651 Vector<FontDescriptionRun> fontDescriptionRuns;
3652 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3654 struct LineRun line01 =
3667 Vector<LineRun> lines;
3668 lines.PushBack( line01 );
3675 Size textArea( 100.f, 19.f );
3676 Size layoutSize( 78.f, 19.f );
3678 LayoutTextData data =
3680 "Not enough height.",
3684 fontDescriptionRuns.Begin(),
3690 Layout::Engine::MULTI_LINE_BOX,
3697 if( !LayoutTextTest( data ) )
3699 tet_result(TET_FAIL);
3702 tet_result(TET_PASS);
3706 int UtcDaliTextReorderLayout01(void)
3708 ToolkitTestApplication application;
3709 tet_infoline(" UtcDaliTextReorderLayout01");
3711 // Reorder lines. No right to left characters.
3713 const std::string fontLatin( "TizenSans" );
3715 // Set a known font description
3716 FontDescriptionRun fontDescriptionRun01;
3717 fontDescriptionRun01.characterRun.characterIndex = 0u;
3718 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3719 fontDescriptionRun01.familyLength = fontLatin.size();
3720 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3721 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3722 fontDescriptionRun01.familyDefined = true;
3723 fontDescriptionRun01.weightDefined = false;
3724 fontDescriptionRun01.widthDefined = false;
3725 fontDescriptionRun01.slantDefined = false;
3726 fontDescriptionRun01.sizeDefined = false;
3728 Vector<FontDescriptionRun> fontDescriptionRuns;
3729 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3733 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f,
3736 Size textArea( 100.f, 300.f );
3738 ReLayoutRightToLeftLinesData data =
3740 "Text with no right to left text.",
3744 fontDescriptionRuns.Begin(),
3751 if( !ReLayoutRightToLeftLinesTest( data ) )
3753 tet_result(TET_FAIL);
3756 tet_result(TET_PASS);
3760 int UtcDaliTextReorderLayout02(void)
3762 ToolkitTestApplication application;
3763 tet_infoline(" UtcDaliTextReorderLayout02");
3765 // Reorder lines of the first paragraph.
3767 const std::string fontHebrew( "TizenSansHebrew" );
3768 const std::string fontArabic( "TizenSansArabic" );
3770 // Set a known font description
3771 FontDescriptionRun fontDescriptionRun01;
3772 fontDescriptionRun01.characterRun.characterIndex = 0u;
3773 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3774 fontDescriptionRun01.familyLength = fontHebrew.size();
3775 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3776 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3777 fontDescriptionRun01.familyDefined = true;
3778 fontDescriptionRun01.weightDefined = false;
3779 fontDescriptionRun01.widthDefined = false;
3780 fontDescriptionRun01.slantDefined = false;
3781 fontDescriptionRun01.sizeDefined = false;
3783 FontDescriptionRun fontDescriptionRun02;
3784 fontDescriptionRun02.characterRun.characterIndex = 10u;
3785 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3786 fontDescriptionRun02.familyLength = fontArabic.size();
3787 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3788 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3789 fontDescriptionRun02.familyDefined = true;
3790 fontDescriptionRun02.weightDefined = false;
3791 fontDescriptionRun02.widthDefined = false;
3792 fontDescriptionRun02.slantDefined = false;
3793 fontDescriptionRun02.sizeDefined = false;
3795 FontDescriptionRun fontDescriptionRun03;
3796 fontDescriptionRun03.characterRun.characterIndex = 24u;
3797 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3798 fontDescriptionRun03.familyLength = fontArabic.size();
3799 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3800 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3801 fontDescriptionRun03.familyDefined = true;
3802 fontDescriptionRun03.weightDefined = false;
3803 fontDescriptionRun03.widthDefined = false;
3804 fontDescriptionRun03.slantDefined = false;
3805 fontDescriptionRun03.sizeDefined = false;
3807 FontDescriptionRun fontDescriptionRun04;
3808 fontDescriptionRun04.characterRun.characterIndex = 38u;
3809 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3810 fontDescriptionRun04.familyLength = fontHebrew.size();
3811 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3812 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3813 fontDescriptionRun04.familyDefined = true;
3814 fontDescriptionRun04.weightDefined = false;
3815 fontDescriptionRun04.widthDefined = false;
3816 fontDescriptionRun04.slantDefined = false;
3817 fontDescriptionRun04.sizeDefined = false;
3819 FontDescriptionRun fontDescriptionRun05;
3820 fontDescriptionRun05.characterRun.characterIndex = 48u;
3821 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3822 fontDescriptionRun05.familyLength = fontHebrew.size();
3823 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3824 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3825 fontDescriptionRun05.familyDefined = true;
3826 fontDescriptionRun05.weightDefined = false;
3827 fontDescriptionRun05.widthDefined = false;
3828 fontDescriptionRun05.slantDefined = false;
3829 fontDescriptionRun05.sizeDefined = false;
3831 FontDescriptionRun fontDescriptionRun06;
3832 fontDescriptionRun06.characterRun.characterIndex = 58u;
3833 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3834 fontDescriptionRun06.familyLength = fontArabic.size();
3835 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3836 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3837 fontDescriptionRun06.familyDefined = true;
3838 fontDescriptionRun06.weightDefined = false;
3839 fontDescriptionRun06.widthDefined = false;
3840 fontDescriptionRun06.slantDefined = false;
3841 fontDescriptionRun06.sizeDefined = false;
3843 Vector<FontDescriptionRun> fontDescriptionRuns;
3844 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3845 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3846 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3847 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3848 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3849 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3853 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,
3854 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,
3855 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,
3856 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
3857 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
3858 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,
3861 Size textArea( 100.f, 300.f );
3863 ReLayoutRightToLeftLinesData data =
3865 "Paragraphs with right to left text.",
3866 "שלום עולם مرحبا بالعالم\n"
3867 "مرحبا بالعالم שלום עולם\n"
3868 "שלום עולם مرحبا بالعالم.",
3871 fontDescriptionRuns.Begin(),
3878 if( !ReLayoutRightToLeftLinesTest( data ) )
3880 tet_result(TET_FAIL);
3883 tet_result(TET_PASS);
3887 int UtcDaliTextReorderLayout03(void)
3889 ToolkitTestApplication application;
3890 tet_infoline(" UtcDaliTextReorderLayout03");
3892 // Reorder lines of the mid paragraph.
3894 const std::string fontHebrew( "TizenSansHebrew" );
3895 const std::string fontArabic( "TizenSansArabic" );
3897 // Set a known font description
3898 FontDescriptionRun fontDescriptionRun01;
3899 fontDescriptionRun01.characterRun.characterIndex = 0u;
3900 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3901 fontDescriptionRun01.familyLength = fontHebrew.size();
3902 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3903 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3904 fontDescriptionRun01.familyDefined = true;
3905 fontDescriptionRun01.weightDefined = false;
3906 fontDescriptionRun01.widthDefined = false;
3907 fontDescriptionRun01.slantDefined = false;
3908 fontDescriptionRun01.sizeDefined = false;
3910 FontDescriptionRun fontDescriptionRun02;
3911 fontDescriptionRun02.characterRun.characterIndex = 10u;
3912 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3913 fontDescriptionRun02.familyLength = fontArabic.size();
3914 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3915 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3916 fontDescriptionRun02.familyDefined = true;
3917 fontDescriptionRun02.weightDefined = false;
3918 fontDescriptionRun02.widthDefined = false;
3919 fontDescriptionRun02.slantDefined = false;
3920 fontDescriptionRun02.sizeDefined = false;
3922 FontDescriptionRun fontDescriptionRun03;
3923 fontDescriptionRun03.characterRun.characterIndex = 24u;
3924 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3925 fontDescriptionRun03.familyLength = fontArabic.size();
3926 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3927 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3928 fontDescriptionRun03.familyDefined = true;
3929 fontDescriptionRun03.weightDefined = false;
3930 fontDescriptionRun03.widthDefined = false;
3931 fontDescriptionRun03.slantDefined = false;
3932 fontDescriptionRun03.sizeDefined = false;
3934 FontDescriptionRun fontDescriptionRun04;
3935 fontDescriptionRun04.characterRun.characterIndex = 38u;
3936 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3937 fontDescriptionRun04.familyLength = fontHebrew.size();
3938 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3939 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3940 fontDescriptionRun04.familyDefined = true;
3941 fontDescriptionRun04.weightDefined = false;
3942 fontDescriptionRun04.widthDefined = false;
3943 fontDescriptionRun04.slantDefined = false;
3944 fontDescriptionRun04.sizeDefined = false;
3946 FontDescriptionRun fontDescriptionRun05;
3947 fontDescriptionRun05.characterRun.characterIndex = 48u;
3948 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3949 fontDescriptionRun05.familyLength = fontHebrew.size();
3950 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3951 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3952 fontDescriptionRun05.familyDefined = true;
3953 fontDescriptionRun05.weightDefined = false;
3954 fontDescriptionRun05.widthDefined = false;
3955 fontDescriptionRun05.slantDefined = false;
3956 fontDescriptionRun05.sizeDefined = false;
3958 FontDescriptionRun fontDescriptionRun06;
3959 fontDescriptionRun06.characterRun.characterIndex = 58u;
3960 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3961 fontDescriptionRun06.familyLength = fontArabic.size();
3962 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3963 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3964 fontDescriptionRun06.familyDefined = true;
3965 fontDescriptionRun06.weightDefined = false;
3966 fontDescriptionRun06.widthDefined = false;
3967 fontDescriptionRun06.slantDefined = false;
3968 fontDescriptionRun06.sizeDefined = false;
3970 Vector<FontDescriptionRun> fontDescriptionRuns;
3971 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3972 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3973 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3974 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3975 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3976 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3980 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
3981 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,
3982 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,
3983 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3984 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
3985 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,
3988 Size textArea( 100.f, 300.f );
3990 ReLayoutRightToLeftLinesData data =
3992 "Paragraphs with right to left text.",
3993 "שלום עולם مرحبا بالعالم\n"
3994 "مرحبا بالعالم שלום עולם\n"
3995 "שלום עולם مرحبا بالعالم.",
3998 fontDescriptionRuns.Begin(),
4005 if( !ReLayoutRightToLeftLinesTest( data ) )
4007 tet_result(TET_FAIL);
4010 tet_result(TET_PASS);
4014 int UtcDaliTextReorderLayout04(void)
4016 ToolkitTestApplication application;
4017 tet_infoline(" UtcDaliTextReorderLayout04");
4019 // Reorder lines of the last paragraph.
4021 const std::string fontHebrew( "TizenSansHebrew" );
4022 const std::string fontArabic( "TizenSansArabic" );
4024 // Set a known font description
4025 FontDescriptionRun fontDescriptionRun01;
4026 fontDescriptionRun01.characterRun.characterIndex = 0u;
4027 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4028 fontDescriptionRun01.familyLength = fontHebrew.size();
4029 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4030 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4031 fontDescriptionRun01.familyDefined = true;
4032 fontDescriptionRun01.weightDefined = false;
4033 fontDescriptionRun01.widthDefined = false;
4034 fontDescriptionRun01.slantDefined = false;
4035 fontDescriptionRun01.sizeDefined = false;
4037 FontDescriptionRun fontDescriptionRun02;
4038 fontDescriptionRun02.characterRun.characterIndex = 10u;
4039 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4040 fontDescriptionRun02.familyLength = fontArabic.size();
4041 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4042 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4043 fontDescriptionRun02.familyDefined = true;
4044 fontDescriptionRun02.weightDefined = false;
4045 fontDescriptionRun02.widthDefined = false;
4046 fontDescriptionRun02.slantDefined = false;
4047 fontDescriptionRun02.sizeDefined = false;
4049 FontDescriptionRun fontDescriptionRun03;
4050 fontDescriptionRun03.characterRun.characterIndex = 24u;
4051 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4052 fontDescriptionRun03.familyLength = fontArabic.size();
4053 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4054 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4055 fontDescriptionRun03.familyDefined = true;
4056 fontDescriptionRun03.weightDefined = false;
4057 fontDescriptionRun03.widthDefined = false;
4058 fontDescriptionRun03.slantDefined = false;
4059 fontDescriptionRun03.sizeDefined = false;
4061 FontDescriptionRun fontDescriptionRun04;
4062 fontDescriptionRun04.characterRun.characterIndex = 38u;
4063 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4064 fontDescriptionRun04.familyLength = fontHebrew.size();
4065 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4066 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4067 fontDescriptionRun04.familyDefined = true;
4068 fontDescriptionRun04.weightDefined = false;
4069 fontDescriptionRun04.widthDefined = false;
4070 fontDescriptionRun04.slantDefined = false;
4071 fontDescriptionRun04.sizeDefined = false;
4073 FontDescriptionRun fontDescriptionRun05;
4074 fontDescriptionRun05.characterRun.characterIndex = 48u;
4075 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4076 fontDescriptionRun05.familyLength = fontHebrew.size();
4077 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4078 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4079 fontDescriptionRun05.familyDefined = true;
4080 fontDescriptionRun05.weightDefined = false;
4081 fontDescriptionRun05.widthDefined = false;
4082 fontDescriptionRun05.slantDefined = false;
4083 fontDescriptionRun05.sizeDefined = false;
4085 FontDescriptionRun fontDescriptionRun06;
4086 fontDescriptionRun06.characterRun.characterIndex = 58u;
4087 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4088 fontDescriptionRun06.familyLength = fontArabic.size();
4089 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4090 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4091 fontDescriptionRun06.familyDefined = true;
4092 fontDescriptionRun06.weightDefined = false;
4093 fontDescriptionRun06.widthDefined = false;
4094 fontDescriptionRun06.slantDefined = false;
4095 fontDescriptionRun06.sizeDefined = false;
4097 Vector<FontDescriptionRun> fontDescriptionRuns;
4098 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4099 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4100 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4101 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4102 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4103 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4107 0.f, -10.f, 11.f, -13.f, 18.f, -10.f, 23.f, -10.f, 31.f, -0.f, 36.f, -10.f, 44.f, -10.f, 49.f, -13.f, 57.f, -10.f, 65.f, -0.f, 68.f, -8.f, 75.f, -6.f, 80.f, -8.f, 86.f, -7.f, 91.f, -11.f, 93.f, -0.f,
4108 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,
4109 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,
4110 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
4111 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,
4112 26.f, -7.f, 25.f, -11.f, 20.f, -11.f, 14.f, -8.f, 13.f, -11.f, 8.f, -11.f, 3.f, -8.f, 0.f, -2.f,
4115 Size textArea( 100.f, 300.f );
4117 ReLayoutRightToLeftLinesData data =
4119 "Paragraphs with right to left text.",
4120 "שלום עולם مرحبا بالعالم\n"
4121 "مرحبا بالعالم שלום עולם\n"
4122 "שלום עולם مرحبا بالعالم.",
4125 fontDescriptionRuns.Begin(),
4132 if( !ReLayoutRightToLeftLinesTest( data ) )
4134 tet_result(TET_FAIL);
4137 tet_result(TET_PASS);
4141 int UtcDaliTextAlign01(void)
4143 ToolkitTestApplication application;
4144 tet_infoline(" UtcDaliTextAlign01");
4146 // Calculate text alignment.
4148 const std::string fontLatin( "TizenSans" );
4149 const std::string fontHebrew( "TizenSansHebrew" );
4150 const std::string fontArabic( "TizenSansArabic" );
4152 // Set a known font description
4153 FontDescriptionRun fontDescriptionRun01;
4154 fontDescriptionRun01.characterRun.characterIndex = 0u;
4155 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4156 fontDescriptionRun01.familyLength = fontLatin.size();
4157 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4158 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4159 fontDescriptionRun01.familyDefined = true;
4160 fontDescriptionRun01.weightDefined = false;
4161 fontDescriptionRun01.widthDefined = false;
4162 fontDescriptionRun01.slantDefined = false;
4163 fontDescriptionRun01.sizeDefined = false;
4165 FontDescriptionRun fontDescriptionRun02;
4166 fontDescriptionRun02.characterRun.characterIndex = 12u;
4167 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4168 fontDescriptionRun02.familyLength = fontHebrew.size();
4169 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4170 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4171 fontDescriptionRun02.familyDefined = true;
4172 fontDescriptionRun02.weightDefined = false;
4173 fontDescriptionRun02.widthDefined = false;
4174 fontDescriptionRun02.slantDefined = false;
4175 fontDescriptionRun02.sizeDefined = false;
4177 FontDescriptionRun fontDescriptionRun03;
4178 fontDescriptionRun03.characterRun.characterIndex = 22u;
4179 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4180 fontDescriptionRun03.familyLength = fontArabic.size();
4181 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4182 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4183 fontDescriptionRun03.familyDefined = true;
4184 fontDescriptionRun03.weightDefined = false;
4185 fontDescriptionRun03.widthDefined = false;
4186 fontDescriptionRun03.slantDefined = false;
4187 fontDescriptionRun03.sizeDefined = false;
4189 FontDescriptionRun fontDescriptionRun04;
4190 fontDescriptionRun04.characterRun.characterIndex = 36u;
4191 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4192 fontDescriptionRun04.familyLength = fontLatin.size();
4193 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4194 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4195 fontDescriptionRun04.familyDefined = true;
4196 fontDescriptionRun04.weightDefined = false;
4197 fontDescriptionRun04.widthDefined = false;
4198 fontDescriptionRun04.slantDefined = false;
4199 fontDescriptionRun04.sizeDefined = false;
4201 FontDescriptionRun fontDescriptionRun05;
4202 fontDescriptionRun05.characterRun.characterIndex = 48u;
4203 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4204 fontDescriptionRun05.familyLength = fontLatin.size();
4205 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4206 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4207 fontDescriptionRun05.familyDefined = true;
4208 fontDescriptionRun05.weightDefined = false;
4209 fontDescriptionRun05.widthDefined = false;
4210 fontDescriptionRun05.slantDefined = false;
4211 fontDescriptionRun05.sizeDefined = false;
4213 FontDescriptionRun fontDescriptionRun06;
4214 fontDescriptionRun06.characterRun.characterIndex = 60u;
4215 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4216 fontDescriptionRun06.familyLength = fontArabic.size();
4217 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4218 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4219 fontDescriptionRun06.familyDefined = true;
4220 fontDescriptionRun06.weightDefined = false;
4221 fontDescriptionRun06.widthDefined = false;
4222 fontDescriptionRun06.slantDefined = false;
4223 fontDescriptionRun06.sizeDefined = false;
4225 Vector<FontDescriptionRun> fontDescriptionRuns;
4226 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4227 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4228 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4229 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4230 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4231 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4233 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4235 Size textArea( 100.f, 300.f );
4238 "Begin alignment for the first paragraph.",
4239 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4242 fontDescriptionRuns.Begin(),
4243 Text::HorizontalAlignment::BEGIN,
4244 Text::VerticalAlignment::TOP,
4249 Dali::LayoutDirection::LEFT_TO_RIGHT,
4253 if( !AlignTest( data ) )
4255 tet_result(TET_FAIL);
4258 tet_result(TET_PASS);
4262 int UtcDaliTextAlign02(void)
4264 ToolkitTestApplication application;
4265 tet_infoline(" UtcDaliTextAlign02");
4267 // Calculate text alignment.
4269 const std::string fontLatin( "TizenSans" );
4270 const std::string fontHebrew( "TizenSansHebrew" );
4271 const std::string fontArabic( "TizenSansArabic" );
4273 // Set a known font description
4274 FontDescriptionRun fontDescriptionRun01;
4275 fontDescriptionRun01.characterRun.characterIndex = 0u;
4276 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4277 fontDescriptionRun01.familyLength = fontLatin.size();
4278 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4279 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4280 fontDescriptionRun01.familyDefined = true;
4281 fontDescriptionRun01.weightDefined = false;
4282 fontDescriptionRun01.widthDefined = false;
4283 fontDescriptionRun01.slantDefined = false;
4284 fontDescriptionRun01.sizeDefined = false;
4286 FontDescriptionRun fontDescriptionRun02;
4287 fontDescriptionRun02.characterRun.characterIndex = 12u;
4288 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4289 fontDescriptionRun02.familyLength = fontHebrew.size();
4290 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4291 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4292 fontDescriptionRun02.familyDefined = true;
4293 fontDescriptionRun02.weightDefined = false;
4294 fontDescriptionRun02.widthDefined = false;
4295 fontDescriptionRun02.slantDefined = false;
4296 fontDescriptionRun02.sizeDefined = false;
4298 FontDescriptionRun fontDescriptionRun03;
4299 fontDescriptionRun03.characterRun.characterIndex = 22u;
4300 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4301 fontDescriptionRun03.familyLength = fontArabic.size();
4302 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4303 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4304 fontDescriptionRun03.familyDefined = true;
4305 fontDescriptionRun03.weightDefined = false;
4306 fontDescriptionRun03.widthDefined = false;
4307 fontDescriptionRun03.slantDefined = false;
4308 fontDescriptionRun03.sizeDefined = false;
4310 FontDescriptionRun fontDescriptionRun04;
4311 fontDescriptionRun04.characterRun.characterIndex = 36u;
4312 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4313 fontDescriptionRun04.familyLength = fontLatin.size();
4314 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4315 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4316 fontDescriptionRun04.familyDefined = true;
4317 fontDescriptionRun04.weightDefined = false;
4318 fontDescriptionRun04.widthDefined = false;
4319 fontDescriptionRun04.slantDefined = false;
4320 fontDescriptionRun04.sizeDefined = false;
4322 FontDescriptionRun fontDescriptionRun05;
4323 fontDescriptionRun05.characterRun.characterIndex = 48u;
4324 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4325 fontDescriptionRun05.familyLength = fontLatin.size();
4326 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4327 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4328 fontDescriptionRun05.familyDefined = true;
4329 fontDescriptionRun05.weightDefined = false;
4330 fontDescriptionRun05.widthDefined = false;
4331 fontDescriptionRun05.slantDefined = false;
4332 fontDescriptionRun05.sizeDefined = false;
4334 FontDescriptionRun fontDescriptionRun06;
4335 fontDescriptionRun06.characterRun.characterIndex = 60u;
4336 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4337 fontDescriptionRun06.familyLength = fontArabic.size();
4338 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4339 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4340 fontDescriptionRun06.familyDefined = true;
4341 fontDescriptionRun06.weightDefined = false;
4342 fontDescriptionRun06.widthDefined = false;
4343 fontDescriptionRun06.slantDefined = false;
4344 fontDescriptionRun06.sizeDefined = false;
4346 Vector<FontDescriptionRun> fontDescriptionRuns;
4347 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4348 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4349 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4350 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4351 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4352 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4354 float positions[] = { 0.f, 0.f, 2.f, 61.f, 0.f, 0.f };
4356 Size textArea( 100.f, 300.f );
4359 "Begin alignment for the mid paragraph.",
4360 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4363 fontDescriptionRuns.Begin(),
4364 Text::HorizontalAlignment::BEGIN,
4365 Text::VerticalAlignment::TOP,
4370 Dali::LayoutDirection::LEFT_TO_RIGHT,
4374 if( !AlignTest( data ) )
4376 tet_result(TET_FAIL);
4379 tet_result(TET_PASS);
4383 int UtcDaliTextAlign03(void)
4385 ToolkitTestApplication application;
4386 tet_infoline(" UtcDaliTextAlign03");
4388 // Calculate text alignment.
4390 const std::string fontLatin( "TizenSans" );
4391 const std::string fontHebrew( "TizenSansHebrew" );
4392 const std::string fontArabic( "TizenSansArabic" );
4394 // Set a known font description
4395 FontDescriptionRun fontDescriptionRun01;
4396 fontDescriptionRun01.characterRun.characterIndex = 0u;
4397 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4398 fontDescriptionRun01.familyLength = fontLatin.size();
4399 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4400 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4401 fontDescriptionRun01.familyDefined = true;
4402 fontDescriptionRun01.weightDefined = false;
4403 fontDescriptionRun01.widthDefined = false;
4404 fontDescriptionRun01.slantDefined = false;
4405 fontDescriptionRun01.sizeDefined = false;
4407 FontDescriptionRun fontDescriptionRun02;
4408 fontDescriptionRun02.characterRun.characterIndex = 12u;
4409 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4410 fontDescriptionRun02.familyLength = fontHebrew.size();
4411 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4412 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4413 fontDescriptionRun02.familyDefined = true;
4414 fontDescriptionRun02.weightDefined = false;
4415 fontDescriptionRun02.widthDefined = false;
4416 fontDescriptionRun02.slantDefined = false;
4417 fontDescriptionRun02.sizeDefined = false;
4419 FontDescriptionRun fontDescriptionRun03;
4420 fontDescriptionRun03.characterRun.characterIndex = 22u;
4421 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4422 fontDescriptionRun03.familyLength = fontArabic.size();
4423 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4424 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4425 fontDescriptionRun03.familyDefined = true;
4426 fontDescriptionRun03.weightDefined = false;
4427 fontDescriptionRun03.widthDefined = false;
4428 fontDescriptionRun03.slantDefined = false;
4429 fontDescriptionRun03.sizeDefined = false;
4431 FontDescriptionRun fontDescriptionRun04;
4432 fontDescriptionRun04.characterRun.characterIndex = 36u;
4433 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4434 fontDescriptionRun04.familyLength = fontLatin.size();
4435 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4436 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4437 fontDescriptionRun04.familyDefined = true;
4438 fontDescriptionRun04.weightDefined = false;
4439 fontDescriptionRun04.widthDefined = false;
4440 fontDescriptionRun04.slantDefined = false;
4441 fontDescriptionRun04.sizeDefined = false;
4443 FontDescriptionRun fontDescriptionRun05;
4444 fontDescriptionRun05.characterRun.characterIndex = 48u;
4445 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4446 fontDescriptionRun05.familyLength = fontLatin.size();
4447 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4448 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4449 fontDescriptionRun05.familyDefined = true;
4450 fontDescriptionRun05.weightDefined = false;
4451 fontDescriptionRun05.widthDefined = false;
4452 fontDescriptionRun05.slantDefined = false;
4453 fontDescriptionRun05.sizeDefined = false;
4455 FontDescriptionRun fontDescriptionRun06;
4456 fontDescriptionRun06.characterRun.characterIndex = 60u;
4457 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4458 fontDescriptionRun06.familyLength = fontArabic.size();
4459 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4460 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4461 fontDescriptionRun06.familyDefined = true;
4462 fontDescriptionRun06.weightDefined = false;
4463 fontDescriptionRun06.widthDefined = false;
4464 fontDescriptionRun06.slantDefined = false;
4465 fontDescriptionRun06.sizeDefined = false;
4467 Vector<FontDescriptionRun> fontDescriptionRuns;
4468 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4469 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4470 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4471 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4472 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4473 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4475 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4477 Size textArea( 100.f, 300.f );
4480 "Begin alignment for the last paragraph.",
4481 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4484 fontDescriptionRuns.Begin(),
4485 Text::HorizontalAlignment::BEGIN,
4486 Text::VerticalAlignment::TOP,
4491 Dali::LayoutDirection::LEFT_TO_RIGHT,
4495 if( !AlignTest( data ) )
4497 tet_result(TET_FAIL);
4500 tet_result(TET_PASS);
4504 int UtcDaliTextAlign04(void)
4506 ToolkitTestApplication application;
4507 tet_infoline(" UtcDaliTextAlign04");
4509 // Calculate text alignment.
4511 const std::string fontLatin( "TizenSans" );
4512 const std::string fontHebrew( "TizenSansHebrew" );
4513 const std::string fontArabic( "TizenSansArabic" );
4515 // Set a known font description
4516 FontDescriptionRun fontDescriptionRun01;
4517 fontDescriptionRun01.characterRun.characterIndex = 0u;
4518 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4519 fontDescriptionRun01.familyLength = fontLatin.size();
4520 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4521 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4522 fontDescriptionRun01.familyDefined = true;
4523 fontDescriptionRun01.weightDefined = false;
4524 fontDescriptionRun01.widthDefined = false;
4525 fontDescriptionRun01.slantDefined = false;
4526 fontDescriptionRun01.sizeDefined = false;
4528 FontDescriptionRun fontDescriptionRun02;
4529 fontDescriptionRun02.characterRun.characterIndex = 12u;
4530 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4531 fontDescriptionRun02.familyLength = fontHebrew.size();
4532 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4533 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4534 fontDescriptionRun02.familyDefined = true;
4535 fontDescriptionRun02.weightDefined = false;
4536 fontDescriptionRun02.widthDefined = false;
4537 fontDescriptionRun02.slantDefined = false;
4538 fontDescriptionRun02.sizeDefined = false;
4540 FontDescriptionRun fontDescriptionRun03;
4541 fontDescriptionRun03.characterRun.characterIndex = 22u;
4542 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4543 fontDescriptionRun03.familyLength = fontArabic.size();
4544 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4545 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4546 fontDescriptionRun03.familyDefined = true;
4547 fontDescriptionRun03.weightDefined = false;
4548 fontDescriptionRun03.widthDefined = false;
4549 fontDescriptionRun03.slantDefined = false;
4550 fontDescriptionRun03.sizeDefined = false;
4552 FontDescriptionRun fontDescriptionRun04;
4553 fontDescriptionRun04.characterRun.characterIndex = 36u;
4554 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4555 fontDescriptionRun04.familyLength = fontLatin.size();
4556 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4557 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4558 fontDescriptionRun04.familyDefined = true;
4559 fontDescriptionRun04.weightDefined = false;
4560 fontDescriptionRun04.widthDefined = false;
4561 fontDescriptionRun04.slantDefined = false;
4562 fontDescriptionRun04.sizeDefined = false;
4564 FontDescriptionRun fontDescriptionRun05;
4565 fontDescriptionRun05.characterRun.characterIndex = 48u;
4566 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4567 fontDescriptionRun05.familyLength = fontLatin.size();
4568 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4569 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4570 fontDescriptionRun05.familyDefined = true;
4571 fontDescriptionRun05.weightDefined = false;
4572 fontDescriptionRun05.widthDefined = false;
4573 fontDescriptionRun05.slantDefined = false;
4574 fontDescriptionRun05.sizeDefined = false;
4576 FontDescriptionRun fontDescriptionRun06;
4577 fontDescriptionRun06.characterRun.characterIndex = 60u;
4578 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4579 fontDescriptionRun06.familyLength = fontArabic.size();
4580 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4581 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4582 fontDescriptionRun06.familyDefined = true;
4583 fontDescriptionRun06.weightDefined = false;
4584 fontDescriptionRun06.widthDefined = false;
4585 fontDescriptionRun06.slantDefined = false;
4586 fontDescriptionRun06.sizeDefined = false;
4588 Vector<FontDescriptionRun> fontDescriptionRuns;
4589 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4590 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4591 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4592 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4593 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4594 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4596 float positions[] = { 11.f, 17.f, 0.f, 0.f, 0.f, 0.f };
4598 Size textArea( 100.f, 300.f );
4601 "Center alignment for the first paragraph.",
4602 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4605 fontDescriptionRuns.Begin(),
4606 Text::HorizontalAlignment::CENTER,
4607 Text::VerticalAlignment::TOP,
4612 Dali::LayoutDirection::LEFT_TO_RIGHT,
4616 if( !AlignTest( data ) )
4618 tet_result(TET_FAIL);
4621 tet_result(TET_PASS);
4625 int UtcDaliTextAlign05(void)
4627 ToolkitTestApplication application;
4628 tet_infoline(" UtcDaliTextAlign05");
4630 // Calculate text alignment.
4632 const std::string fontLatin( "TizenSans" );
4633 const std::string fontHebrew( "TizenSansHebrew" );
4634 const std::string fontArabic( "TizenSansArabic" );
4636 // Set a known font description
4637 FontDescriptionRun fontDescriptionRun01;
4638 fontDescriptionRun01.characterRun.characterIndex = 0u;
4639 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4640 fontDescriptionRun01.familyLength = fontLatin.size();
4641 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4642 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4643 fontDescriptionRun01.familyDefined = true;
4644 fontDescriptionRun01.weightDefined = false;
4645 fontDescriptionRun01.widthDefined = false;
4646 fontDescriptionRun01.slantDefined = false;
4647 fontDescriptionRun01.sizeDefined = false;
4649 FontDescriptionRun fontDescriptionRun02;
4650 fontDescriptionRun02.characterRun.characterIndex = 12u;
4651 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4652 fontDescriptionRun02.familyLength = fontHebrew.size();
4653 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4654 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4655 fontDescriptionRun02.familyDefined = true;
4656 fontDescriptionRun02.weightDefined = false;
4657 fontDescriptionRun02.widthDefined = false;
4658 fontDescriptionRun02.slantDefined = false;
4659 fontDescriptionRun02.sizeDefined = false;
4661 FontDescriptionRun fontDescriptionRun03;
4662 fontDescriptionRun03.characterRun.characterIndex = 22u;
4663 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4664 fontDescriptionRun03.familyLength = fontArabic.size();
4665 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4666 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4667 fontDescriptionRun03.familyDefined = true;
4668 fontDescriptionRun03.weightDefined = false;
4669 fontDescriptionRun03.widthDefined = false;
4670 fontDescriptionRun03.slantDefined = false;
4671 fontDescriptionRun03.sizeDefined = false;
4673 FontDescriptionRun fontDescriptionRun04;
4674 fontDescriptionRun04.characterRun.characterIndex = 36u;
4675 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4676 fontDescriptionRun04.familyLength = fontLatin.size();
4677 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4678 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4679 fontDescriptionRun04.familyDefined = true;
4680 fontDescriptionRun04.weightDefined = false;
4681 fontDescriptionRun04.widthDefined = false;
4682 fontDescriptionRun04.slantDefined = false;
4683 fontDescriptionRun04.sizeDefined = false;
4685 FontDescriptionRun fontDescriptionRun05;
4686 fontDescriptionRun05.characterRun.characterIndex = 48u;
4687 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4688 fontDescriptionRun05.familyLength = fontLatin.size();
4689 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4690 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4691 fontDescriptionRun05.familyDefined = true;
4692 fontDescriptionRun05.weightDefined = false;
4693 fontDescriptionRun05.widthDefined = false;
4694 fontDescriptionRun05.slantDefined = false;
4695 fontDescriptionRun05.sizeDefined = false;
4697 FontDescriptionRun fontDescriptionRun06;
4698 fontDescriptionRun06.characterRun.characterIndex = 60u;
4699 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4700 fontDescriptionRun06.familyLength = fontArabic.size();
4701 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4702 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4703 fontDescriptionRun06.familyDefined = true;
4704 fontDescriptionRun06.weightDefined = false;
4705 fontDescriptionRun06.widthDefined = false;
4706 fontDescriptionRun06.slantDefined = false;
4707 fontDescriptionRun06.sizeDefined = false;
4709 Vector<FontDescriptionRun> fontDescriptionRuns;
4710 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4711 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4712 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4713 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4714 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4715 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4717 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4719 Size textArea( 100.f, 300.f );
4722 "Center alignment for the mid paragraph.",
4723 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4726 fontDescriptionRuns.Begin(),
4727 Text::HorizontalAlignment::CENTER,
4728 Text::VerticalAlignment::TOP,
4733 Dali::LayoutDirection::LEFT_TO_RIGHT,
4737 if( !AlignTest( data ) )
4739 tet_result(TET_FAIL);
4742 tet_result(TET_PASS);
4746 int UtcDaliTextAlign06(void)
4748 ToolkitTestApplication application;
4749 tet_infoline(" UtcDaliTextAlign06");
4751 // Calculate text alignment.
4753 const std::string fontLatin( "TizenSans" );
4754 const std::string fontHebrew( "TizenSansHebrew" );
4755 const std::string fontArabic( "TizenSansArabic" );
4757 // Set a known font description
4758 FontDescriptionRun fontDescriptionRun01;
4759 fontDescriptionRun01.characterRun.characterIndex = 0u;
4760 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4761 fontDescriptionRun01.familyLength = fontLatin.size();
4762 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4763 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4764 fontDescriptionRun01.familyDefined = true;
4765 fontDescriptionRun01.weightDefined = false;
4766 fontDescriptionRun01.widthDefined = false;
4767 fontDescriptionRun01.slantDefined = false;
4768 fontDescriptionRun01.sizeDefined = false;
4770 FontDescriptionRun fontDescriptionRun02;
4771 fontDescriptionRun02.characterRun.characterIndex = 12u;
4772 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4773 fontDescriptionRun02.familyLength = fontHebrew.size();
4774 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4775 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4776 fontDescriptionRun02.familyDefined = true;
4777 fontDescriptionRun02.weightDefined = false;
4778 fontDescriptionRun02.widthDefined = false;
4779 fontDescriptionRun02.slantDefined = false;
4780 fontDescriptionRun02.sizeDefined = false;
4782 FontDescriptionRun fontDescriptionRun03;
4783 fontDescriptionRun03.characterRun.characterIndex = 22u;
4784 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4785 fontDescriptionRun03.familyLength = fontArabic.size();
4786 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4787 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4788 fontDescriptionRun03.familyDefined = true;
4789 fontDescriptionRun03.weightDefined = false;
4790 fontDescriptionRun03.widthDefined = false;
4791 fontDescriptionRun03.slantDefined = false;
4792 fontDescriptionRun03.sizeDefined = false;
4794 FontDescriptionRun fontDescriptionRun04;
4795 fontDescriptionRun04.characterRun.characterIndex = 36u;
4796 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4797 fontDescriptionRun04.familyLength = fontLatin.size();
4798 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4799 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4800 fontDescriptionRun04.familyDefined = true;
4801 fontDescriptionRun04.weightDefined = false;
4802 fontDescriptionRun04.widthDefined = false;
4803 fontDescriptionRun04.slantDefined = false;
4804 fontDescriptionRun04.sizeDefined = false;
4806 FontDescriptionRun fontDescriptionRun05;
4807 fontDescriptionRun05.characterRun.characterIndex = 48u;
4808 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4809 fontDescriptionRun05.familyLength = fontLatin.size();
4810 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4811 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4812 fontDescriptionRun05.familyDefined = true;
4813 fontDescriptionRun05.weightDefined = false;
4814 fontDescriptionRun05.widthDefined = false;
4815 fontDescriptionRun05.slantDefined = false;
4816 fontDescriptionRun05.sizeDefined = false;
4818 FontDescriptionRun fontDescriptionRun06;
4819 fontDescriptionRun06.characterRun.characterIndex = 60u;
4820 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4821 fontDescriptionRun06.familyLength = fontArabic.size();
4822 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4823 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4824 fontDescriptionRun06.familyDefined = true;
4825 fontDescriptionRun06.weightDefined = false;
4826 fontDescriptionRun06.widthDefined = false;
4827 fontDescriptionRun06.slantDefined = false;
4828 fontDescriptionRun06.sizeDefined = false;
4830 Vector<FontDescriptionRun> fontDescriptionRuns;
4831 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4832 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4833 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4834 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4835 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4836 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4838 float positions[] = { 0.f, 0.f, 0.f, 0.f, 11.f, 21.f };
4840 Size textArea( 100.f, 300.f );
4843 "Center alignment for the last paragraph.",
4844 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4847 fontDescriptionRuns.Begin(),
4848 Text::HorizontalAlignment::CENTER,
4849 Text::VerticalAlignment::TOP,
4854 Dali::LayoutDirection::LEFT_TO_RIGHT,
4858 if( !AlignTest( data ) )
4860 tet_result(TET_FAIL);
4863 tet_result(TET_PASS);
4867 int UtcDaliTextAlign07(void)
4869 ToolkitTestApplication application;
4870 tet_infoline(" UtcDaliTextAlign07");
4872 // Calculate text alignment.
4874 const std::string fontLatin( "TizenSans" );
4875 const std::string fontHebrew( "TizenSansHebrew" );
4876 const std::string fontArabic( "TizenSansArabic" );
4878 // Set a known font description
4879 FontDescriptionRun fontDescriptionRun01;
4880 fontDescriptionRun01.characterRun.characterIndex = 0u;
4881 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4882 fontDescriptionRun01.familyLength = fontLatin.size();
4883 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4884 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4885 fontDescriptionRun01.familyDefined = true;
4886 fontDescriptionRun01.weightDefined = false;
4887 fontDescriptionRun01.widthDefined = false;
4888 fontDescriptionRun01.slantDefined = false;
4889 fontDescriptionRun01.sizeDefined = false;
4891 FontDescriptionRun fontDescriptionRun02;
4892 fontDescriptionRun02.characterRun.characterIndex = 12u;
4893 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4894 fontDescriptionRun02.familyLength = fontHebrew.size();
4895 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4896 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4897 fontDescriptionRun02.familyDefined = true;
4898 fontDescriptionRun02.weightDefined = false;
4899 fontDescriptionRun02.widthDefined = false;
4900 fontDescriptionRun02.slantDefined = false;
4901 fontDescriptionRun02.sizeDefined = false;
4903 FontDescriptionRun fontDescriptionRun03;
4904 fontDescriptionRun03.characterRun.characterIndex = 22u;
4905 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4906 fontDescriptionRun03.familyLength = fontArabic.size();
4907 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4908 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4909 fontDescriptionRun03.familyDefined = true;
4910 fontDescriptionRun03.weightDefined = false;
4911 fontDescriptionRun03.widthDefined = false;
4912 fontDescriptionRun03.slantDefined = false;
4913 fontDescriptionRun03.sizeDefined = false;
4915 FontDescriptionRun fontDescriptionRun04;
4916 fontDescriptionRun04.characterRun.characterIndex = 36u;
4917 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4918 fontDescriptionRun04.familyLength = fontLatin.size();
4919 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4920 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4921 fontDescriptionRun04.familyDefined = true;
4922 fontDescriptionRun04.weightDefined = false;
4923 fontDescriptionRun04.widthDefined = false;
4924 fontDescriptionRun04.slantDefined = false;
4925 fontDescriptionRun04.sizeDefined = false;
4927 FontDescriptionRun fontDescriptionRun05;
4928 fontDescriptionRun05.characterRun.characterIndex = 48u;
4929 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4930 fontDescriptionRun05.familyLength = fontLatin.size();
4931 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4932 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4933 fontDescriptionRun05.familyDefined = true;
4934 fontDescriptionRun05.weightDefined = false;
4935 fontDescriptionRun05.widthDefined = false;
4936 fontDescriptionRun05.slantDefined = false;
4937 fontDescriptionRun05.sizeDefined = false;
4939 FontDescriptionRun fontDescriptionRun06;
4940 fontDescriptionRun06.characterRun.characterIndex = 60u;
4941 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4942 fontDescriptionRun06.familyLength = fontArabic.size();
4943 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4944 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4945 fontDescriptionRun06.familyDefined = true;
4946 fontDescriptionRun06.weightDefined = false;
4947 fontDescriptionRun06.widthDefined = false;
4948 fontDescriptionRun06.slantDefined = false;
4949 fontDescriptionRun06.sizeDefined = false;
4951 Vector<FontDescriptionRun> fontDescriptionRuns;
4952 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4953 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4954 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4955 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4956 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4957 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4959 float positions[] = { 22.f, 35.f, 0.f, 0.f, 0.f, 0.f };
4961 Size textArea( 100.f, 300.f );
4964 "End alignment for the first paragraph.",
4965 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4968 fontDescriptionRuns.Begin(),
4969 Text::HorizontalAlignment::END,
4970 Text::VerticalAlignment::TOP,
4975 Dali::LayoutDirection::LEFT_TO_RIGHT,
4979 if( !AlignTest( data ) )
4981 tet_result(TET_FAIL);
4984 tet_result(TET_PASS);
4988 int UtcDaliTextAlign08(void)
4990 ToolkitTestApplication application;
4991 tet_infoline(" UtcDaliTextAlign08");
4993 // Calculate text alignment.
4995 const std::string fontLatin( "TizenSans" );
4996 const std::string fontHebrew( "TizenSansHebrew" );
4997 const std::string fontArabic( "TizenSansArabic" );
4999 // Set a known font description
5000 FontDescriptionRun fontDescriptionRun01;
5001 fontDescriptionRun01.characterRun.characterIndex = 0u;
5002 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5003 fontDescriptionRun01.familyLength = fontLatin.size();
5004 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5005 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5006 fontDescriptionRun01.familyDefined = true;
5007 fontDescriptionRun01.weightDefined = false;
5008 fontDescriptionRun01.widthDefined = false;
5009 fontDescriptionRun01.slantDefined = false;
5010 fontDescriptionRun01.sizeDefined = false;
5012 FontDescriptionRun fontDescriptionRun02;
5013 fontDescriptionRun02.characterRun.characterIndex = 12u;
5014 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5015 fontDescriptionRun02.familyLength = fontHebrew.size();
5016 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5017 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5018 fontDescriptionRun02.familyDefined = true;
5019 fontDescriptionRun02.weightDefined = false;
5020 fontDescriptionRun02.widthDefined = false;
5021 fontDescriptionRun02.slantDefined = false;
5022 fontDescriptionRun02.sizeDefined = false;
5024 FontDescriptionRun fontDescriptionRun03;
5025 fontDescriptionRun03.characterRun.characterIndex = 22u;
5026 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5027 fontDescriptionRun03.familyLength = fontArabic.size();
5028 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5029 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5030 fontDescriptionRun03.familyDefined = true;
5031 fontDescriptionRun03.weightDefined = false;
5032 fontDescriptionRun03.widthDefined = false;
5033 fontDescriptionRun03.slantDefined = false;
5034 fontDescriptionRun03.sizeDefined = false;
5036 FontDescriptionRun fontDescriptionRun04;
5037 fontDescriptionRun04.characterRun.characterIndex = 36u;
5038 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5039 fontDescriptionRun04.familyLength = fontLatin.size();
5040 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5041 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5042 fontDescriptionRun04.familyDefined = true;
5043 fontDescriptionRun04.weightDefined = false;
5044 fontDescriptionRun04.widthDefined = false;
5045 fontDescriptionRun04.slantDefined = false;
5046 fontDescriptionRun04.sizeDefined = false;
5048 FontDescriptionRun fontDescriptionRun05;
5049 fontDescriptionRun05.characterRun.characterIndex = 48u;
5050 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5051 fontDescriptionRun05.familyLength = fontLatin.size();
5052 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5053 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5054 fontDescriptionRun05.familyDefined = true;
5055 fontDescriptionRun05.weightDefined = false;
5056 fontDescriptionRun05.widthDefined = false;
5057 fontDescriptionRun05.slantDefined = false;
5058 fontDescriptionRun05.sizeDefined = false;
5060 FontDescriptionRun fontDescriptionRun06;
5061 fontDescriptionRun06.characterRun.characterIndex = 60u;
5062 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5063 fontDescriptionRun06.familyLength = fontArabic.size();
5064 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5065 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5066 fontDescriptionRun06.familyDefined = true;
5067 fontDescriptionRun06.weightDefined = false;
5068 fontDescriptionRun06.widthDefined = false;
5069 fontDescriptionRun06.slantDefined = false;
5070 fontDescriptionRun06.sizeDefined = false;
5072 Vector<FontDescriptionRun> fontDescriptionRuns;
5073 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5074 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5075 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5076 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5077 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5078 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5080 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5082 Size textArea( 100.f, 300.f );
5085 "End alignment for the mid paragraph.",
5086 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5089 fontDescriptionRuns.Begin(),
5090 Text::HorizontalAlignment::END,
5091 Text::VerticalAlignment::TOP,
5096 Dali::LayoutDirection::LEFT_TO_RIGHT,
5100 if( !AlignTest( data ) )
5102 tet_result(TET_FAIL);
5105 tet_result(TET_PASS);
5109 int UtcDaliTextAlign09(void)
5111 ToolkitTestApplication application;
5112 tet_infoline(" UtcDaliTextAlign09");
5114 // Calculate text alignment.
5116 const std::string fontLatin( "TizenSans" );
5117 const std::string fontHebrew( "TizenSansHebrew" );
5118 const std::string fontArabic( "TizenSansArabic" );
5120 // Set a known font description
5121 FontDescriptionRun fontDescriptionRun01;
5122 fontDescriptionRun01.characterRun.characterIndex = 0u;
5123 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5124 fontDescriptionRun01.familyLength = fontLatin.size();
5125 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5126 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5127 fontDescriptionRun01.familyDefined = true;
5128 fontDescriptionRun01.weightDefined = false;
5129 fontDescriptionRun01.widthDefined = false;
5130 fontDescriptionRun01.slantDefined = false;
5131 fontDescriptionRun01.sizeDefined = false;
5133 FontDescriptionRun fontDescriptionRun02;
5134 fontDescriptionRun02.characterRun.characterIndex = 12u;
5135 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5136 fontDescriptionRun02.familyLength = fontHebrew.size();
5137 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5138 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5139 fontDescriptionRun02.familyDefined = true;
5140 fontDescriptionRun02.weightDefined = false;
5141 fontDescriptionRun02.widthDefined = false;
5142 fontDescriptionRun02.slantDefined = false;
5143 fontDescriptionRun02.sizeDefined = false;
5145 FontDescriptionRun fontDescriptionRun03;
5146 fontDescriptionRun03.characterRun.characterIndex = 22u;
5147 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5148 fontDescriptionRun03.familyLength = fontArabic.size();
5149 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5150 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5151 fontDescriptionRun03.familyDefined = true;
5152 fontDescriptionRun03.weightDefined = false;
5153 fontDescriptionRun03.widthDefined = false;
5154 fontDescriptionRun03.slantDefined = false;
5155 fontDescriptionRun03.sizeDefined = false;
5157 FontDescriptionRun fontDescriptionRun04;
5158 fontDescriptionRun04.characterRun.characterIndex = 36u;
5159 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5160 fontDescriptionRun04.familyLength = fontLatin.size();
5161 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5162 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5163 fontDescriptionRun04.familyDefined = true;
5164 fontDescriptionRun04.weightDefined = false;
5165 fontDescriptionRun04.widthDefined = false;
5166 fontDescriptionRun04.slantDefined = false;
5167 fontDescriptionRun04.sizeDefined = false;
5169 FontDescriptionRun fontDescriptionRun05;
5170 fontDescriptionRun05.characterRun.characterIndex = 48u;
5171 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5172 fontDescriptionRun05.familyLength = fontLatin.size();
5173 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5174 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5175 fontDescriptionRun05.familyDefined = true;
5176 fontDescriptionRun05.weightDefined = false;
5177 fontDescriptionRun05.widthDefined = false;
5178 fontDescriptionRun05.slantDefined = false;
5179 fontDescriptionRun05.sizeDefined = false;
5181 FontDescriptionRun fontDescriptionRun06;
5182 fontDescriptionRun06.characterRun.characterIndex = 60u;
5183 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5184 fontDescriptionRun06.familyLength = fontArabic.size();
5185 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5186 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5187 fontDescriptionRun06.familyDefined = true;
5188 fontDescriptionRun06.weightDefined = false;
5189 fontDescriptionRun06.widthDefined = false;
5190 fontDescriptionRun06.slantDefined = false;
5191 fontDescriptionRun06.sizeDefined = false;
5193 Vector<FontDescriptionRun> fontDescriptionRuns;
5194 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5195 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5196 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5197 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5198 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5199 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5201 float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 42.f };
5203 Size textArea( 100.f, 300.f );
5206 "End alignment for the last paragraph.",
5207 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5210 fontDescriptionRuns.Begin(),
5211 Text::HorizontalAlignment::END,
5212 Text::VerticalAlignment::TOP,
5217 Dali::LayoutDirection::LEFT_TO_RIGHT,
5221 if( !AlignTest( data ) )
5223 tet_result(TET_FAIL);
5226 tet_result(TET_PASS);
5230 int UtcDaliTextAlign10(void)
5232 ToolkitTestApplication application;
5233 tet_infoline(" UtcDaliTextAlign10");
5235 // Calculate text alignment.
5237 const std::string fontLatin( "TizenSans" );
5238 const std::string fontHebrew( "TizenSansHebrew" );
5239 const std::string fontArabic( "TizenSansArabic" );
5241 // Set a known font description
5242 FontDescriptionRun fontDescriptionRun01;
5243 fontDescriptionRun01.characterRun.characterIndex = 0u;
5244 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5245 fontDescriptionRun01.familyLength = fontLatin.size();
5246 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5247 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5248 fontDescriptionRun01.familyDefined = true;
5249 fontDescriptionRun01.weightDefined = false;
5250 fontDescriptionRun01.widthDefined = false;
5251 fontDescriptionRun01.slantDefined = false;
5252 fontDescriptionRun01.sizeDefined = false;
5254 FontDescriptionRun fontDescriptionRun02;
5255 fontDescriptionRun02.characterRun.characterIndex = 12u;
5256 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5257 fontDescriptionRun02.familyLength = fontHebrew.size();
5258 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5259 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5260 fontDescriptionRun02.familyDefined = true;
5261 fontDescriptionRun02.weightDefined = false;
5262 fontDescriptionRun02.widthDefined = false;
5263 fontDescriptionRun02.slantDefined = false;
5264 fontDescriptionRun02.sizeDefined = false;
5266 FontDescriptionRun fontDescriptionRun03;
5267 fontDescriptionRun03.characterRun.characterIndex = 22u;
5268 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5269 fontDescriptionRun03.familyLength = fontArabic.size();
5270 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5271 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5272 fontDescriptionRun03.familyDefined = true;
5273 fontDescriptionRun03.weightDefined = false;
5274 fontDescriptionRun03.widthDefined = false;
5275 fontDescriptionRun03.slantDefined = false;
5276 fontDescriptionRun03.sizeDefined = false;
5278 FontDescriptionRun fontDescriptionRun04;
5279 fontDescriptionRun04.characterRun.characterIndex = 36u;
5280 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5281 fontDescriptionRun04.familyLength = fontLatin.size();
5282 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5283 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5284 fontDescriptionRun04.familyDefined = true;
5285 fontDescriptionRun04.weightDefined = false;
5286 fontDescriptionRun04.widthDefined = false;
5287 fontDescriptionRun04.slantDefined = false;
5288 fontDescriptionRun04.sizeDefined = false;
5290 FontDescriptionRun fontDescriptionRun05;
5291 fontDescriptionRun05.characterRun.characterIndex = 48u;
5292 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5293 fontDescriptionRun05.familyLength = fontLatin.size();
5294 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5295 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5296 fontDescriptionRun05.familyDefined = true;
5297 fontDescriptionRun05.weightDefined = false;
5298 fontDescriptionRun05.widthDefined = false;
5299 fontDescriptionRun05.slantDefined = false;
5300 fontDescriptionRun05.sizeDefined = false;
5302 FontDescriptionRun fontDescriptionRun06;
5303 fontDescriptionRun06.characterRun.characterIndex = 60u;
5304 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5305 fontDescriptionRun06.familyLength = fontArabic.size();
5306 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5307 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5308 fontDescriptionRun06.familyDefined = true;
5309 fontDescriptionRun06.weightDefined = false;
5310 fontDescriptionRun06.widthDefined = false;
5311 fontDescriptionRun06.slantDefined = false;
5312 fontDescriptionRun06.sizeDefined = false;
5314 Vector<FontDescriptionRun> fontDescriptionRuns;
5315 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5316 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5317 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5318 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5319 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5320 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5322 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5324 Size textArea( 100.f, 300.f );
5327 "Begin alignment for the first paragraph.",
5328 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5331 fontDescriptionRuns.Begin(),
5332 Text::HorizontalAlignment::END,
5333 Text::VerticalAlignment::TOP,
5338 Dali::LayoutDirection::RIGHT_TO_LEFT,
5342 if( !AlignTest( data ) )
5344 tet_result(TET_FAIL);
5347 tet_result(TET_PASS);
5351 int UtcDaliTextAlign11(void)
5353 ToolkitTestApplication application;
5354 tet_infoline(" UtcDaliTextAlign11");
5356 // Calculate text alignment.
5358 const std::string fontLatin( "TizenSans" );
5359 const std::string fontHebrew( "TizenSansHebrew" );
5360 const std::string fontArabic( "TizenSansArabic" );
5362 // Set a known font description
5363 FontDescriptionRun fontDescriptionRun01;
5364 fontDescriptionRun01.characterRun.characterIndex = 0u;
5365 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5366 fontDescriptionRun01.familyLength = fontLatin.size();
5367 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5368 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5369 fontDescriptionRun01.familyDefined = true;
5370 fontDescriptionRun01.weightDefined = false;
5371 fontDescriptionRun01.widthDefined = false;
5372 fontDescriptionRun01.slantDefined = false;
5373 fontDescriptionRun01.sizeDefined = false;
5375 FontDescriptionRun fontDescriptionRun02;
5376 fontDescriptionRun02.characterRun.characterIndex = 12u;
5377 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5378 fontDescriptionRun02.familyLength = fontHebrew.size();
5379 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5380 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5381 fontDescriptionRun02.familyDefined = true;
5382 fontDescriptionRun02.weightDefined = false;
5383 fontDescriptionRun02.widthDefined = false;
5384 fontDescriptionRun02.slantDefined = false;
5385 fontDescriptionRun02.sizeDefined = false;
5387 FontDescriptionRun fontDescriptionRun03;
5388 fontDescriptionRun03.characterRun.characterIndex = 22u;
5389 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5390 fontDescriptionRun03.familyLength = fontArabic.size();
5391 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5392 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5393 fontDescriptionRun03.familyDefined = true;
5394 fontDescriptionRun03.weightDefined = false;
5395 fontDescriptionRun03.widthDefined = false;
5396 fontDescriptionRun03.slantDefined = false;
5397 fontDescriptionRun03.sizeDefined = false;
5399 FontDescriptionRun fontDescriptionRun04;
5400 fontDescriptionRun04.characterRun.characterIndex = 36u;
5401 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5402 fontDescriptionRun04.familyLength = fontLatin.size();
5403 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5404 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5405 fontDescriptionRun04.familyDefined = true;
5406 fontDescriptionRun04.weightDefined = false;
5407 fontDescriptionRun04.widthDefined = false;
5408 fontDescriptionRun04.slantDefined = false;
5409 fontDescriptionRun04.sizeDefined = false;
5411 FontDescriptionRun fontDescriptionRun05;
5412 fontDescriptionRun05.characterRun.characterIndex = 48u;
5413 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5414 fontDescriptionRun05.familyLength = fontLatin.size();
5415 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5416 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5417 fontDescriptionRun05.familyDefined = true;
5418 fontDescriptionRun05.weightDefined = false;
5419 fontDescriptionRun05.widthDefined = false;
5420 fontDescriptionRun05.slantDefined = false;
5421 fontDescriptionRun05.sizeDefined = false;
5423 FontDescriptionRun fontDescriptionRun06;
5424 fontDescriptionRun06.characterRun.characterIndex = 60u;
5425 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5426 fontDescriptionRun06.familyLength = fontArabic.size();
5427 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5428 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5429 fontDescriptionRun06.familyDefined = true;
5430 fontDescriptionRun06.weightDefined = false;
5431 fontDescriptionRun06.widthDefined = false;
5432 fontDescriptionRun06.slantDefined = false;
5433 fontDescriptionRun06.sizeDefined = false;
5435 Vector<FontDescriptionRun> fontDescriptionRuns;
5436 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5437 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5438 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5439 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5440 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5441 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5443 float positions[] = { 22.f, 35.f, 2.f, 0.f, 0.f, 0.f };
5445 Size textArea( 100.f, 300.f );
5448 "End alignment for the last paragraph.",
5449 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5452 fontDescriptionRuns.Begin(),
5453 Text::HorizontalAlignment::END,
5454 Text::VerticalAlignment::TOP,
5459 Dali::LayoutDirection::LEFT_TO_RIGHT,
5463 if( !AlignTest( data ) )
5465 tet_result(TET_FAIL);
5468 tet_result(TET_PASS);
5472 int UtcDaliTextAlign12(void)
5474 ToolkitTestApplication application;
5475 tet_infoline(" UtcDaliTextAlign12");
5477 // Calculate text alignment.
5479 const std::string fontLatin( "TizenSans" );
5480 const std::string fontHebrew( "TizenSansHebrew" );
5481 const std::string fontArabic( "TizenSansArabic" );
5483 // Set a known font description
5484 FontDescriptionRun fontDescriptionRun01;
5485 fontDescriptionRun01.characterRun.characterIndex = 0u;
5486 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5487 fontDescriptionRun01.familyLength = fontLatin.size();
5488 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5489 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5490 fontDescriptionRun01.familyDefined = true;
5491 fontDescriptionRun01.weightDefined = false;
5492 fontDescriptionRun01.widthDefined = false;
5493 fontDescriptionRun01.slantDefined = false;
5494 fontDescriptionRun01.sizeDefined = false;
5496 FontDescriptionRun fontDescriptionRun02;
5497 fontDescriptionRun02.characterRun.characterIndex = 12u;
5498 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5499 fontDescriptionRun02.familyLength = fontHebrew.size();
5500 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5501 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5502 fontDescriptionRun02.familyDefined = true;
5503 fontDescriptionRun02.weightDefined = false;
5504 fontDescriptionRun02.widthDefined = false;
5505 fontDescriptionRun02.slantDefined = false;
5506 fontDescriptionRun02.sizeDefined = false;
5508 FontDescriptionRun fontDescriptionRun03;
5509 fontDescriptionRun03.characterRun.characterIndex = 22u;
5510 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5511 fontDescriptionRun03.familyLength = fontArabic.size();
5512 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5513 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5514 fontDescriptionRun03.familyDefined = true;
5515 fontDescriptionRun03.weightDefined = false;
5516 fontDescriptionRun03.widthDefined = false;
5517 fontDescriptionRun03.slantDefined = false;
5518 fontDescriptionRun03.sizeDefined = false;
5520 FontDescriptionRun fontDescriptionRun04;
5521 fontDescriptionRun04.characterRun.characterIndex = 36u;
5522 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5523 fontDescriptionRun04.familyLength = fontLatin.size();
5524 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5525 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5526 fontDescriptionRun04.familyDefined = true;
5527 fontDescriptionRun04.weightDefined = false;
5528 fontDescriptionRun04.widthDefined = false;
5529 fontDescriptionRun04.slantDefined = false;
5530 fontDescriptionRun04.sizeDefined = false;
5532 FontDescriptionRun fontDescriptionRun05;
5533 fontDescriptionRun05.characterRun.characterIndex = 48u;
5534 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5535 fontDescriptionRun05.familyLength = fontLatin.size();
5536 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5537 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5538 fontDescriptionRun05.familyDefined = true;
5539 fontDescriptionRun05.weightDefined = false;
5540 fontDescriptionRun05.widthDefined = false;
5541 fontDescriptionRun05.slantDefined = false;
5542 fontDescriptionRun05.sizeDefined = false;
5544 FontDescriptionRun fontDescriptionRun06;
5545 fontDescriptionRun06.characterRun.characterIndex = 60u;
5546 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5547 fontDescriptionRun06.familyLength = fontArabic.size();
5548 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5549 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5550 fontDescriptionRun06.familyDefined = true;
5551 fontDescriptionRun06.weightDefined = false;
5552 fontDescriptionRun06.widthDefined = false;
5553 fontDescriptionRun06.slantDefined = false;
5554 fontDescriptionRun06.sizeDefined = false;
5556 Vector<FontDescriptionRun> fontDescriptionRuns;
5557 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5558 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5559 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5560 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5561 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5562 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5564 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5566 Size textArea( 100.f, 300.f );
5569 "Begin alignment for the first paragraph.",
5570 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5573 fontDescriptionRuns.Begin(),
5574 Text::HorizontalAlignment::BEGIN,
5575 Text::VerticalAlignment::TOP,
5580 Dali::LayoutDirection::LEFT_TO_RIGHT,
5584 if( !AlignTest( data ) )
5586 tet_result(TET_FAIL);
5589 tet_result(TET_PASS);
5593 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5595 ToolkitTestApplication application;
5596 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5598 Layout::Engine engine;
5599 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5601 engine.SetDefaultLineSpacing( 10.f );
5602 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5604 tet_result(TET_PASS);
5608 int UtcDaliTextLayoutGetGlyphMetrics(void)
5610 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
5612 // Test retrieving metrics from group of characters
5614 const std::string fontFamily( "TizenSansHindi" );
5616 // Set a known font description
5617 FontDescriptionRun fontDescriptionRun01;
5618 fontDescriptionRun01.characterRun.characterIndex = 0u;
5619 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
5620 fontDescriptionRun01.familyLength = fontFamily.size();
5621 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5622 memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength );
5623 fontDescriptionRun01.familyDefined = true;
5624 fontDescriptionRun01.weightDefined = false;
5625 fontDescriptionRun01.widthDefined = false;
5626 fontDescriptionRun01.slantDefined = false;
5627 fontDescriptionRun01.sizeDefined = false;
5629 // Set a known font description
5630 FontDescriptionRun fontDescriptionRun02;
5631 fontDescriptionRun02.characterRun.characterIndex = 0u;
5632 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
5633 fontDescriptionRun02.familyLength = fontFamily.size();
5634 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5635 memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
5636 fontDescriptionRun02.familyDefined = true;
5637 fontDescriptionRun02.weightDefined = false;
5638 fontDescriptionRun02.widthDefined = false;
5639 fontDescriptionRun02.slantDefined = false;
5640 fontDescriptionRun02.sizeDefined = false;
5642 // Set a known font description
5643 FontDescriptionRun fontDescriptionRun03;
5644 fontDescriptionRun03.characterRun.characterIndex = 0u;
5645 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
5646 fontDescriptionRun03.familyLength = fontFamily.size();
5647 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5648 memcpy( fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength );
5649 fontDescriptionRun03.familyDefined = true;
5650 fontDescriptionRun03.weightDefined = false;
5651 fontDescriptionRun03.widthDefined = false;
5652 fontDescriptionRun03.slantDefined = false;
5653 fontDescriptionRun03.sizeDefined = false;
5655 Vector<FontDescriptionRun> fontDescriptionRuns01;
5656 fontDescriptionRuns01.PushBack( fontDescriptionRun01 );
5658 Vector<FontDescriptionRun> fontDescriptionRuns02;
5659 fontDescriptionRuns02.PushBack( fontDescriptionRun02 );
5661 Vector<FontDescriptionRun> fontDescriptionRuns03;
5662 fontDescriptionRuns03.PushBack( fontDescriptionRun03 );
5665 Size textArea(100.f, 100.f);
5668 // Group: second glyph doesn't exceed the width of the first glyph
5669 float positions01[] = { 0.f, -11.f };
5671 struct LineRun line01 =
5684 Vector<LineRun> lines01;
5685 lines01.PushBack( line01 );
5687 Size layoutSize01 = Vector2(11.f, 19.f);
5689 // Group: second glyph doesn't exceed the width of the first glyph
5690 float positions02[] = { 0.f, -11.f , 7.f, -15.f };
5692 struct LineRun line02 =
5705 Vector<LineRun> lines02;
5706 lines02.PushBack( line02 );
5708 Size layoutSize02 = Vector2(15.f, 19.f);
5710 // Group: second glyph doesn't exceed the width of the first glyph
5711 float positions03[] = { 0.f, -11.f , 2.f, -15.f };
5713 struct LineRun line03 =
5726 Vector<LineRun> lines03;
5727 lines03.PushBack( line03 );
5729 Size layoutSize03 = Vector2(11.f, 19.f);
5731 /////////////////////////////
5733 struct LayoutTextData data[] =
5740 fontDescriptionRuns01.Begin(),
5746 Layout::Engine::SINGLE_LINE_BOX,
5753 "Group: second glyph exceeds the width of the first glyph",
5757 fontDescriptionRuns02.Begin(),
5763 Layout::Engine::SINGLE_LINE_BOX,
5770 "Group: second glyph doesn't exceed the width of the first glyph",
5774 fontDescriptionRuns03.Begin(),
5780 Layout::Engine::SINGLE_LINE_BOX,
5787 const unsigned int numberOfTests = sizeof(data)/sizeof(LayoutTextData);
5789 for( unsigned int index = 0u; index < numberOfTests; ++index )
5791 ToolkitTestApplication application;
5792 if( !LayoutTextTest( data[index] ) )
5794 tet_result(TET_FAIL);
5798 tet_result(TET_PASS);