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" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
115 // 2) Clear the layout.
116 Vector<LineRun>& lines = visualModel->mLines;
118 const Length numberOfCharacters = logicalModel->mText.Count();
119 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
120 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
121 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
123 LineIndex startRemoveIndex = 0u;
125 if( 0u != lines.Count() )
127 startRemoveIndex = lines.Count();
128 LineIndex endRemoveIndex = startRemoveIndex;
129 ClearGlyphRuns( data.startIndex,
130 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
135 // Update the character runs of the lines.
136 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
137 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
138 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
139 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
140 ClearCharacterRuns( startCharacterIndex,
141 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
146 lines.Erase( lines.Begin() + startRemoveIndex,
147 lines.Begin() + endRemoveIndex );
150 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
152 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
153 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
156 Layout::Engine engine;
157 engine.SetMetrics( metrics );
158 engine.SetLayout( data.layout );
160 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 float outlineWidth = visualModel->GetOutlineWidth();
163 Layout::Parameters layoutParameters( data.textArea,
164 logicalModel->mText.Begin(),
165 logicalModel->mLineBreakInfo.Begin(),
166 logicalModel->mWordBreakInfo.Begin(),
167 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
168 visualModel->mGlyphs.Begin(),
169 visualModel->mGlyphsToCharacters.Begin(),
170 visualModel->mCharactersPerGlyph.Begin(),
171 visualModel->mCharactersToGlyph.Begin(),
172 visualModel->mGlyphsPerCharacter.Begin(),
174 Text::HorizontalAlignment::BEGIN,
175 Text::LineWrap::WORD,
180 layoutParameters.isLastNewParagraph = isLastNewParagraph;
182 // The initial glyph and the number of glyphs to layout.
183 layoutParameters.startGlyphIndex = data.startIndex;
184 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
185 layoutParameters.startLineIndex = startRemoveIndex;
186 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
188 layoutSize = Vector2::ZERO;
190 bool isAutoScroll = false;
191 const bool updated = engine.LayoutText( layoutParameters,
198 // 4) Compare the results.
200 if( updated != data.updated )
202 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
206 if( layoutSize != data.layoutSize )
208 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
212 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
214 const Vector2& position = *( glyphPositions.Begin() + index );
216 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
218 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
221 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
223 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
228 if( lines.Count() != data.numberOfLines )
230 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
234 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
236 const LineRun& line = *( lines.Begin() + index );
237 const LineRun& expectedLine = *( data.lines + index );
239 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
241 std::cout << " Different line info for line : " << index << std::endl;
243 std::cout << " expected" << std::endl;
244 Print( expectedLine );
247 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
249 std::cout << " Different line info for line : " << index << std::endl;
251 std::cout << " expected" << std::endl;
252 Print( expectedLine );
256 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
258 std::cout << " Different line info for line : " << index << std::endl;
260 std::cout << " expected" << std::endl;
261 Print( expectedLine );
264 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
266 std::cout << " Different line info for line : " << index << std::endl;
268 std::cout << " expected" << std::endl;
269 Print( expectedLine );
273 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
275 std::cout << " Different line info for line : " << index << std::endl;
277 std::cout << " expected" << std::endl;
278 Print( expectedLine );
282 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
284 std::cout << " Different line info for line : " << index << std::endl;
286 std::cout << " expected" << std::endl;
287 Print( expectedLine );
291 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
293 std::cout << " Different line info for line : " << index << std::endl;
295 std::cout << " expected" << std::endl;
296 Print( expectedLine );
300 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
302 std::cout << " Different line info for line : " << index << std::endl;
304 std::cout << " expected" << std::endl;
305 Print( expectedLine );
309 if( line.ellipsis != expectedLine.ellipsis )
311 std::cout << " Different line info for line : " << index << std::endl;
313 std::cout << " expected" << std::endl;
314 Print( expectedLine );
318 // Do not compare the alignment offset as it's not calculated in the layout.
319 // Do not compare the line direction as it's not set in the layout.
325 //////////////////////////////////////////////////////////
327 struct ReLayoutRightToLeftLinesData
329 std::string description;
332 unsigned int numberOfFonts;
333 FontDescriptionRun* fontDescriptions;
334 unsigned int totalNumberOfGlyphs;
336 unsigned int startIndex;
337 unsigned int numberOfCharacters;
340 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
343 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
344 fontClient.SetDpi( 96u, 96u );
346 char* pathNamePtr = get_current_dir_name();
347 const std::string pathName( pathNamePtr );
350 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
351 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
352 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
354 // 1) Create the model.
355 LogicalModelPtr logicalModel;
356 VisualModelPtr visualModel;
360 Vector<FontDescriptionRun> fontDescriptionRuns;
361 if( 0u != data.numberOfFonts )
363 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
364 data.fontDescriptions,
365 data.fontDescriptions + data.numberOfFonts );
368 LayoutOptions options;
369 options.reorder = false;
370 options.align = false;
371 CreateTextModel( data.text,
381 // 2) Call the ReLayoutRightToLeftLines() method.
382 Layout::Engine engine;
383 engine.SetMetrics( metrics );
385 float outlineWidth = visualModel->GetOutlineWidth();
386 Layout::Parameters layoutParameters( data.textArea,
387 logicalModel->mText.Begin(),
388 logicalModel->mLineBreakInfo.Begin(),
389 logicalModel->mWordBreakInfo.Begin(),
390 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
391 visualModel->mGlyphs.Begin(),
392 visualModel->mGlyphsToCharacters.Begin(),
393 visualModel->mCharactersPerGlyph.Begin(),
394 visualModel->mCharactersToGlyph.Begin(),
395 visualModel->mGlyphsPerCharacter.Begin(),
396 visualModel->mGlyphs.Count(),
397 Text::HorizontalAlignment::BEGIN,
398 Text::LineWrap::WORD,
403 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
404 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
406 engine.ReLayoutRightToLeftLines( layoutParameters,
408 data.numberOfCharacters,
409 visualModel->mGlyphPositions );
411 // 3) Compare the results.
412 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
414 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
416 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
420 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
422 const Vector2& position = *( glyphPositions.Begin() + index );
424 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
426 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
429 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
431 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
439 //////////////////////////////////////////////////////////
443 std::string description;
446 unsigned int numberOfFonts;
447 FontDescriptionRun* fontDescriptions;
448 Text::HorizontalAlignment::Type horizontalAlignment;
449 Text::VerticalAlignment::Type verticalAlignment;
450 unsigned int startIndex;
451 unsigned int numberOfCharacters;
452 unsigned int numberOfLines;
454 Dali::LayoutDirection::Type layoutDirection;
455 bool matchSystemLanguageDirection;
458 bool AlignTest( const AlignData& data )
461 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
462 fontClient.SetDpi( 96u, 96u );
464 char* pathNamePtr = get_current_dir_name();
465 const std::string pathName( pathNamePtr );
468 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
469 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
470 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
472 // 1) Create the model.
473 LogicalModelPtr logicalModel;
474 VisualModelPtr visualModel;
478 Vector<FontDescriptionRun> fontDescriptionRuns;
479 if( 0u != data.numberOfFonts )
481 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
482 data.fontDescriptions,
483 data.fontDescriptions + data.numberOfFonts );
486 LayoutOptions options;
487 options.align = false;
488 CreateTextModel( data.text,
498 // Call the Align method.
499 Layout::Engine engine;
500 engine.SetMetrics( metrics );
502 float alignmentOffset = 0.f;
503 engine.Align( data.textArea,
505 data.numberOfCharacters,
506 data.horizontalAlignment,
509 data.layoutDirection,
510 data.matchSystemLanguageDirection );
513 if( data.numberOfLines != visualModel->mLines.Count() )
515 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
519 const LineRun* const linesBuffer = visualModel->mLines.Begin();
520 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
522 const LineRun& line = *( linesBuffer + index );
524 if( line.alignmentOffset != *( data.lineOffsets + index ) )
526 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
535 //////////////////////////////////////////////////////////
537 // UtcDaliTextLayoutSetGetLayout
538 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
539 // UtcDaliTextLayoutSetGetHorizontalAlignment
540 // UtcDaliTextLayoutSetGetVerticalAlignment
541 // UtcDaliTextLayoutSetGetCursorWidth
542 // UtcDaliTextLayoutNoText
543 // UtcDaliTextLayoutSmallTextArea01
544 // UtcDaliTextLayoutSmallTextArea02
545 // UtcDaliTextLayoutMultilineText01
546 // UtcDaliTextLayoutMultilineText02
547 // UtcDaliTextLayoutMultilineText03
548 // UtcDaliTextLayoutMultilineText04
549 // UtcDaliTextLayoutMultilineText05
550 // UtcDaliTextUpdateLayout01
551 // UtcDaliTextUpdateLayout02
552 // UtcDaliTextUpdateLayout03
553 // UtcDaliTextLayoutEllipsis01
554 // UtcDaliTextLayoutEllipsis02
555 // UtcDaliTextLayoutEllipsis03
556 // UtcDaliTextLayoutEllipsis04
557 // UtcDaliTextLayoutEllipsis04
558 // UtcDaliTextReorderLayout01
559 // UtcDaliTextReorderLayout02
560 // UtcDaliTextReorderLayout03
561 // UtcDaliTextReorderLayout04
562 // UtcDaliTextAlign01
563 // UtcDaliTextAlign02
564 // UtcDaliTextAlign03
565 // UtcDaliTextAlign04
566 // UtcDaliTextAlign05
567 // UtcDaliTextAlign06
568 // UtcDaliTextAlign07
569 // UtcDaliTextAlign08
570 // UtcDaliTextAlign09
572 //////////////////////////////////////////////////////////
574 int UtcDaliTextLayoutSetGetLayout(void)
576 ToolkitTestApplication application;
577 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
579 Layout::Engine engine;
581 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
583 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
584 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
586 tet_result(TET_PASS);
590 int UtcDaliTextLayoutSetGetCursorWidth(void)
592 ToolkitTestApplication application;
595 Layout::Engine engine;
597 DALI_TEST_EQUALS( 0, engine.GetCursorWidth(), TEST_LOCATION );
599 engine.SetCursorWidth( 2 );
600 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
602 tet_result(TET_PASS);
606 int UtcDaliTextLayoutNoText(void)
608 ToolkitTestApplication application;
609 tet_infoline(" UtcDaliTextLayoutNoText");
611 Size textArea(100.f, 60.f);
612 Size layoutSize = Vector2::ZERO;
613 LayoutTextData data =
625 Layout::Engine::MULTI_LINE_BOX,
632 if( !LayoutTextTest( data ) )
634 tet_result(TET_FAIL);
637 tet_result(TET_PASS);
641 int UtcDaliTextLayoutSmallTextArea01(void)
643 ToolkitTestApplication application;
644 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
646 // Won't layout the text in multi-line if the width is too small.
648 const std::string fontFamily( "TizenSans" );
650 // Set a known font description
651 FontDescriptionRun fontDescriptionRun;
652 fontDescriptionRun.characterRun.characterIndex = 0u;
653 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
654 fontDescriptionRun.familyLength = fontFamily.size();
655 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
656 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
657 fontDescriptionRun.familyDefined = true;
658 fontDescriptionRun.weightDefined = false;
659 fontDescriptionRun.widthDefined = false;
660 fontDescriptionRun.slantDefined = false;
661 fontDescriptionRun.sizeDefined = false;
663 Vector<FontDescriptionRun> fontDescriptionRuns;
664 fontDescriptionRuns.PushBack( fontDescriptionRun );
665 Size textArea(1.f, 1.f);
666 Size layoutSize = Vector2::ZERO;
667 LayoutTextData data =
669 "Layout text in a small area",
673 fontDescriptionRuns.Begin(),
679 Layout::Engine::MULTI_LINE_BOX,
686 if( !LayoutTextTest( data ) )
688 tet_result(TET_FAIL);
691 tet_result(TET_PASS);
695 int UtcDaliTextLayoutSmallTextArea02(void)
697 ToolkitTestApplication application;
698 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
700 // Will layout the text in single line as it can be scrolled.
702 const std::string fontFamily( "TizenSans" );
704 // Set a known font description
705 FontDescriptionRun fontDescriptionRun;
706 fontDescriptionRun.characterRun.characterIndex = 0u;
707 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
708 fontDescriptionRun.familyLength = fontFamily.size();
709 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
710 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
711 fontDescriptionRun.familyDefined = true;
712 fontDescriptionRun.weightDefined = false;
713 fontDescriptionRun.widthDefined = false;
714 fontDescriptionRun.slantDefined = false;
715 fontDescriptionRun.sizeDefined = false;
717 Vector<FontDescriptionRun> fontDescriptionRuns;
718 fontDescriptionRuns.PushBack( fontDescriptionRun );
719 Size textArea(1.f, 1.f);
720 Size layoutSize(78.f, 19.f);
721 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 };
722 struct LineRun line =
735 Vector<LineRun> lines;
736 lines.PushBack( line );
738 LayoutTextData data =
740 "Layout text in a small area",
744 fontDescriptionRuns.Begin(),
750 Layout::Engine::SINGLE_LINE_BOX,
757 if( !LayoutTextTest( data ) )
759 tet_result(TET_FAIL);
762 tet_result(TET_PASS);
766 int UtcDaliTextLayoutMultilineText01(void)
768 ToolkitTestApplication application;
769 tet_infoline(" UtcDaliTextLayoutMultilineText01");
771 // Layout some lines of left to right text.
773 const std::string fontFamily( "TizenSans" );
775 // Set a known font description
776 FontDescriptionRun fontDescriptionRun1;
777 fontDescriptionRun1.characterRun.characterIndex = 0u;
778 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
779 fontDescriptionRun1.familyLength = fontFamily.size();
780 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
781 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
782 fontDescriptionRun1.familyDefined = true;
783 fontDescriptionRun1.weightDefined = false;
784 fontDescriptionRun1.widthDefined = false;
785 fontDescriptionRun1.slantDefined = false;
786 fontDescriptionRun1.sizeDefined = false;
788 FontDescriptionRun fontDescriptionRun2;
789 fontDescriptionRun2.characterRun.characterIndex = 18u;
790 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
791 fontDescriptionRun2.familyLength = fontFamily.size();
792 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
793 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
794 fontDescriptionRun2.familyDefined = true;
795 fontDescriptionRun2.weightDefined = false;
796 fontDescriptionRun2.widthDefined = false;
797 fontDescriptionRun2.slantDefined = false;
798 fontDescriptionRun2.sizeDefined = false;
800 Vector<FontDescriptionRun> fontDescriptionRuns;
801 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
802 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
803 Size textArea(100.f, 300.f);
804 Size layoutSize(91.f, 95.f);
807 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,
808 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
809 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,
810 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,
811 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
813 struct LineRun line0 =
826 struct LineRun line1 =
839 struct LineRun line2 =
852 struct LineRun line3 =
865 struct LineRun line4 =
878 Vector<LineRun> lines;
879 lines.PushBack( line0 );
880 lines.PushBack( line1 );
881 lines.PushBack( line2 );
882 lines.PushBack( line3 );
883 lines.PushBack( line4 );
885 LayoutTextData data =
887 "Layout simple multi-line text",
888 "Hello world demo.\n"
889 "Layout different lines of text.",
892 fontDescriptionRuns.Begin(),
898 Layout::Engine::MULTI_LINE_BOX,
905 if( !LayoutTextTest( data ) )
907 tet_result(TET_FAIL);
910 tet_result(TET_PASS);
914 int UtcDaliTextLayoutMultilineText02(void)
916 ToolkitTestApplication application;
917 tet_infoline(" UtcDaliTextLayoutMultilineText02");
919 // Layout some lines of bidirectional text.
921 const std::string fontFamily1( "TizenSans" );
923 // Set a known font description
924 FontDescriptionRun fontDescriptionRun1;
925 fontDescriptionRun1.characterRun.characterIndex = 0u;
926 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
927 fontDescriptionRun1.familyLength = fontFamily1.size();
928 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
929 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
930 fontDescriptionRun1.familyDefined = true;
931 fontDescriptionRun1.weightDefined = false;
932 fontDescriptionRun1.widthDefined = false;
933 fontDescriptionRun1.slantDefined = false;
934 fontDescriptionRun1.sizeDefined = false;
936 const std::string fontFamily2( "TizenSansHebrew" );
938 // Set a known font description
939 FontDescriptionRun fontDescriptionRun2;
940 fontDescriptionRun2.characterRun.characterIndex = 17u;
941 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
942 fontDescriptionRun2.familyLength = fontFamily2.size();
943 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
944 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
945 fontDescriptionRun2.familyDefined = true;
946 fontDescriptionRun2.weightDefined = false;
947 fontDescriptionRun2.widthDefined = false;
948 fontDescriptionRun2.slantDefined = false;
949 fontDescriptionRun2.sizeDefined = false;
951 const std::string fontFamily3( "TizenSans" );
953 // Set a known font description
954 FontDescriptionRun fontDescriptionRun3;
955 fontDescriptionRun3.characterRun.characterIndex = 26u;
956 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
957 fontDescriptionRun3.familyLength = fontFamily3.size();
958 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
959 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
960 fontDescriptionRun3.familyDefined = true;
961 fontDescriptionRun3.weightDefined = false;
962 fontDescriptionRun3.widthDefined = false;
963 fontDescriptionRun3.slantDefined = false;
964 fontDescriptionRun3.sizeDefined = false;
966 const std::string fontFamily4( "TizenSansHebrew" );
968 // Set a known font description
969 FontDescriptionRun fontDescriptionRun4;
970 fontDescriptionRun4.characterRun.characterIndex = 28u;
971 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
972 fontDescriptionRun4.familyLength = fontFamily4.size();
973 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
974 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
975 fontDescriptionRun4.familyDefined = true;
976 fontDescriptionRun4.weightDefined = false;
977 fontDescriptionRun4.widthDefined = false;
978 fontDescriptionRun4.slantDefined = false;
979 fontDescriptionRun4.sizeDefined = false;
981 const std::string fontFamily5( "TizenSans" );
983 // Set a known font description
984 FontDescriptionRun fontDescriptionRun5;
985 fontDescriptionRun5.characterRun.characterIndex = 38u;
986 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
987 fontDescriptionRun5.familyLength = fontFamily5.size();
988 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
989 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
990 fontDescriptionRun5.familyDefined = true;
991 fontDescriptionRun5.weightDefined = false;
992 fontDescriptionRun5.widthDefined = false;
993 fontDescriptionRun5.slantDefined = false;
994 fontDescriptionRun5.sizeDefined = false;
996 Vector<FontDescriptionRun> fontDescriptionRuns;
997 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
998 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
999 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1000 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
1001 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
1002 Size textArea(100.f, 300.f);
1003 Size layoutSize(78.f, 114.f);
1006 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,
1007 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,
1008 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1009 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,
1010 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,
1011 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1013 struct LineRun line0 =
1026 struct LineRun line1 =
1039 struct LineRun line2 =
1052 struct LineRun line3 =
1065 struct LineRun line4 =
1078 struct LineRun line5 =
1091 Vector<LineRun> lines;
1092 lines.PushBack( line0 );
1093 lines.PushBack( line1 );
1094 lines.PushBack( line2 );
1095 lines.PushBack( line3 );
1096 lines.PushBack( line4 );
1097 lines.PushBack( line5 );
1099 LayoutTextData data =
1101 "Layout bidirectional text.",
1102 "Hello world demo שלום עולם.\n"
1103 "שלום עולם hello world demo.",
1106 fontDescriptionRuns.Begin(),
1112 Layout::Engine::MULTI_LINE_BOX,
1119 if( !LayoutTextTest( data ) )
1121 tet_result(TET_FAIL);
1124 tet_result(TET_PASS);
1128 int UtcDaliTextLayoutMultilineText03(void)
1130 ToolkitTestApplication application;
1131 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1133 // Layout a long word which doesn't fit in the width of the text area.
1135 const std::string fontFamily( "TizenSans" );
1137 // Set a known font description
1138 FontDescriptionRun fontDescriptionRun;
1139 fontDescriptionRun.characterRun.characterIndex = 0u;
1140 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1141 fontDescriptionRun.familyLength = fontFamily.size();
1142 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1143 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1144 fontDescriptionRun.familyDefined = true;
1145 fontDescriptionRun.weightDefined = false;
1146 fontDescriptionRun.widthDefined = false;
1147 fontDescriptionRun.slantDefined = false;
1148 fontDescriptionRun.sizeDefined = false;
1150 Vector<FontDescriptionRun> fontDescriptionRuns;
1151 fontDescriptionRuns.PushBack( fontDescriptionRun );
1152 Size textArea(100.f, 300.f);
1153 Size layoutSize(94.f, 57.f);
1156 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,
1157 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,
1158 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1160 struct LineRun line0 =
1173 struct LineRun line1 =
1186 struct LineRun line2 =
1199 Vector<LineRun> lines;
1200 lines.PushBack( line0 );
1201 lines.PushBack( line1 );
1202 lines.PushBack( line2 );
1204 LayoutTextData data =
1206 "Layout a long word which doesn't fit in the width of the text area.",
1207 "Helloworlddemohelloworlddemo.",
1210 fontDescriptionRuns.Begin(),
1216 Layout::Engine::MULTI_LINE_BOX,
1223 if( !LayoutTextTest( data ) )
1225 tet_result(TET_FAIL);
1228 tet_result(TET_PASS);
1232 int UtcDaliTextLayoutMultilineText04(void)
1234 ToolkitTestApplication application;
1235 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1237 // Layout simple text ending with a \n. It has to add a void line at the end.
1239 const std::string fontFamily( "TizenSans" );
1241 // Set a known font description
1242 FontDescriptionRun fontDescriptionRun;
1243 fontDescriptionRun.characterRun.characterIndex = 0u;
1244 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1245 fontDescriptionRun.familyLength = fontFamily.size();
1246 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1247 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1248 fontDescriptionRun.familyDefined = true;
1249 fontDescriptionRun.weightDefined = false;
1250 fontDescriptionRun.widthDefined = false;
1251 fontDescriptionRun.slantDefined = false;
1252 fontDescriptionRun.sizeDefined = false;
1254 Vector<FontDescriptionRun> fontDescriptionRuns;
1255 fontDescriptionRuns.PushBack( fontDescriptionRun );
1256 Size textArea(100.f, 300.f);
1257 Size layoutSize(81.f, 38.f);
1260 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
1262 struct LineRun line0 =
1274 struct LineRun line1 =
1287 Vector<LineRun> lines;
1288 lines.PushBack( line0 );
1289 lines.PushBack( line1 );
1291 LayoutTextData data =
1293 "Layout simple text ending with a \n.",
1297 fontDescriptionRuns.Begin(),
1303 Layout::Engine::MULTI_LINE_BOX,
1310 if( !LayoutTextTest( data ) )
1312 tet_result(TET_FAIL);
1315 tet_result(TET_PASS);
1319 int UtcDaliTextLayoutMultilineText05(void)
1321 ToolkitTestApplication application;
1322 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1324 // Layout simple text with one character with a different font size.
1326 const std::string fontFamily( "TizenSans" );
1328 // Set a known font description
1329 FontDescriptionRun fontDescriptionRun1;
1330 fontDescriptionRun1.characterRun.characterIndex = 0u;
1331 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1332 fontDescriptionRun1.familyLength = fontFamily.size();
1333 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1334 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1335 fontDescriptionRun1.familyDefined = true;
1336 fontDescriptionRun1.weightDefined = false;
1337 fontDescriptionRun1.widthDefined = false;
1338 fontDescriptionRun1.slantDefined = false;
1339 fontDescriptionRun1.sizeDefined = false;
1341 FontDescriptionRun fontDescriptionRun2;
1342 fontDescriptionRun2.characterRun.characterIndex = 6u;
1343 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1344 fontDescriptionRun2.familyLength = fontFamily.size();
1345 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1346 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1347 fontDescriptionRun2.size = 1280u;
1348 fontDescriptionRun2.familyDefined = true;
1349 fontDescriptionRun2.weightDefined = false;
1350 fontDescriptionRun2.widthDefined = false;
1351 fontDescriptionRun2.slantDefined = false;
1352 fontDescriptionRun2.sizeDefined = true;
1354 FontDescriptionRun fontDescriptionRun3;
1355 fontDescriptionRun3.characterRun.characterIndex = 7u;
1356 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1357 fontDescriptionRun3.familyLength = fontFamily.size();
1358 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1359 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1360 fontDescriptionRun3.familyDefined = true;
1361 fontDescriptionRun3.weightDefined = false;
1362 fontDescriptionRun3.widthDefined = false;
1363 fontDescriptionRun3.slantDefined = false;
1364 fontDescriptionRun3.sizeDefined = false;
1366 Vector<FontDescriptionRun> fontDescriptionRuns;
1367 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1368 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1369 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1370 Size textArea(100.f, 300.f);
1371 Size layoutSize(87.f, 51.f);
1374 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,
1375 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1377 struct LineRun line0 =
1390 struct LineRun line1 =
1403 Vector<LineRun> lines;
1404 lines.PushBack( line0 );
1405 lines.PushBack( line1 );
1407 LayoutTextData data =
1409 "Layout simple text with one character with a different font size.",
1410 "Hello world demo.",
1413 fontDescriptionRuns.Begin(),
1419 Layout::Engine::MULTI_LINE_BOX,
1426 if( !LayoutTextTest( data ) )
1428 tet_result(TET_FAIL);
1431 tet_result(TET_PASS);
1435 int UtcDaliTextUpdateLayout01(void)
1437 ToolkitTestApplication application;
1438 tet_infoline(" UtcDaliTextUpdateLayout01");
1440 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1442 const std::string fontLatin( "TizenSans" );
1443 const std::string fontHebrew( "TizenSansHebrew" );
1444 const std::string fontArabic( "TizenSansArabic" );
1446 // Set a known font description
1447 FontDescriptionRun fontDescriptionRun01;
1448 fontDescriptionRun01.characterRun.characterIndex = 0u;
1449 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1450 fontDescriptionRun01.familyLength = fontLatin.size();
1451 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1452 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1453 fontDescriptionRun01.familyDefined = true;
1454 fontDescriptionRun01.weightDefined = false;
1455 fontDescriptionRun01.widthDefined = false;
1456 fontDescriptionRun01.slantDefined = false;
1457 fontDescriptionRun01.sizeDefined = false;
1459 // Set a known font description
1460 FontDescriptionRun fontDescriptionRun02;
1461 fontDescriptionRun02.characterRun.characterIndex = 17u;
1462 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1463 fontDescriptionRun02.familyLength = fontHebrew.size();
1464 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1465 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1466 fontDescriptionRun02.familyDefined = true;
1467 fontDescriptionRun02.weightDefined = false;
1468 fontDescriptionRun02.widthDefined = false;
1469 fontDescriptionRun02.slantDefined = false;
1470 fontDescriptionRun02.sizeDefined = false;
1472 // Set a known font description
1473 FontDescriptionRun fontDescriptionRun03;
1474 fontDescriptionRun03.characterRun.characterIndex = 26u;
1475 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1476 fontDescriptionRun03.familyLength = fontLatin.size();
1477 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1478 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1479 fontDescriptionRun03.familyDefined = true;
1480 fontDescriptionRun03.weightDefined = false;
1481 fontDescriptionRun03.widthDefined = false;
1482 fontDescriptionRun03.slantDefined = false;
1483 fontDescriptionRun03.sizeDefined = false;
1485 // Set a known font description
1486 FontDescriptionRun fontDescriptionRun04;
1487 fontDescriptionRun04.characterRun.characterIndex = 28u;
1488 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1489 fontDescriptionRun04.familyLength = fontArabic.size();
1490 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1491 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1492 fontDescriptionRun04.familyDefined = true;
1493 fontDescriptionRun04.weightDefined = false;
1494 fontDescriptionRun04.widthDefined = false;
1495 fontDescriptionRun04.slantDefined = false;
1496 fontDescriptionRun04.sizeDefined = false;
1498 // Set a known font description
1499 FontDescriptionRun fontDescriptionRun05;
1500 fontDescriptionRun05.characterRun.characterIndex = 42u;
1501 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1502 fontDescriptionRun05.familyLength = fontLatin.size();
1503 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1504 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1505 fontDescriptionRun05.familyDefined = true;
1506 fontDescriptionRun05.weightDefined = false;
1507 fontDescriptionRun05.widthDefined = false;
1508 fontDescriptionRun05.slantDefined = false;
1509 fontDescriptionRun05.sizeDefined = false;
1511 // Set a known font description
1512 FontDescriptionRun fontDescriptionRun06;
1513 fontDescriptionRun06.characterRun.characterIndex = 54u;
1514 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1515 fontDescriptionRun06.familyLength = fontHebrew.size();
1516 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1517 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1518 fontDescriptionRun06.familyDefined = true;
1519 fontDescriptionRun06.weightDefined = false;
1520 fontDescriptionRun06.widthDefined = false;
1521 fontDescriptionRun06.slantDefined = false;
1522 fontDescriptionRun06.sizeDefined = false;
1524 // Set a known font description
1525 FontDescriptionRun fontDescriptionRun07;
1526 fontDescriptionRun07.characterRun.characterIndex = 64u;
1527 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1528 fontDescriptionRun07.familyLength = fontHebrew.size();
1529 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1530 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1531 fontDescriptionRun07.familyDefined = true;
1532 fontDescriptionRun07.weightDefined = false;
1533 fontDescriptionRun07.widthDefined = false;
1534 fontDescriptionRun07.slantDefined = false;
1535 fontDescriptionRun07.sizeDefined = false;
1537 // Set a known font description
1538 FontDescriptionRun fontDescriptionRun08;
1539 fontDescriptionRun08.characterRun.characterIndex = 74u;
1540 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1541 fontDescriptionRun08.familyLength = fontLatin.size();
1542 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1543 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1544 fontDescriptionRun08.familyDefined = true;
1545 fontDescriptionRun08.weightDefined = false;
1546 fontDescriptionRun08.widthDefined = false;
1547 fontDescriptionRun08.slantDefined = false;
1548 fontDescriptionRun08.sizeDefined = false;
1550 // Set a known font description
1551 FontDescriptionRun fontDescriptionRun09;
1552 fontDescriptionRun09.characterRun.characterIndex = 92u;
1553 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1554 fontDescriptionRun09.familyLength = fontLatin.size();
1555 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1556 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1557 fontDescriptionRun09.familyDefined = true;
1558 fontDescriptionRun09.weightDefined = false;
1559 fontDescriptionRun09.widthDefined = false;
1560 fontDescriptionRun09.slantDefined = false;
1561 fontDescriptionRun09.sizeDefined = false;
1563 // Set a known font description
1564 FontDescriptionRun fontDescriptionRun10;
1565 fontDescriptionRun10.characterRun.characterIndex = 104u;
1566 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1567 fontDescriptionRun10.familyLength = fontArabic.size();
1568 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1569 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1570 fontDescriptionRun10.familyDefined = true;
1571 fontDescriptionRun10.weightDefined = false;
1572 fontDescriptionRun10.widthDefined = false;
1573 fontDescriptionRun10.slantDefined = false;
1574 fontDescriptionRun10.sizeDefined = false;
1576 // Set a known font description
1577 FontDescriptionRun fontDescriptionRun11;
1578 fontDescriptionRun11.characterRun.characterIndex = 118u;
1579 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1580 fontDescriptionRun11.familyLength = fontHebrew.size();
1581 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1582 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1583 fontDescriptionRun11.familyDefined = true;
1584 fontDescriptionRun11.weightDefined = false;
1585 fontDescriptionRun11.widthDefined = false;
1586 fontDescriptionRun11.slantDefined = false;
1587 fontDescriptionRun11.sizeDefined = false;
1589 // Set a known font description
1590 FontDescriptionRun fontDescriptionRun12;
1591 fontDescriptionRun12.characterRun.characterIndex = 128u;
1592 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1593 fontDescriptionRun12.familyLength = fontLatin.size();
1594 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1595 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1596 fontDescriptionRun12.familyDefined = true;
1597 fontDescriptionRun12.weightDefined = false;
1598 fontDescriptionRun12.widthDefined = false;
1599 fontDescriptionRun12.slantDefined = false;
1600 fontDescriptionRun12.sizeDefined = false;
1602 // Set a known font description
1603 FontDescriptionRun fontDescriptionRun13;
1604 fontDescriptionRun13.characterRun.characterIndex = 145u;
1605 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1606 fontDescriptionRun13.familyLength = fontHebrew.size();
1607 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1608 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1609 fontDescriptionRun13.familyDefined = true;
1610 fontDescriptionRun13.weightDefined = false;
1611 fontDescriptionRun13.widthDefined = false;
1612 fontDescriptionRun13.slantDefined = false;
1613 fontDescriptionRun13.sizeDefined = false;
1615 // Set a known font description
1616 FontDescriptionRun fontDescriptionRun14;
1617 fontDescriptionRun14.characterRun.characterIndex = 154u;
1618 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1619 fontDescriptionRun14.familyLength = fontLatin.size();
1620 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1621 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1622 fontDescriptionRun14.familyDefined = true;
1623 fontDescriptionRun14.weightDefined = false;
1624 fontDescriptionRun14.widthDefined = false;
1625 fontDescriptionRun14.slantDefined = false;
1626 fontDescriptionRun14.sizeDefined = false;
1628 // Set a known font description
1629 FontDescriptionRun fontDescriptionRun15;
1630 fontDescriptionRun15.characterRun.characterIndex = 156u;
1631 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1632 fontDescriptionRun15.familyLength = fontHebrew.size();
1633 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1634 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1635 fontDescriptionRun15.familyDefined = true;
1636 fontDescriptionRun15.weightDefined = false;
1637 fontDescriptionRun15.widthDefined = false;
1638 fontDescriptionRun15.slantDefined = false;
1639 fontDescriptionRun15.sizeDefined = false;
1641 // Set a known font description
1642 FontDescriptionRun fontDescriptionRun16;
1643 fontDescriptionRun16.characterRun.characterIndex = 166u;
1644 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1645 fontDescriptionRun16.familyLength = fontLatin.size();
1646 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1647 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1648 fontDescriptionRun16.familyDefined = true;
1649 fontDescriptionRun16.weightDefined = false;
1650 fontDescriptionRun16.widthDefined = false;
1651 fontDescriptionRun16.slantDefined = false;
1652 fontDescriptionRun16.sizeDefined = false;
1654 // Set a known font description
1655 FontDescriptionRun fontDescriptionRun17;
1656 fontDescriptionRun17.characterRun.characterIndex = 178u;
1657 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1658 fontDescriptionRun17.familyLength = fontArabic.size();
1659 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1660 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1661 fontDescriptionRun17.familyDefined = true;
1662 fontDescriptionRun17.weightDefined = false;
1663 fontDescriptionRun17.widthDefined = false;
1664 fontDescriptionRun17.slantDefined = false;
1665 fontDescriptionRun17.sizeDefined = false;
1667 Vector<FontDescriptionRun> fontDescriptionRuns;
1668 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1675 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1676 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1677 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1678 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1679 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1680 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1681 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1682 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1683 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1684 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1685 Size textArea(100.f, 300.f);
1686 Size layoutSize(92.f, 361.f);
1689 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,
1690 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,
1691 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1692 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,
1693 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,
1694 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1695 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,
1696 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,
1697 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1698 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,
1699 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,
1700 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1701 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,
1702 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,
1703 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1704 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,
1705 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,
1706 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,
1709 struct LineRun line01 =
1722 struct LineRun line02 =
1735 struct LineRun line03 =
1748 struct LineRun line04 =
1761 struct LineRun line05 =
1774 struct LineRun line06 =
1787 struct LineRun line07 =
1800 struct LineRun line08 =
1813 struct LineRun line09 =
1826 struct LineRun line10 =
1839 struct LineRun line11 =
1852 struct LineRun line12 =
1865 struct LineRun line13 =
1878 struct LineRun line14 =
1891 struct LineRun line15 =
1904 struct LineRun line16 =
1917 struct LineRun line17 =
1930 struct LineRun line18 =
1943 struct LineRun line19 =
1956 Vector<LineRun> lines;
1957 lines.PushBack( line01 );
1958 lines.PushBack( line02 );
1959 lines.PushBack( line03 );
1960 lines.PushBack( line04 );
1961 lines.PushBack( line05 );
1962 lines.PushBack( line06 );
1963 lines.PushBack( line07 );
1964 lines.PushBack( line08 );
1965 lines.PushBack( line09 );
1966 lines.PushBack( line10 );
1967 lines.PushBack( line11 );
1968 lines.PushBack( line12 );
1969 lines.PushBack( line13 );
1970 lines.PushBack( line14 );
1971 lines.PushBack( line15 );
1972 lines.PushBack( line16 );
1973 lines.PushBack( line17 );
1974 lines.PushBack( line18 );
1975 lines.PushBack( line19 );
1977 LayoutTextData data =
1979 "Layout bidirectional text.",
1980 "Hello world demo שלום עולם.\n"
1981 "مرحبا بالعالم hello world שלום עולם\n"
1982 "שלום עולם hello world demo.\n"
1983 "hello world مرحبا بالعالم שלום עולם\n"
1984 "Hello world demo שלום עולם.\n"
1985 "שלום עולם hello world مرحبا بالعالم\n",
1988 fontDescriptionRuns.Begin(),
1994 Layout::Engine::MULTI_LINE_BOX,
2001 if( !LayoutTextTest( data ) )
2003 tet_result(TET_FAIL);
2006 tet_result(TET_PASS);
2010 int UtcDaliTextUpdateLayout02(void)
2012 ToolkitTestApplication application;
2013 tet_infoline(" UtcDaliTextUpdateLayout02");
2015 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2017 const std::string fontLatin( "TizenSans" );
2018 const std::string fontHebrew( "TizenSansHebrew" );
2019 const std::string fontArabic( "TizenSansArabic" );
2021 // Set a known font description
2022 FontDescriptionRun fontDescriptionRun01;
2023 fontDescriptionRun01.characterRun.characterIndex = 0u;
2024 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2025 fontDescriptionRun01.familyLength = fontLatin.size();
2026 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2027 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2028 fontDescriptionRun01.familyDefined = true;
2029 fontDescriptionRun01.weightDefined = false;
2030 fontDescriptionRun01.widthDefined = false;
2031 fontDescriptionRun01.slantDefined = false;
2032 fontDescriptionRun01.sizeDefined = false;
2034 // Set a known font description
2035 FontDescriptionRun fontDescriptionRun02;
2036 fontDescriptionRun02.characterRun.characterIndex = 17u;
2037 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2038 fontDescriptionRun02.familyLength = fontHebrew.size();
2039 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2040 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2041 fontDescriptionRun02.familyDefined = true;
2042 fontDescriptionRun02.weightDefined = false;
2043 fontDescriptionRun02.widthDefined = false;
2044 fontDescriptionRun02.slantDefined = false;
2045 fontDescriptionRun02.sizeDefined = false;
2047 // Set a known font description
2048 FontDescriptionRun fontDescriptionRun03;
2049 fontDescriptionRun03.characterRun.characterIndex = 26u;
2050 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2051 fontDescriptionRun03.familyLength = fontLatin.size();
2052 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2053 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2054 fontDescriptionRun03.familyDefined = true;
2055 fontDescriptionRun03.weightDefined = false;
2056 fontDescriptionRun03.widthDefined = false;
2057 fontDescriptionRun03.slantDefined = false;
2058 fontDescriptionRun03.sizeDefined = false;
2060 // Set a known font description
2061 FontDescriptionRun fontDescriptionRun04;
2062 fontDescriptionRun04.characterRun.characterIndex = 28u;
2063 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2064 fontDescriptionRun04.familyLength = fontArabic.size();
2065 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2066 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2067 fontDescriptionRun04.familyDefined = true;
2068 fontDescriptionRun04.weightDefined = false;
2069 fontDescriptionRun04.widthDefined = false;
2070 fontDescriptionRun04.slantDefined = false;
2071 fontDescriptionRun04.sizeDefined = false;
2073 // Set a known font description
2074 FontDescriptionRun fontDescriptionRun05;
2075 fontDescriptionRun05.characterRun.characterIndex = 42u;
2076 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2077 fontDescriptionRun05.familyLength = fontLatin.size();
2078 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2079 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2080 fontDescriptionRun05.familyDefined = true;
2081 fontDescriptionRun05.weightDefined = false;
2082 fontDescriptionRun05.widthDefined = false;
2083 fontDescriptionRun05.slantDefined = false;
2084 fontDescriptionRun05.sizeDefined = false;
2086 // Set a known font description
2087 FontDescriptionRun fontDescriptionRun06;
2088 fontDescriptionRun06.characterRun.characterIndex = 54u;
2089 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2090 fontDescriptionRun06.familyLength = fontHebrew.size();
2091 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2092 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2093 fontDescriptionRun06.familyDefined = true;
2094 fontDescriptionRun06.weightDefined = false;
2095 fontDescriptionRun06.widthDefined = false;
2096 fontDescriptionRun06.slantDefined = false;
2097 fontDescriptionRun06.sizeDefined = false;
2099 // Set a known font description
2100 FontDescriptionRun fontDescriptionRun07;
2101 fontDescriptionRun07.characterRun.characterIndex = 64u;
2102 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2103 fontDescriptionRun07.familyLength = fontHebrew.size();
2104 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2105 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2106 fontDescriptionRun07.familyDefined = true;
2107 fontDescriptionRun07.weightDefined = false;
2108 fontDescriptionRun07.widthDefined = false;
2109 fontDescriptionRun07.slantDefined = false;
2110 fontDescriptionRun07.sizeDefined = false;
2112 // Set a known font description
2113 FontDescriptionRun fontDescriptionRun08;
2114 fontDescriptionRun08.characterRun.characterIndex = 74u;
2115 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2116 fontDescriptionRun08.familyLength = fontLatin.size();
2117 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2118 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2119 fontDescriptionRun08.familyDefined = true;
2120 fontDescriptionRun08.weightDefined = false;
2121 fontDescriptionRun08.widthDefined = false;
2122 fontDescriptionRun08.slantDefined = false;
2123 fontDescriptionRun08.sizeDefined = false;
2125 // Set a known font description
2126 FontDescriptionRun fontDescriptionRun09;
2127 fontDescriptionRun09.characterRun.characterIndex = 92u;
2128 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2129 fontDescriptionRun09.familyLength = fontLatin.size();
2130 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2131 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2132 fontDescriptionRun09.familyDefined = true;
2133 fontDescriptionRun09.weightDefined = false;
2134 fontDescriptionRun09.widthDefined = false;
2135 fontDescriptionRun09.slantDefined = false;
2136 fontDescriptionRun09.sizeDefined = false;
2138 // Set a known font description
2139 FontDescriptionRun fontDescriptionRun10;
2140 fontDescriptionRun10.characterRun.characterIndex = 104u;
2141 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2142 fontDescriptionRun10.familyLength = fontArabic.size();
2143 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2144 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2145 fontDescriptionRun10.familyDefined = true;
2146 fontDescriptionRun10.weightDefined = false;
2147 fontDescriptionRun10.widthDefined = false;
2148 fontDescriptionRun10.slantDefined = false;
2149 fontDescriptionRun10.sizeDefined = false;
2151 // Set a known font description
2152 FontDescriptionRun fontDescriptionRun11;
2153 fontDescriptionRun11.characterRun.characterIndex = 118u;
2154 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2155 fontDescriptionRun11.familyLength = fontHebrew.size();
2156 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2157 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2158 fontDescriptionRun11.familyDefined = true;
2159 fontDescriptionRun11.weightDefined = false;
2160 fontDescriptionRun11.widthDefined = false;
2161 fontDescriptionRun11.slantDefined = false;
2162 fontDescriptionRun11.sizeDefined = false;
2164 // Set a known font description
2165 FontDescriptionRun fontDescriptionRun12;
2166 fontDescriptionRun12.characterRun.characterIndex = 128u;
2167 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2168 fontDescriptionRun12.familyLength = fontLatin.size();
2169 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2170 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2171 fontDescriptionRun12.familyDefined = true;
2172 fontDescriptionRun12.weightDefined = false;
2173 fontDescriptionRun12.widthDefined = false;
2174 fontDescriptionRun12.slantDefined = false;
2175 fontDescriptionRun12.sizeDefined = false;
2177 // Set a known font description
2178 FontDescriptionRun fontDescriptionRun13;
2179 fontDescriptionRun13.characterRun.characterIndex = 145u;
2180 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2181 fontDescriptionRun13.familyLength = fontHebrew.size();
2182 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2183 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2184 fontDescriptionRun13.familyDefined = true;
2185 fontDescriptionRun13.weightDefined = false;
2186 fontDescriptionRun13.widthDefined = false;
2187 fontDescriptionRun13.slantDefined = false;
2188 fontDescriptionRun13.sizeDefined = false;
2190 // Set a known font description
2191 FontDescriptionRun fontDescriptionRun14;
2192 fontDescriptionRun14.characterRun.characterIndex = 154u;
2193 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2194 fontDescriptionRun14.familyLength = fontLatin.size();
2195 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2196 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2197 fontDescriptionRun14.familyDefined = true;
2198 fontDescriptionRun14.weightDefined = false;
2199 fontDescriptionRun14.widthDefined = false;
2200 fontDescriptionRun14.slantDefined = false;
2201 fontDescriptionRun14.sizeDefined = false;
2203 // Set a known font description
2204 FontDescriptionRun fontDescriptionRun15;
2205 fontDescriptionRun15.characterRun.characterIndex = 156u;
2206 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2207 fontDescriptionRun15.familyLength = fontHebrew.size();
2208 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2209 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2210 fontDescriptionRun15.familyDefined = true;
2211 fontDescriptionRun15.weightDefined = false;
2212 fontDescriptionRun15.widthDefined = false;
2213 fontDescriptionRun15.slantDefined = false;
2214 fontDescriptionRun15.sizeDefined = false;
2216 // Set a known font description
2217 FontDescriptionRun fontDescriptionRun16;
2218 fontDescriptionRun16.characterRun.characterIndex = 166u;
2219 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2220 fontDescriptionRun16.familyLength = fontLatin.size();
2221 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2222 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2223 fontDescriptionRun16.familyDefined = true;
2224 fontDescriptionRun16.weightDefined = false;
2225 fontDescriptionRun16.widthDefined = false;
2226 fontDescriptionRun16.slantDefined = false;
2227 fontDescriptionRun16.sizeDefined = false;
2229 // Set a known font description
2230 FontDescriptionRun fontDescriptionRun17;
2231 fontDescriptionRun17.characterRun.characterIndex = 178u;
2232 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2233 fontDescriptionRun17.familyLength = fontArabic.size();
2234 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2235 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2236 fontDescriptionRun17.familyDefined = true;
2237 fontDescriptionRun17.weightDefined = false;
2238 fontDescriptionRun17.widthDefined = false;
2239 fontDescriptionRun17.slantDefined = false;
2240 fontDescriptionRun17.sizeDefined = false;
2242 Vector<FontDescriptionRun> fontDescriptionRuns;
2243 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2251 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2252 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2253 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2254 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2255 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2256 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2257 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2258 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2259 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2260 Size textArea(100.f, 300.f);
2261 Size layoutSize(92.f, 361.f);
2264 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,
2265 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,
2266 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2267 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,
2268 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,
2269 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2270 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,
2271 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,
2272 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2273 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,
2274 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,
2275 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2276 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,
2277 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,
2278 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2279 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,
2280 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,
2281 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,
2284 struct LineRun line01 =
2297 struct LineRun line02 =
2310 struct LineRun line03 =
2323 struct LineRun line04 =
2336 struct LineRun line05 =
2349 struct LineRun line06 =
2362 struct LineRun line07 =
2375 struct LineRun line08 =
2388 struct LineRun line09 =
2401 struct LineRun line10 =
2414 struct LineRun line11 =
2427 struct LineRun line12 =
2440 struct LineRun line13 =
2453 struct LineRun line14 =
2466 struct LineRun line15 =
2479 struct LineRun line16 =
2492 struct LineRun line17 =
2505 struct LineRun line18 =
2518 struct LineRun line19 =
2531 Vector<LineRun> lines;
2532 lines.PushBack( line01 );
2533 lines.PushBack( line02 );
2534 lines.PushBack( line03 );
2535 lines.PushBack( line04 );
2536 lines.PushBack( line05 );
2537 lines.PushBack( line06 );
2538 lines.PushBack( line07 );
2539 lines.PushBack( line08 );
2540 lines.PushBack( line09 );
2541 lines.PushBack( line10 );
2542 lines.PushBack( line11 );
2543 lines.PushBack( line12 );
2544 lines.PushBack( line13 );
2545 lines.PushBack( line14 );
2546 lines.PushBack( line15 );
2547 lines.PushBack( line16 );
2548 lines.PushBack( line17 );
2549 lines.PushBack( line18 );
2550 lines.PushBack( line19 );
2552 LayoutTextData data =
2554 "Layout bidirectional text.",
2555 "Hello world demo שלום עולם.\n"
2556 "مرحبا بالعالم hello world שלום עולם\n"
2557 "שלום עולם hello world demo.\n"
2558 "hello world مرحبا بالعالم שלום עולם\n"
2559 "Hello world demo שלום עולם.\n"
2560 "שלום עולם hello world مرحبا بالعالم\n",
2563 fontDescriptionRuns.Begin(),
2569 Layout::Engine::MULTI_LINE_BOX,
2576 if( !LayoutTextTest( data ) )
2578 tet_result(TET_FAIL);
2581 tet_result(TET_PASS);
2585 int UtcDaliTextUpdateLayout03(void)
2587 ToolkitTestApplication application;
2588 tet_infoline(" UtcDaliTextUpdateLayout03");
2590 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2592 const std::string fontLatin( "TizenSans" );
2593 const std::string fontHebrew( "TizenSansHebrew" );
2594 const std::string fontArabic( "TizenSansArabic" );
2596 // Set a known font description
2597 FontDescriptionRun fontDescriptionRun01;
2598 fontDescriptionRun01.characterRun.characterIndex = 0u;
2599 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2600 fontDescriptionRun01.familyLength = fontLatin.size();
2601 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2602 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2603 fontDescriptionRun01.familyDefined = true;
2604 fontDescriptionRun01.weightDefined = false;
2605 fontDescriptionRun01.widthDefined = false;
2606 fontDescriptionRun01.slantDefined = false;
2607 fontDescriptionRun01.sizeDefined = false;
2609 // Set a known font description
2610 FontDescriptionRun fontDescriptionRun02;
2611 fontDescriptionRun02.characterRun.characterIndex = 17u;
2612 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2613 fontDescriptionRun02.familyLength = fontHebrew.size();
2614 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2615 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2616 fontDescriptionRun02.familyDefined = true;
2617 fontDescriptionRun02.weightDefined = false;
2618 fontDescriptionRun02.widthDefined = false;
2619 fontDescriptionRun02.slantDefined = false;
2620 fontDescriptionRun02.sizeDefined = false;
2622 // Set a known font description
2623 FontDescriptionRun fontDescriptionRun03;
2624 fontDescriptionRun03.characterRun.characterIndex = 26u;
2625 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2626 fontDescriptionRun03.familyLength = fontLatin.size();
2627 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2628 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2629 fontDescriptionRun03.familyDefined = true;
2630 fontDescriptionRun03.weightDefined = false;
2631 fontDescriptionRun03.widthDefined = false;
2632 fontDescriptionRun03.slantDefined = false;
2633 fontDescriptionRun03.sizeDefined = false;
2635 // Set a known font description
2636 FontDescriptionRun fontDescriptionRun04;
2637 fontDescriptionRun04.characterRun.characterIndex = 28u;
2638 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2639 fontDescriptionRun04.familyLength = fontArabic.size();
2640 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2641 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2642 fontDescriptionRun04.familyDefined = true;
2643 fontDescriptionRun04.weightDefined = false;
2644 fontDescriptionRun04.widthDefined = false;
2645 fontDescriptionRun04.slantDefined = false;
2646 fontDescriptionRun04.sizeDefined = false;
2648 // Set a known font description
2649 FontDescriptionRun fontDescriptionRun05;
2650 fontDescriptionRun05.characterRun.characterIndex = 42u;
2651 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2652 fontDescriptionRun05.familyLength = fontLatin.size();
2653 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2654 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2655 fontDescriptionRun05.familyDefined = true;
2656 fontDescriptionRun05.weightDefined = false;
2657 fontDescriptionRun05.widthDefined = false;
2658 fontDescriptionRun05.slantDefined = false;
2659 fontDescriptionRun05.sizeDefined = false;
2661 // Set a known font description
2662 FontDescriptionRun fontDescriptionRun06;
2663 fontDescriptionRun06.characterRun.characterIndex = 54u;
2664 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2665 fontDescriptionRun06.familyLength = fontHebrew.size();
2666 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2667 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2668 fontDescriptionRun06.familyDefined = true;
2669 fontDescriptionRun06.weightDefined = false;
2670 fontDescriptionRun06.widthDefined = false;
2671 fontDescriptionRun06.slantDefined = false;
2672 fontDescriptionRun06.sizeDefined = false;
2674 // Set a known font description
2675 FontDescriptionRun fontDescriptionRun07;
2676 fontDescriptionRun07.characterRun.characterIndex = 64u;
2677 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2678 fontDescriptionRun07.familyLength = fontHebrew.size();
2679 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2680 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2681 fontDescriptionRun07.familyDefined = true;
2682 fontDescriptionRun07.weightDefined = false;
2683 fontDescriptionRun07.widthDefined = false;
2684 fontDescriptionRun07.slantDefined = false;
2685 fontDescriptionRun07.sizeDefined = false;
2687 // Set a known font description
2688 FontDescriptionRun fontDescriptionRun08;
2689 fontDescriptionRun08.characterRun.characterIndex = 74u;
2690 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2691 fontDescriptionRun08.familyLength = fontLatin.size();
2692 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2693 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2694 fontDescriptionRun08.familyDefined = true;
2695 fontDescriptionRun08.weightDefined = false;
2696 fontDescriptionRun08.widthDefined = false;
2697 fontDescriptionRun08.slantDefined = false;
2698 fontDescriptionRun08.sizeDefined = false;
2700 // Set a known font description
2701 FontDescriptionRun fontDescriptionRun09;
2702 fontDescriptionRun09.characterRun.characterIndex = 92u;
2703 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2704 fontDescriptionRun09.familyLength = fontLatin.size();
2705 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2706 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2707 fontDescriptionRun09.familyDefined = true;
2708 fontDescriptionRun09.weightDefined = false;
2709 fontDescriptionRun09.widthDefined = false;
2710 fontDescriptionRun09.slantDefined = false;
2711 fontDescriptionRun09.sizeDefined = false;
2713 // Set a known font description
2714 FontDescriptionRun fontDescriptionRun10;
2715 fontDescriptionRun10.characterRun.characterIndex = 104u;
2716 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2717 fontDescriptionRun10.familyLength = fontArabic.size();
2718 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2719 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2720 fontDescriptionRun10.familyDefined = true;
2721 fontDescriptionRun10.weightDefined = false;
2722 fontDescriptionRun10.widthDefined = false;
2723 fontDescriptionRun10.slantDefined = false;
2724 fontDescriptionRun10.sizeDefined = false;
2726 // Set a known font description
2727 FontDescriptionRun fontDescriptionRun11;
2728 fontDescriptionRun11.characterRun.characterIndex = 118u;
2729 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2730 fontDescriptionRun11.familyLength = fontHebrew.size();
2731 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2732 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2733 fontDescriptionRun11.familyDefined = true;
2734 fontDescriptionRun11.weightDefined = false;
2735 fontDescriptionRun11.widthDefined = false;
2736 fontDescriptionRun11.slantDefined = false;
2737 fontDescriptionRun11.sizeDefined = false;
2739 // Set a known font description
2740 FontDescriptionRun fontDescriptionRun12;
2741 fontDescriptionRun12.characterRun.characterIndex = 128u;
2742 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2743 fontDescriptionRun12.familyLength = fontLatin.size();
2744 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2745 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2746 fontDescriptionRun12.familyDefined = true;
2747 fontDescriptionRun12.weightDefined = false;
2748 fontDescriptionRun12.widthDefined = false;
2749 fontDescriptionRun12.slantDefined = false;
2750 fontDescriptionRun12.sizeDefined = false;
2752 // Set a known font description
2753 FontDescriptionRun fontDescriptionRun13;
2754 fontDescriptionRun13.characterRun.characterIndex = 145u;
2755 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2756 fontDescriptionRun13.familyLength = fontHebrew.size();
2757 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2758 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2759 fontDescriptionRun13.familyDefined = true;
2760 fontDescriptionRun13.weightDefined = false;
2761 fontDescriptionRun13.widthDefined = false;
2762 fontDescriptionRun13.slantDefined = false;
2763 fontDescriptionRun13.sizeDefined = false;
2765 // Set a known font description
2766 FontDescriptionRun fontDescriptionRun14;
2767 fontDescriptionRun14.characterRun.characterIndex = 154u;
2768 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2769 fontDescriptionRun14.familyLength = fontLatin.size();
2770 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2771 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2772 fontDescriptionRun14.familyDefined = true;
2773 fontDescriptionRun14.weightDefined = false;
2774 fontDescriptionRun14.widthDefined = false;
2775 fontDescriptionRun14.slantDefined = false;
2776 fontDescriptionRun14.sizeDefined = false;
2778 // Set a known font description
2779 FontDescriptionRun fontDescriptionRun15;
2780 fontDescriptionRun15.characterRun.characterIndex = 156u;
2781 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2782 fontDescriptionRun15.familyLength = fontHebrew.size();
2783 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2784 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2785 fontDescriptionRun15.familyDefined = true;
2786 fontDescriptionRun15.weightDefined = false;
2787 fontDescriptionRun15.widthDefined = false;
2788 fontDescriptionRun15.slantDefined = false;
2789 fontDescriptionRun15.sizeDefined = false;
2791 // Set a known font description
2792 FontDescriptionRun fontDescriptionRun16;
2793 fontDescriptionRun16.characterRun.characterIndex = 166u;
2794 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2795 fontDescriptionRun16.familyLength = fontLatin.size();
2796 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2797 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2798 fontDescriptionRun16.familyDefined = true;
2799 fontDescriptionRun16.weightDefined = false;
2800 fontDescriptionRun16.widthDefined = false;
2801 fontDescriptionRun16.slantDefined = false;
2802 fontDescriptionRun16.sizeDefined = false;
2804 // Set a known font description
2805 FontDescriptionRun fontDescriptionRun17;
2806 fontDescriptionRun17.characterRun.characterIndex = 178u;
2807 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2808 fontDescriptionRun17.familyLength = fontArabic.size();
2809 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2810 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2811 fontDescriptionRun17.familyDefined = true;
2812 fontDescriptionRun17.weightDefined = false;
2813 fontDescriptionRun17.widthDefined = false;
2814 fontDescriptionRun17.slantDefined = false;
2815 fontDescriptionRun17.sizeDefined = false;
2817 Vector<FontDescriptionRun> fontDescriptionRuns;
2818 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2825 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2826 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2827 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2828 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2829 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2830 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2831 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2832 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2833 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2834 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2835 Size textArea(100.f, 300.f);
2836 Size layoutSize(92.f, 361.f);
2839 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,
2840 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,
2841 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2842 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,
2843 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,
2844 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2845 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,
2846 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,
2847 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2848 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,
2849 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,
2850 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2851 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,
2852 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,
2853 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2854 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,
2855 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,
2856 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,
2859 struct LineRun line01 =
2872 struct LineRun line02 =
2885 struct LineRun line03 =
2898 struct LineRun line04 =
2911 struct LineRun line05 =
2924 struct LineRun line06 =
2937 struct LineRun line07 =
2950 struct LineRun line08 =
2963 struct LineRun line09 =
2976 struct LineRun line10 =
2989 struct LineRun line11 =
3002 struct LineRun line12 =
3015 struct LineRun line13 =
3028 struct LineRun line14 =
3041 struct LineRun line15 =
3054 struct LineRun line16 =
3067 struct LineRun line17 =
3080 struct LineRun line18 =
3093 struct LineRun line19 =
3106 Vector<LineRun> lines;
3107 lines.PushBack( line01 );
3108 lines.PushBack( line02 );
3109 lines.PushBack( line03 );
3110 lines.PushBack( line04 );
3111 lines.PushBack( line05 );
3112 lines.PushBack( line06 );
3113 lines.PushBack( line07 );
3114 lines.PushBack( line08 );
3115 lines.PushBack( line09 );
3116 lines.PushBack( line10 );
3117 lines.PushBack( line11 );
3118 lines.PushBack( line12 );
3119 lines.PushBack( line13 );
3120 lines.PushBack( line14 );
3121 lines.PushBack( line15 );
3122 lines.PushBack( line16 );
3123 lines.PushBack( line17 );
3124 lines.PushBack( line18 );
3125 lines.PushBack( line19 );
3127 LayoutTextData data =
3129 "Layout bidirectional text.",
3130 "Hello world demo שלום עולם.\n"
3131 "مرحبا بالعالم hello world שלום עולם\n"
3132 "שלום עולם hello world demo.\n"
3133 "hello world مرحبا بالعالم שלום עולם\n"
3134 "Hello world demo שלום עולם.\n"
3135 "שלום עולם hello world مرحبا بالعالم\n",
3138 fontDescriptionRuns.Begin(),
3144 Layout::Engine::MULTI_LINE_BOX,
3151 if( !LayoutTextTest( data ) )
3153 tet_result(TET_FAIL);
3156 tet_result(TET_PASS);
3160 int UtcDaliTextLayoutEllipsis01(void)
3162 ToolkitTestApplication application;
3163 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3165 // Layout single-line LTR text with ellipsis.
3167 const std::string fontLatin( "TizenSans" );
3169 // Set a known font description
3170 FontDescriptionRun fontDescriptionRun01;
3171 fontDescriptionRun01.characterRun.characterIndex = 0u;
3172 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3173 fontDescriptionRun01.familyLength = fontLatin.size();
3174 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3175 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3176 fontDescriptionRun01.familyDefined = true;
3177 fontDescriptionRun01.weightDefined = false;
3178 fontDescriptionRun01.widthDefined = false;
3179 fontDescriptionRun01.slantDefined = false;
3180 fontDescriptionRun01.sizeDefined = false;
3182 Vector<FontDescriptionRun> fontDescriptionRuns;
3183 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3185 struct LineRun line01 =
3198 Vector<LineRun> lines;
3199 lines.PushBack( line01 );
3203 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,
3206 Size textArea( 100.f, 50.f );
3207 Size layoutSize( 100.f, 19.f );
3209 LayoutTextData data =
3211 "Layout single-line LTR text with ellipsis.",
3212 "Hello world demo hello world demo hello world demo.",
3215 fontDescriptionRuns.Begin(),
3221 Layout::Engine::SINGLE_LINE_BOX,
3228 if( !LayoutTextTest( data ) )
3230 tet_result(TET_FAIL);
3233 tet_result(TET_PASS);
3237 int UtcDaliTextLayoutEllipsis02(void)
3239 ToolkitTestApplication application;
3240 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3242 // Layout multi-line LTR text with ellipsis.
3244 const std::string fontLatin( "TizenSans" );
3246 // Set a known font description
3247 FontDescriptionRun fontDescriptionRun01;
3248 fontDescriptionRun01.characterRun.characterIndex = 0u;
3249 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3250 fontDescriptionRun01.familyLength = fontLatin.size();
3251 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3252 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3253 fontDescriptionRun01.familyDefined = true;
3254 fontDescriptionRun01.weightDefined = false;
3255 fontDescriptionRun01.widthDefined = false;
3256 fontDescriptionRun01.slantDefined = false;
3257 fontDescriptionRun01.sizeDefined = false;
3259 Vector<FontDescriptionRun> fontDescriptionRuns;
3260 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3262 struct LineRun line01 =
3275 struct LineRun line02 =
3288 Vector<LineRun> lines;
3289 lines.PushBack( line01 );
3290 lines.PushBack( line02 );
3294 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,
3295 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,
3298 Size textArea( 100.f, 50.f );
3299 Size layoutSize( 100.f, 38.f );
3301 LayoutTextData data =
3303 "Layout multi-line LTR text with ellipsis.",
3304 "Hello world demo hello world demo hello world demo.",
3307 fontDescriptionRuns.Begin(),
3313 Layout::Engine::MULTI_LINE_BOX,
3320 if( !LayoutTextTest( data ) )
3322 tet_result(TET_FAIL);
3325 tet_result(TET_PASS);
3329 int UtcDaliTextLayoutEllipsis03(void)
3331 ToolkitTestApplication application;
3332 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3334 // Layout single-line RTL text with ellipsis.
3336 const std::string fontHebrew( "TizenSansHebrew" );
3337 const std::string fontArabic( "TizenSansArabic" );
3339 // Set a known font description
3340 FontDescriptionRun fontDescriptionRun01;
3341 fontDescriptionRun01.characterRun.characterIndex = 0u;
3342 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3343 fontDescriptionRun01.familyLength = fontHebrew.size();
3344 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3345 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3346 fontDescriptionRun01.familyDefined = true;
3347 fontDescriptionRun01.weightDefined = false;
3348 fontDescriptionRun01.widthDefined = false;
3349 fontDescriptionRun01.slantDefined = false;
3350 fontDescriptionRun01.sizeDefined = false;
3352 FontDescriptionRun fontDescriptionRun02;
3353 fontDescriptionRun02.characterRun.characterIndex = 10u;
3354 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3355 fontDescriptionRun02.familyLength = fontArabic.size();
3356 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3357 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3358 fontDescriptionRun02.familyDefined = true;
3359 fontDescriptionRun02.weightDefined = false;
3360 fontDescriptionRun02.widthDefined = false;
3361 fontDescriptionRun02.slantDefined = false;
3362 fontDescriptionRun02.sizeDefined = false;
3364 FontDescriptionRun fontDescriptionRun03;
3365 fontDescriptionRun03.characterRun.characterIndex = 24u;
3366 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3367 fontDescriptionRun03.familyLength = fontHebrew.size();
3368 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3369 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3370 fontDescriptionRun03.familyDefined = true;
3371 fontDescriptionRun03.weightDefined = false;
3372 fontDescriptionRun03.widthDefined = false;
3373 fontDescriptionRun03.slantDefined = false;
3374 fontDescriptionRun03.sizeDefined = false;
3376 FontDescriptionRun fontDescriptionRun04;
3377 fontDescriptionRun04.characterRun.characterIndex = 34u;
3378 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3379 fontDescriptionRun04.familyLength = fontArabic.size();
3380 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3381 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3382 fontDescriptionRun04.familyDefined = true;
3383 fontDescriptionRun04.weightDefined = false;
3384 fontDescriptionRun04.widthDefined = false;
3385 fontDescriptionRun04.slantDefined = false;
3386 fontDescriptionRun04.sizeDefined = false;
3388 FontDescriptionRun fontDescriptionRun05;
3389 fontDescriptionRun05.characterRun.characterIndex = 48u;
3390 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3391 fontDescriptionRun05.familyLength = fontHebrew.size();
3392 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3393 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3394 fontDescriptionRun05.familyDefined = true;
3395 fontDescriptionRun05.weightDefined = false;
3396 fontDescriptionRun05.widthDefined = false;
3397 fontDescriptionRun05.slantDefined = false;
3398 fontDescriptionRun05.sizeDefined = false;
3400 FontDescriptionRun fontDescriptionRun06;
3401 fontDescriptionRun06.characterRun.characterIndex = 58u;
3402 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3403 fontDescriptionRun06.familyLength = fontArabic.size();
3404 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3405 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3406 fontDescriptionRun06.familyDefined = true;
3407 fontDescriptionRun06.weightDefined = false;
3408 fontDescriptionRun06.widthDefined = false;
3409 fontDescriptionRun06.slantDefined = false;
3410 fontDescriptionRun06.sizeDefined = false;
3412 Vector<FontDescriptionRun> fontDescriptionRuns;
3413 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3414 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3415 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3416 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3417 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3418 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3420 struct LineRun line01 =
3433 Vector<LineRun> lines;
3434 lines.PushBack( line01 );
3438 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,
3441 Size textArea( 100.f, 50.f );
3442 Size layoutSize( 100.f, 19.f );
3444 LayoutTextData data =
3446 "Layout single-line RTL text with ellipsis.",
3447 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3450 fontDescriptionRuns.Begin(),
3456 Layout::Engine::SINGLE_LINE_BOX,
3463 if( !LayoutTextTest( data ) )
3465 tet_result(TET_FAIL);
3468 tet_result(TET_PASS);
3472 int UtcDaliTextLayoutEllipsis04(void)
3474 ToolkitTestApplication application;
3475 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3477 // Layout multi-line RTL text with ellipsis.
3479 const std::string fontHebrew( "TizenSansHebrew" );
3480 const std::string fontArabic( "TizenSansArabic" );
3482 // Set a known font description
3483 FontDescriptionRun fontDescriptionRun01;
3484 fontDescriptionRun01.characterRun.characterIndex = 0u;
3485 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3486 fontDescriptionRun01.familyLength = fontHebrew.size();
3487 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3488 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3489 fontDescriptionRun01.familyDefined = true;
3490 fontDescriptionRun01.weightDefined = false;
3491 fontDescriptionRun01.widthDefined = false;
3492 fontDescriptionRun01.slantDefined = false;
3493 fontDescriptionRun01.sizeDefined = false;
3495 FontDescriptionRun fontDescriptionRun02;
3496 fontDescriptionRun02.characterRun.characterIndex = 10u;
3497 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3498 fontDescriptionRun02.familyLength = fontArabic.size();
3499 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3500 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3501 fontDescriptionRun02.familyDefined = true;
3502 fontDescriptionRun02.weightDefined = false;
3503 fontDescriptionRun02.widthDefined = false;
3504 fontDescriptionRun02.slantDefined = false;
3505 fontDescriptionRun02.sizeDefined = false;
3507 FontDescriptionRun fontDescriptionRun03;
3508 fontDescriptionRun03.characterRun.characterIndex = 24u;
3509 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3510 fontDescriptionRun03.familyLength = fontHebrew.size();
3511 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3512 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3513 fontDescriptionRun03.familyDefined = true;
3514 fontDescriptionRun03.weightDefined = false;
3515 fontDescriptionRun03.widthDefined = false;
3516 fontDescriptionRun03.slantDefined = false;
3517 fontDescriptionRun03.sizeDefined = false;
3519 FontDescriptionRun fontDescriptionRun04;
3520 fontDescriptionRun04.characterRun.characterIndex = 34u;
3521 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3522 fontDescriptionRun04.familyLength = fontArabic.size();
3523 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3524 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3525 fontDescriptionRun04.familyDefined = true;
3526 fontDescriptionRun04.weightDefined = false;
3527 fontDescriptionRun04.widthDefined = false;
3528 fontDescriptionRun04.slantDefined = false;
3529 fontDescriptionRun04.sizeDefined = false;
3531 FontDescriptionRun fontDescriptionRun05;
3532 fontDescriptionRun05.characterRun.characterIndex = 48u;
3533 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3534 fontDescriptionRun05.familyLength = fontHebrew.size();
3535 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3536 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3537 fontDescriptionRun05.familyDefined = true;
3538 fontDescriptionRun05.weightDefined = false;
3539 fontDescriptionRun05.widthDefined = false;
3540 fontDescriptionRun05.slantDefined = false;
3541 fontDescriptionRun05.sizeDefined = false;
3543 FontDescriptionRun fontDescriptionRun06;
3544 fontDescriptionRun06.characterRun.characterIndex = 58u;
3545 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3546 fontDescriptionRun06.familyLength = fontArabic.size();
3547 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3548 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3549 fontDescriptionRun06.familyDefined = true;
3550 fontDescriptionRun06.weightDefined = false;
3551 fontDescriptionRun06.widthDefined = false;
3552 fontDescriptionRun06.slantDefined = false;
3553 fontDescriptionRun06.sizeDefined = false;
3555 Vector<FontDescriptionRun> fontDescriptionRuns;
3556 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3557 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3558 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3559 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3560 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3561 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3563 struct LineRun line01 =
3576 struct LineRun line02 =
3589 Vector<LineRun> lines;
3590 lines.PushBack( line01 );
3591 lines.PushBack( line02 );
3595 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,
3596 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,
3599 Size textArea( 100.f, 50.f );
3600 Size layoutSize( 100.f, 38.f );
3602 LayoutTextData data =
3604 "Layout single-line RTL text with ellipsis.",
3605 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3608 fontDescriptionRuns.Begin(),
3614 Layout::Engine::MULTI_LINE_BOX,
3621 if( !LayoutTextTest( data ) )
3623 tet_result(TET_FAIL);
3626 tet_result(TET_PASS);
3630 int UtcDaliTextLayoutEllipsis05(void)
3632 ToolkitTestApplication application;
3633 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3635 const std::string fontLatin( "TizenSans" );
3637 // Set a known font description
3638 FontDescriptionRun fontDescriptionRun01;
3639 fontDescriptionRun01.characterRun.characterIndex = 0u;
3640 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3641 fontDescriptionRun01.familyLength = fontLatin.size();
3642 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3643 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3644 fontDescriptionRun01.familyDefined = true;
3645 fontDescriptionRun01.weightDefined = false;
3646 fontDescriptionRun01.widthDefined = false;
3647 fontDescriptionRun01.slantDefined = false;
3648 fontDescriptionRun01.sizeDefined = false;
3650 Vector<FontDescriptionRun> fontDescriptionRuns;
3651 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3653 struct LineRun line01 =
3666 Vector<LineRun> lines;
3667 lines.PushBack( line01 );
3674 Size textArea( 100.f, 19.f );
3675 Size layoutSize( 78.f, 19.f );
3677 LayoutTextData data =
3679 "Not enough height.",
3683 fontDescriptionRuns.Begin(),
3689 Layout::Engine::MULTI_LINE_BOX,
3696 if( !LayoutTextTest( data ) )
3698 tet_result(TET_FAIL);
3701 tet_result(TET_PASS);
3705 int UtcDaliTextReorderLayout01(void)
3707 ToolkitTestApplication application;
3708 tet_infoline(" UtcDaliTextReorderLayout01");
3710 // Reorder lines. No right to left characters.
3712 const std::string fontLatin( "TizenSans" );
3714 // Set a known font description
3715 FontDescriptionRun fontDescriptionRun01;
3716 fontDescriptionRun01.characterRun.characterIndex = 0u;
3717 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3718 fontDescriptionRun01.familyLength = fontLatin.size();
3719 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3720 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3721 fontDescriptionRun01.familyDefined = true;
3722 fontDescriptionRun01.weightDefined = false;
3723 fontDescriptionRun01.widthDefined = false;
3724 fontDescriptionRun01.slantDefined = false;
3725 fontDescriptionRun01.sizeDefined = false;
3727 Vector<FontDescriptionRun> fontDescriptionRuns;
3728 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3732 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,
3735 Size textArea( 100.f, 300.f );
3737 ReLayoutRightToLeftLinesData data =
3739 "Text with no right to left text.",
3743 fontDescriptionRuns.Begin(),
3750 if( !ReLayoutRightToLeftLinesTest( data ) )
3752 tet_result(TET_FAIL);
3755 tet_result(TET_PASS);
3759 int UtcDaliTextReorderLayout02(void)
3761 ToolkitTestApplication application;
3762 tet_infoline(" UtcDaliTextReorderLayout02");
3764 // Reorder lines of the first paragraph.
3766 const std::string fontHebrew( "TizenSansHebrew" );
3767 const std::string fontArabic( "TizenSansArabic" );
3769 // Set a known font description
3770 FontDescriptionRun fontDescriptionRun01;
3771 fontDescriptionRun01.characterRun.characterIndex = 0u;
3772 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3773 fontDescriptionRun01.familyLength = fontHebrew.size();
3774 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3775 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3776 fontDescriptionRun01.familyDefined = true;
3777 fontDescriptionRun01.weightDefined = false;
3778 fontDescriptionRun01.widthDefined = false;
3779 fontDescriptionRun01.slantDefined = false;
3780 fontDescriptionRun01.sizeDefined = false;
3782 FontDescriptionRun fontDescriptionRun02;
3783 fontDescriptionRun02.characterRun.characterIndex = 10u;
3784 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3785 fontDescriptionRun02.familyLength = fontArabic.size();
3786 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3787 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3788 fontDescriptionRun02.familyDefined = true;
3789 fontDescriptionRun02.weightDefined = false;
3790 fontDescriptionRun02.widthDefined = false;
3791 fontDescriptionRun02.slantDefined = false;
3792 fontDescriptionRun02.sizeDefined = false;
3794 FontDescriptionRun fontDescriptionRun03;
3795 fontDescriptionRun03.characterRun.characterIndex = 24u;
3796 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3797 fontDescriptionRun03.familyLength = fontArabic.size();
3798 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3799 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3800 fontDescriptionRun03.familyDefined = true;
3801 fontDescriptionRun03.weightDefined = false;
3802 fontDescriptionRun03.widthDefined = false;
3803 fontDescriptionRun03.slantDefined = false;
3804 fontDescriptionRun03.sizeDefined = false;
3806 FontDescriptionRun fontDescriptionRun04;
3807 fontDescriptionRun04.characterRun.characterIndex = 38u;
3808 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3809 fontDescriptionRun04.familyLength = fontHebrew.size();
3810 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3811 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3812 fontDescriptionRun04.familyDefined = true;
3813 fontDescriptionRun04.weightDefined = false;
3814 fontDescriptionRun04.widthDefined = false;
3815 fontDescriptionRun04.slantDefined = false;
3816 fontDescriptionRun04.sizeDefined = false;
3818 FontDescriptionRun fontDescriptionRun05;
3819 fontDescriptionRun05.characterRun.characterIndex = 48u;
3820 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3821 fontDescriptionRun05.familyLength = fontHebrew.size();
3822 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3823 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3824 fontDescriptionRun05.familyDefined = true;
3825 fontDescriptionRun05.weightDefined = false;
3826 fontDescriptionRun05.widthDefined = false;
3827 fontDescriptionRun05.slantDefined = false;
3828 fontDescriptionRun05.sizeDefined = false;
3830 FontDescriptionRun fontDescriptionRun06;
3831 fontDescriptionRun06.characterRun.characterIndex = 58u;
3832 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3833 fontDescriptionRun06.familyLength = fontArabic.size();
3834 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3835 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3836 fontDescriptionRun06.familyDefined = true;
3837 fontDescriptionRun06.weightDefined = false;
3838 fontDescriptionRun06.widthDefined = false;
3839 fontDescriptionRun06.slantDefined = false;
3840 fontDescriptionRun06.sizeDefined = false;
3842 Vector<FontDescriptionRun> fontDescriptionRuns;
3843 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3844 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3845 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3846 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3847 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3848 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3852 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,
3853 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,
3854 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,
3855 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
3856 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,
3857 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,
3860 Size textArea( 100.f, 300.f );
3862 ReLayoutRightToLeftLinesData data =
3864 "Paragraphs with right to left text.",
3865 "שלום עולם مرحبا بالعالم\n"
3866 "مرحبا بالعالم שלום עולם\n"
3867 "שלום עולם مرحبا بالعالم.",
3870 fontDescriptionRuns.Begin(),
3877 if( !ReLayoutRightToLeftLinesTest( data ) )
3879 tet_result(TET_FAIL);
3882 tet_result(TET_PASS);
3886 int UtcDaliTextReorderLayout03(void)
3888 ToolkitTestApplication application;
3889 tet_infoline(" UtcDaliTextReorderLayout03");
3891 // Reorder lines of the mid paragraph.
3893 const std::string fontHebrew( "TizenSansHebrew" );
3894 const std::string fontArabic( "TizenSansArabic" );
3896 // Set a known font description
3897 FontDescriptionRun fontDescriptionRun01;
3898 fontDescriptionRun01.characterRun.characterIndex = 0u;
3899 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3900 fontDescriptionRun01.familyLength = fontHebrew.size();
3901 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3902 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3903 fontDescriptionRun01.familyDefined = true;
3904 fontDescriptionRun01.weightDefined = false;
3905 fontDescriptionRun01.widthDefined = false;
3906 fontDescriptionRun01.slantDefined = false;
3907 fontDescriptionRun01.sizeDefined = false;
3909 FontDescriptionRun fontDescriptionRun02;
3910 fontDescriptionRun02.characterRun.characterIndex = 10u;
3911 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3912 fontDescriptionRun02.familyLength = fontArabic.size();
3913 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3914 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3915 fontDescriptionRun02.familyDefined = true;
3916 fontDescriptionRun02.weightDefined = false;
3917 fontDescriptionRun02.widthDefined = false;
3918 fontDescriptionRun02.slantDefined = false;
3919 fontDescriptionRun02.sizeDefined = false;
3921 FontDescriptionRun fontDescriptionRun03;
3922 fontDescriptionRun03.characterRun.characterIndex = 24u;
3923 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3924 fontDescriptionRun03.familyLength = fontArabic.size();
3925 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3926 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3927 fontDescriptionRun03.familyDefined = true;
3928 fontDescriptionRun03.weightDefined = false;
3929 fontDescriptionRun03.widthDefined = false;
3930 fontDescriptionRun03.slantDefined = false;
3931 fontDescriptionRun03.sizeDefined = false;
3933 FontDescriptionRun fontDescriptionRun04;
3934 fontDescriptionRun04.characterRun.characterIndex = 38u;
3935 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3936 fontDescriptionRun04.familyLength = fontHebrew.size();
3937 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3938 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3939 fontDescriptionRun04.familyDefined = true;
3940 fontDescriptionRun04.weightDefined = false;
3941 fontDescriptionRun04.widthDefined = false;
3942 fontDescriptionRun04.slantDefined = false;
3943 fontDescriptionRun04.sizeDefined = false;
3945 FontDescriptionRun fontDescriptionRun05;
3946 fontDescriptionRun05.characterRun.characterIndex = 48u;
3947 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3948 fontDescriptionRun05.familyLength = fontHebrew.size();
3949 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3950 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3951 fontDescriptionRun05.familyDefined = true;
3952 fontDescriptionRun05.weightDefined = false;
3953 fontDescriptionRun05.widthDefined = false;
3954 fontDescriptionRun05.slantDefined = false;
3955 fontDescriptionRun05.sizeDefined = false;
3957 FontDescriptionRun fontDescriptionRun06;
3958 fontDescriptionRun06.characterRun.characterIndex = 58u;
3959 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3960 fontDescriptionRun06.familyLength = fontArabic.size();
3961 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3962 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3963 fontDescriptionRun06.familyDefined = true;
3964 fontDescriptionRun06.weightDefined = false;
3965 fontDescriptionRun06.widthDefined = false;
3966 fontDescriptionRun06.slantDefined = false;
3967 fontDescriptionRun06.sizeDefined = false;
3969 Vector<FontDescriptionRun> fontDescriptionRuns;
3970 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3971 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3972 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3973 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3974 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3975 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3979 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,
3980 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,
3981 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,
3982 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3983 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,
3984 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,
3987 Size textArea( 100.f, 300.f );
3989 ReLayoutRightToLeftLinesData data =
3991 "Paragraphs with right to left text.",
3992 "שלום עולם مرحبا بالعالم\n"
3993 "مرحبا بالعالم שלום עולם\n"
3994 "שלום עולם مرحبا بالعالم.",
3997 fontDescriptionRuns.Begin(),
4004 if( !ReLayoutRightToLeftLinesTest( data ) )
4006 tet_result(TET_FAIL);
4009 tet_result(TET_PASS);
4013 int UtcDaliTextReorderLayout04(void)
4015 ToolkitTestApplication application;
4016 tet_infoline(" UtcDaliTextReorderLayout04");
4018 // Reorder lines of the last paragraph.
4020 const std::string fontHebrew( "TizenSansHebrew" );
4021 const std::string fontArabic( "TizenSansArabic" );
4023 // Set a known font description
4024 FontDescriptionRun fontDescriptionRun01;
4025 fontDescriptionRun01.characterRun.characterIndex = 0u;
4026 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4027 fontDescriptionRun01.familyLength = fontHebrew.size();
4028 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4029 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4030 fontDescriptionRun01.familyDefined = true;
4031 fontDescriptionRun01.weightDefined = false;
4032 fontDescriptionRun01.widthDefined = false;
4033 fontDescriptionRun01.slantDefined = false;
4034 fontDescriptionRun01.sizeDefined = false;
4036 FontDescriptionRun fontDescriptionRun02;
4037 fontDescriptionRun02.characterRun.characterIndex = 10u;
4038 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4039 fontDescriptionRun02.familyLength = fontArabic.size();
4040 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4041 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4042 fontDescriptionRun02.familyDefined = true;
4043 fontDescriptionRun02.weightDefined = false;
4044 fontDescriptionRun02.widthDefined = false;
4045 fontDescriptionRun02.slantDefined = false;
4046 fontDescriptionRun02.sizeDefined = false;
4048 FontDescriptionRun fontDescriptionRun03;
4049 fontDescriptionRun03.characterRun.characterIndex = 24u;
4050 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4051 fontDescriptionRun03.familyLength = fontArabic.size();
4052 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4053 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4054 fontDescriptionRun03.familyDefined = true;
4055 fontDescriptionRun03.weightDefined = false;
4056 fontDescriptionRun03.widthDefined = false;
4057 fontDescriptionRun03.slantDefined = false;
4058 fontDescriptionRun03.sizeDefined = false;
4060 FontDescriptionRun fontDescriptionRun04;
4061 fontDescriptionRun04.characterRun.characterIndex = 38u;
4062 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4063 fontDescriptionRun04.familyLength = fontHebrew.size();
4064 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4065 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4066 fontDescriptionRun04.familyDefined = true;
4067 fontDescriptionRun04.weightDefined = false;
4068 fontDescriptionRun04.widthDefined = false;
4069 fontDescriptionRun04.slantDefined = false;
4070 fontDescriptionRun04.sizeDefined = false;
4072 FontDescriptionRun fontDescriptionRun05;
4073 fontDescriptionRun05.characterRun.characterIndex = 48u;
4074 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4075 fontDescriptionRun05.familyLength = fontHebrew.size();
4076 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4077 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4078 fontDescriptionRun05.familyDefined = true;
4079 fontDescriptionRun05.weightDefined = false;
4080 fontDescriptionRun05.widthDefined = false;
4081 fontDescriptionRun05.slantDefined = false;
4082 fontDescriptionRun05.sizeDefined = false;
4084 FontDescriptionRun fontDescriptionRun06;
4085 fontDescriptionRun06.characterRun.characterIndex = 58u;
4086 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4087 fontDescriptionRun06.familyLength = fontArabic.size();
4088 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4089 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4090 fontDescriptionRun06.familyDefined = true;
4091 fontDescriptionRun06.weightDefined = false;
4092 fontDescriptionRun06.widthDefined = false;
4093 fontDescriptionRun06.slantDefined = false;
4094 fontDescriptionRun06.sizeDefined = false;
4096 Vector<FontDescriptionRun> fontDescriptionRuns;
4097 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4098 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4099 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4100 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4101 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4102 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4106 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,
4107 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,
4108 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,
4109 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
4110 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,
4111 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,
4114 Size textArea( 100.f, 300.f );
4116 ReLayoutRightToLeftLinesData data =
4118 "Paragraphs with right to left text.",
4119 "שלום עולם مرحبا بالعالم\n"
4120 "مرحبا بالعالم שלום עולם\n"
4121 "שלום עולם مرحبا بالعالم.",
4124 fontDescriptionRuns.Begin(),
4131 if( !ReLayoutRightToLeftLinesTest( data ) )
4133 tet_result(TET_FAIL);
4136 tet_result(TET_PASS);
4140 int UtcDaliTextAlign01(void)
4142 ToolkitTestApplication application;
4143 tet_infoline(" UtcDaliTextAlign01");
4145 // Calculate text alignment.
4147 const std::string fontLatin( "TizenSans" );
4148 const std::string fontHebrew( "TizenSansHebrew" );
4149 const std::string fontArabic( "TizenSansArabic" );
4151 // Set a known font description
4152 FontDescriptionRun fontDescriptionRun01;
4153 fontDescriptionRun01.characterRun.characterIndex = 0u;
4154 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4155 fontDescriptionRun01.familyLength = fontLatin.size();
4156 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4157 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4158 fontDescriptionRun01.familyDefined = true;
4159 fontDescriptionRun01.weightDefined = false;
4160 fontDescriptionRun01.widthDefined = false;
4161 fontDescriptionRun01.slantDefined = false;
4162 fontDescriptionRun01.sizeDefined = false;
4164 FontDescriptionRun fontDescriptionRun02;
4165 fontDescriptionRun02.characterRun.characterIndex = 12u;
4166 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4167 fontDescriptionRun02.familyLength = fontHebrew.size();
4168 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4169 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4170 fontDescriptionRun02.familyDefined = true;
4171 fontDescriptionRun02.weightDefined = false;
4172 fontDescriptionRun02.widthDefined = false;
4173 fontDescriptionRun02.slantDefined = false;
4174 fontDescriptionRun02.sizeDefined = false;
4176 FontDescriptionRun fontDescriptionRun03;
4177 fontDescriptionRun03.characterRun.characterIndex = 22u;
4178 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4179 fontDescriptionRun03.familyLength = fontArabic.size();
4180 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4181 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4182 fontDescriptionRun03.familyDefined = true;
4183 fontDescriptionRun03.weightDefined = false;
4184 fontDescriptionRun03.widthDefined = false;
4185 fontDescriptionRun03.slantDefined = false;
4186 fontDescriptionRun03.sizeDefined = false;
4188 FontDescriptionRun fontDescriptionRun04;
4189 fontDescriptionRun04.characterRun.characterIndex = 36u;
4190 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4191 fontDescriptionRun04.familyLength = fontLatin.size();
4192 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4193 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4194 fontDescriptionRun04.familyDefined = true;
4195 fontDescriptionRun04.weightDefined = false;
4196 fontDescriptionRun04.widthDefined = false;
4197 fontDescriptionRun04.slantDefined = false;
4198 fontDescriptionRun04.sizeDefined = false;
4200 FontDescriptionRun fontDescriptionRun05;
4201 fontDescriptionRun05.characterRun.characterIndex = 48u;
4202 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4203 fontDescriptionRun05.familyLength = fontLatin.size();
4204 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4205 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4206 fontDescriptionRun05.familyDefined = true;
4207 fontDescriptionRun05.weightDefined = false;
4208 fontDescriptionRun05.widthDefined = false;
4209 fontDescriptionRun05.slantDefined = false;
4210 fontDescriptionRun05.sizeDefined = false;
4212 FontDescriptionRun fontDescriptionRun06;
4213 fontDescriptionRun06.characterRun.characterIndex = 60u;
4214 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4215 fontDescriptionRun06.familyLength = fontArabic.size();
4216 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4217 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4218 fontDescriptionRun06.familyDefined = true;
4219 fontDescriptionRun06.weightDefined = false;
4220 fontDescriptionRun06.widthDefined = false;
4221 fontDescriptionRun06.slantDefined = false;
4222 fontDescriptionRun06.sizeDefined = false;
4224 Vector<FontDescriptionRun> fontDescriptionRuns;
4225 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4226 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4227 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4228 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4229 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4230 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4232 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4234 Size textArea( 100.f, 300.f );
4237 "Begin alignment for the first paragraph.",
4238 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4241 fontDescriptionRuns.Begin(),
4242 Text::HorizontalAlignment::BEGIN,
4243 Text::VerticalAlignment::TOP,
4248 Dali::LayoutDirection::LEFT_TO_RIGHT,
4252 if( !AlignTest( data ) )
4254 tet_result(TET_FAIL);
4257 tet_result(TET_PASS);
4261 int UtcDaliTextAlign02(void)
4263 ToolkitTestApplication application;
4264 tet_infoline(" UtcDaliTextAlign02");
4266 // Calculate text alignment.
4268 const std::string fontLatin( "TizenSans" );
4269 const std::string fontHebrew( "TizenSansHebrew" );
4270 const std::string fontArabic( "TizenSansArabic" );
4272 // Set a known font description
4273 FontDescriptionRun fontDescriptionRun01;
4274 fontDescriptionRun01.characterRun.characterIndex = 0u;
4275 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4276 fontDescriptionRun01.familyLength = fontLatin.size();
4277 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4278 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4279 fontDescriptionRun01.familyDefined = true;
4280 fontDescriptionRun01.weightDefined = false;
4281 fontDescriptionRun01.widthDefined = false;
4282 fontDescriptionRun01.slantDefined = false;
4283 fontDescriptionRun01.sizeDefined = false;
4285 FontDescriptionRun fontDescriptionRun02;
4286 fontDescriptionRun02.characterRun.characterIndex = 12u;
4287 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4288 fontDescriptionRun02.familyLength = fontHebrew.size();
4289 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4290 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4291 fontDescriptionRun02.familyDefined = true;
4292 fontDescriptionRun02.weightDefined = false;
4293 fontDescriptionRun02.widthDefined = false;
4294 fontDescriptionRun02.slantDefined = false;
4295 fontDescriptionRun02.sizeDefined = false;
4297 FontDescriptionRun fontDescriptionRun03;
4298 fontDescriptionRun03.characterRun.characterIndex = 22u;
4299 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4300 fontDescriptionRun03.familyLength = fontArabic.size();
4301 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4302 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4303 fontDescriptionRun03.familyDefined = true;
4304 fontDescriptionRun03.weightDefined = false;
4305 fontDescriptionRun03.widthDefined = false;
4306 fontDescriptionRun03.slantDefined = false;
4307 fontDescriptionRun03.sizeDefined = false;
4309 FontDescriptionRun fontDescriptionRun04;
4310 fontDescriptionRun04.characterRun.characterIndex = 36u;
4311 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4312 fontDescriptionRun04.familyLength = fontLatin.size();
4313 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4314 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4315 fontDescriptionRun04.familyDefined = true;
4316 fontDescriptionRun04.weightDefined = false;
4317 fontDescriptionRun04.widthDefined = false;
4318 fontDescriptionRun04.slantDefined = false;
4319 fontDescriptionRun04.sizeDefined = false;
4321 FontDescriptionRun fontDescriptionRun05;
4322 fontDescriptionRun05.characterRun.characterIndex = 48u;
4323 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4324 fontDescriptionRun05.familyLength = fontLatin.size();
4325 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4326 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4327 fontDescriptionRun05.familyDefined = true;
4328 fontDescriptionRun05.weightDefined = false;
4329 fontDescriptionRun05.widthDefined = false;
4330 fontDescriptionRun05.slantDefined = false;
4331 fontDescriptionRun05.sizeDefined = false;
4333 FontDescriptionRun fontDescriptionRun06;
4334 fontDescriptionRun06.characterRun.characterIndex = 60u;
4335 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4336 fontDescriptionRun06.familyLength = fontArabic.size();
4337 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4338 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4339 fontDescriptionRun06.familyDefined = true;
4340 fontDescriptionRun06.weightDefined = false;
4341 fontDescriptionRun06.widthDefined = false;
4342 fontDescriptionRun06.slantDefined = false;
4343 fontDescriptionRun06.sizeDefined = false;
4345 Vector<FontDescriptionRun> fontDescriptionRuns;
4346 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4347 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4348 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4349 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4350 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4351 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4353 float positions[] = { 0.f, 0.f, 2.f, 61.f, 0.f, 0.f };
4355 Size textArea( 100.f, 300.f );
4358 "Begin alignment for the mid paragraph.",
4359 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4362 fontDescriptionRuns.Begin(),
4363 Text::HorizontalAlignment::BEGIN,
4364 Text::VerticalAlignment::TOP,
4369 Dali::LayoutDirection::LEFT_TO_RIGHT,
4373 if( !AlignTest( data ) )
4375 tet_result(TET_FAIL);
4378 tet_result(TET_PASS);
4382 int UtcDaliTextAlign03(void)
4384 ToolkitTestApplication application;
4385 tet_infoline(" UtcDaliTextAlign03");
4387 // Calculate text alignment.
4389 const std::string fontLatin( "TizenSans" );
4390 const std::string fontHebrew( "TizenSansHebrew" );
4391 const std::string fontArabic( "TizenSansArabic" );
4393 // Set a known font description
4394 FontDescriptionRun fontDescriptionRun01;
4395 fontDescriptionRun01.characterRun.characterIndex = 0u;
4396 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4397 fontDescriptionRun01.familyLength = fontLatin.size();
4398 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4399 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4400 fontDescriptionRun01.familyDefined = true;
4401 fontDescriptionRun01.weightDefined = false;
4402 fontDescriptionRun01.widthDefined = false;
4403 fontDescriptionRun01.slantDefined = false;
4404 fontDescriptionRun01.sizeDefined = false;
4406 FontDescriptionRun fontDescriptionRun02;
4407 fontDescriptionRun02.characterRun.characterIndex = 12u;
4408 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4409 fontDescriptionRun02.familyLength = fontHebrew.size();
4410 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4411 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4412 fontDescriptionRun02.familyDefined = true;
4413 fontDescriptionRun02.weightDefined = false;
4414 fontDescriptionRun02.widthDefined = false;
4415 fontDescriptionRun02.slantDefined = false;
4416 fontDescriptionRun02.sizeDefined = false;
4418 FontDescriptionRun fontDescriptionRun03;
4419 fontDescriptionRun03.characterRun.characterIndex = 22u;
4420 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4421 fontDescriptionRun03.familyLength = fontArabic.size();
4422 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4423 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4424 fontDescriptionRun03.familyDefined = true;
4425 fontDescriptionRun03.weightDefined = false;
4426 fontDescriptionRun03.widthDefined = false;
4427 fontDescriptionRun03.slantDefined = false;
4428 fontDescriptionRun03.sizeDefined = false;
4430 FontDescriptionRun fontDescriptionRun04;
4431 fontDescriptionRun04.characterRun.characterIndex = 36u;
4432 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4433 fontDescriptionRun04.familyLength = fontLatin.size();
4434 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4435 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4436 fontDescriptionRun04.familyDefined = true;
4437 fontDescriptionRun04.weightDefined = false;
4438 fontDescriptionRun04.widthDefined = false;
4439 fontDescriptionRun04.slantDefined = false;
4440 fontDescriptionRun04.sizeDefined = false;
4442 FontDescriptionRun fontDescriptionRun05;
4443 fontDescriptionRun05.characterRun.characterIndex = 48u;
4444 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4445 fontDescriptionRun05.familyLength = fontLatin.size();
4446 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4447 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4448 fontDescriptionRun05.familyDefined = true;
4449 fontDescriptionRun05.weightDefined = false;
4450 fontDescriptionRun05.widthDefined = false;
4451 fontDescriptionRun05.slantDefined = false;
4452 fontDescriptionRun05.sizeDefined = false;
4454 FontDescriptionRun fontDescriptionRun06;
4455 fontDescriptionRun06.characterRun.characterIndex = 60u;
4456 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4457 fontDescriptionRun06.familyLength = fontArabic.size();
4458 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4459 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4460 fontDescriptionRun06.familyDefined = true;
4461 fontDescriptionRun06.weightDefined = false;
4462 fontDescriptionRun06.widthDefined = false;
4463 fontDescriptionRun06.slantDefined = false;
4464 fontDescriptionRun06.sizeDefined = false;
4466 Vector<FontDescriptionRun> fontDescriptionRuns;
4467 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4468 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4469 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4470 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4471 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4472 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4474 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4476 Size textArea( 100.f, 300.f );
4479 "Begin alignment for the last paragraph.",
4480 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4483 fontDescriptionRuns.Begin(),
4484 Text::HorizontalAlignment::BEGIN,
4485 Text::VerticalAlignment::TOP,
4490 Dali::LayoutDirection::LEFT_TO_RIGHT,
4494 if( !AlignTest( data ) )
4496 tet_result(TET_FAIL);
4499 tet_result(TET_PASS);
4503 int UtcDaliTextAlign04(void)
4505 ToolkitTestApplication application;
4506 tet_infoline(" UtcDaliTextAlign04");
4508 // Calculate text alignment.
4510 const std::string fontLatin( "TizenSans" );
4511 const std::string fontHebrew( "TizenSansHebrew" );
4512 const std::string fontArabic( "TizenSansArabic" );
4514 // Set a known font description
4515 FontDescriptionRun fontDescriptionRun01;
4516 fontDescriptionRun01.characterRun.characterIndex = 0u;
4517 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4518 fontDescriptionRun01.familyLength = fontLatin.size();
4519 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4520 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4521 fontDescriptionRun01.familyDefined = true;
4522 fontDescriptionRun01.weightDefined = false;
4523 fontDescriptionRun01.widthDefined = false;
4524 fontDescriptionRun01.slantDefined = false;
4525 fontDescriptionRun01.sizeDefined = false;
4527 FontDescriptionRun fontDescriptionRun02;
4528 fontDescriptionRun02.characterRun.characterIndex = 12u;
4529 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4530 fontDescriptionRun02.familyLength = fontHebrew.size();
4531 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4532 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4533 fontDescriptionRun02.familyDefined = true;
4534 fontDescriptionRun02.weightDefined = false;
4535 fontDescriptionRun02.widthDefined = false;
4536 fontDescriptionRun02.slantDefined = false;
4537 fontDescriptionRun02.sizeDefined = false;
4539 FontDescriptionRun fontDescriptionRun03;
4540 fontDescriptionRun03.characterRun.characterIndex = 22u;
4541 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4542 fontDescriptionRun03.familyLength = fontArabic.size();
4543 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4544 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4545 fontDescriptionRun03.familyDefined = true;
4546 fontDescriptionRun03.weightDefined = false;
4547 fontDescriptionRun03.widthDefined = false;
4548 fontDescriptionRun03.slantDefined = false;
4549 fontDescriptionRun03.sizeDefined = false;
4551 FontDescriptionRun fontDescriptionRun04;
4552 fontDescriptionRun04.characterRun.characterIndex = 36u;
4553 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4554 fontDescriptionRun04.familyLength = fontLatin.size();
4555 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4556 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4557 fontDescriptionRun04.familyDefined = true;
4558 fontDescriptionRun04.weightDefined = false;
4559 fontDescriptionRun04.widthDefined = false;
4560 fontDescriptionRun04.slantDefined = false;
4561 fontDescriptionRun04.sizeDefined = false;
4563 FontDescriptionRun fontDescriptionRun05;
4564 fontDescriptionRun05.characterRun.characterIndex = 48u;
4565 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4566 fontDescriptionRun05.familyLength = fontLatin.size();
4567 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4568 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4569 fontDescriptionRun05.familyDefined = true;
4570 fontDescriptionRun05.weightDefined = false;
4571 fontDescriptionRun05.widthDefined = false;
4572 fontDescriptionRun05.slantDefined = false;
4573 fontDescriptionRun05.sizeDefined = false;
4575 FontDescriptionRun fontDescriptionRun06;
4576 fontDescriptionRun06.characterRun.characterIndex = 60u;
4577 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4578 fontDescriptionRun06.familyLength = fontArabic.size();
4579 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4580 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4581 fontDescriptionRun06.familyDefined = true;
4582 fontDescriptionRun06.weightDefined = false;
4583 fontDescriptionRun06.widthDefined = false;
4584 fontDescriptionRun06.slantDefined = false;
4585 fontDescriptionRun06.sizeDefined = false;
4587 Vector<FontDescriptionRun> fontDescriptionRuns;
4588 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4589 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4590 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4591 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4592 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4593 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4595 float positions[] = { 11.f, 17.f, 0.f, 0.f, 0.f, 0.f };
4597 Size textArea( 100.f, 300.f );
4600 "Center alignment for the first paragraph.",
4601 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4604 fontDescriptionRuns.Begin(),
4605 Text::HorizontalAlignment::CENTER,
4606 Text::VerticalAlignment::TOP,
4611 Dali::LayoutDirection::LEFT_TO_RIGHT,
4615 if( !AlignTest( data ) )
4617 tet_result(TET_FAIL);
4620 tet_result(TET_PASS);
4624 int UtcDaliTextAlign05(void)
4626 ToolkitTestApplication application;
4627 tet_infoline(" UtcDaliTextAlign05");
4629 // Calculate text alignment.
4631 const std::string fontLatin( "TizenSans" );
4632 const std::string fontHebrew( "TizenSansHebrew" );
4633 const std::string fontArabic( "TizenSansArabic" );
4635 // Set a known font description
4636 FontDescriptionRun fontDescriptionRun01;
4637 fontDescriptionRun01.characterRun.characterIndex = 0u;
4638 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4639 fontDescriptionRun01.familyLength = fontLatin.size();
4640 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4641 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4642 fontDescriptionRun01.familyDefined = true;
4643 fontDescriptionRun01.weightDefined = false;
4644 fontDescriptionRun01.widthDefined = false;
4645 fontDescriptionRun01.slantDefined = false;
4646 fontDescriptionRun01.sizeDefined = false;
4648 FontDescriptionRun fontDescriptionRun02;
4649 fontDescriptionRun02.characterRun.characterIndex = 12u;
4650 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4651 fontDescriptionRun02.familyLength = fontHebrew.size();
4652 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4653 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4654 fontDescriptionRun02.familyDefined = true;
4655 fontDescriptionRun02.weightDefined = false;
4656 fontDescriptionRun02.widthDefined = false;
4657 fontDescriptionRun02.slantDefined = false;
4658 fontDescriptionRun02.sizeDefined = false;
4660 FontDescriptionRun fontDescriptionRun03;
4661 fontDescriptionRun03.characterRun.characterIndex = 22u;
4662 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4663 fontDescriptionRun03.familyLength = fontArabic.size();
4664 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4665 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4666 fontDescriptionRun03.familyDefined = true;
4667 fontDescriptionRun03.weightDefined = false;
4668 fontDescriptionRun03.widthDefined = false;
4669 fontDescriptionRun03.slantDefined = false;
4670 fontDescriptionRun03.sizeDefined = false;
4672 FontDescriptionRun fontDescriptionRun04;
4673 fontDescriptionRun04.characterRun.characterIndex = 36u;
4674 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4675 fontDescriptionRun04.familyLength = fontLatin.size();
4676 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4677 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4678 fontDescriptionRun04.familyDefined = true;
4679 fontDescriptionRun04.weightDefined = false;
4680 fontDescriptionRun04.widthDefined = false;
4681 fontDescriptionRun04.slantDefined = false;
4682 fontDescriptionRun04.sizeDefined = false;
4684 FontDescriptionRun fontDescriptionRun05;
4685 fontDescriptionRun05.characterRun.characterIndex = 48u;
4686 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4687 fontDescriptionRun05.familyLength = fontLatin.size();
4688 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4689 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4690 fontDescriptionRun05.familyDefined = true;
4691 fontDescriptionRun05.weightDefined = false;
4692 fontDescriptionRun05.widthDefined = false;
4693 fontDescriptionRun05.slantDefined = false;
4694 fontDescriptionRun05.sizeDefined = false;
4696 FontDescriptionRun fontDescriptionRun06;
4697 fontDescriptionRun06.characterRun.characterIndex = 60u;
4698 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4699 fontDescriptionRun06.familyLength = fontArabic.size();
4700 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4701 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4702 fontDescriptionRun06.familyDefined = true;
4703 fontDescriptionRun06.weightDefined = false;
4704 fontDescriptionRun06.widthDefined = false;
4705 fontDescriptionRun06.slantDefined = false;
4706 fontDescriptionRun06.sizeDefined = false;
4708 Vector<FontDescriptionRun> fontDescriptionRuns;
4709 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4710 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4711 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4712 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4713 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4714 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4716 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4718 Size textArea( 100.f, 300.f );
4721 "Center alignment for the mid paragraph.",
4722 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4725 fontDescriptionRuns.Begin(),
4726 Text::HorizontalAlignment::CENTER,
4727 Text::VerticalAlignment::TOP,
4732 Dali::LayoutDirection::LEFT_TO_RIGHT,
4736 if( !AlignTest( data ) )
4738 tet_result(TET_FAIL);
4741 tet_result(TET_PASS);
4745 int UtcDaliTextAlign06(void)
4747 ToolkitTestApplication application;
4748 tet_infoline(" UtcDaliTextAlign06");
4750 // Calculate text alignment.
4752 const std::string fontLatin( "TizenSans" );
4753 const std::string fontHebrew( "TizenSansHebrew" );
4754 const std::string fontArabic( "TizenSansArabic" );
4756 // Set a known font description
4757 FontDescriptionRun fontDescriptionRun01;
4758 fontDescriptionRun01.characterRun.characterIndex = 0u;
4759 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4760 fontDescriptionRun01.familyLength = fontLatin.size();
4761 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4762 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4763 fontDescriptionRun01.familyDefined = true;
4764 fontDescriptionRun01.weightDefined = false;
4765 fontDescriptionRun01.widthDefined = false;
4766 fontDescriptionRun01.slantDefined = false;
4767 fontDescriptionRun01.sizeDefined = false;
4769 FontDescriptionRun fontDescriptionRun02;
4770 fontDescriptionRun02.characterRun.characterIndex = 12u;
4771 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4772 fontDescriptionRun02.familyLength = fontHebrew.size();
4773 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4774 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4775 fontDescriptionRun02.familyDefined = true;
4776 fontDescriptionRun02.weightDefined = false;
4777 fontDescriptionRun02.widthDefined = false;
4778 fontDescriptionRun02.slantDefined = false;
4779 fontDescriptionRun02.sizeDefined = false;
4781 FontDescriptionRun fontDescriptionRun03;
4782 fontDescriptionRun03.characterRun.characterIndex = 22u;
4783 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4784 fontDescriptionRun03.familyLength = fontArabic.size();
4785 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4786 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4787 fontDescriptionRun03.familyDefined = true;
4788 fontDescriptionRun03.weightDefined = false;
4789 fontDescriptionRun03.widthDefined = false;
4790 fontDescriptionRun03.slantDefined = false;
4791 fontDescriptionRun03.sizeDefined = false;
4793 FontDescriptionRun fontDescriptionRun04;
4794 fontDescriptionRun04.characterRun.characterIndex = 36u;
4795 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4796 fontDescriptionRun04.familyLength = fontLatin.size();
4797 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4798 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4799 fontDescriptionRun04.familyDefined = true;
4800 fontDescriptionRun04.weightDefined = false;
4801 fontDescriptionRun04.widthDefined = false;
4802 fontDescriptionRun04.slantDefined = false;
4803 fontDescriptionRun04.sizeDefined = false;
4805 FontDescriptionRun fontDescriptionRun05;
4806 fontDescriptionRun05.characterRun.characterIndex = 48u;
4807 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4808 fontDescriptionRun05.familyLength = fontLatin.size();
4809 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4810 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4811 fontDescriptionRun05.familyDefined = true;
4812 fontDescriptionRun05.weightDefined = false;
4813 fontDescriptionRun05.widthDefined = false;
4814 fontDescriptionRun05.slantDefined = false;
4815 fontDescriptionRun05.sizeDefined = false;
4817 FontDescriptionRun fontDescriptionRun06;
4818 fontDescriptionRun06.characterRun.characterIndex = 60u;
4819 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4820 fontDescriptionRun06.familyLength = fontArabic.size();
4821 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4822 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4823 fontDescriptionRun06.familyDefined = true;
4824 fontDescriptionRun06.weightDefined = false;
4825 fontDescriptionRun06.widthDefined = false;
4826 fontDescriptionRun06.slantDefined = false;
4827 fontDescriptionRun06.sizeDefined = false;
4829 Vector<FontDescriptionRun> fontDescriptionRuns;
4830 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4831 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4832 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4833 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4834 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4835 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4837 float positions[] = { 0.f, 0.f, 0.f, 0.f, 11.f, 21.f };
4839 Size textArea( 100.f, 300.f );
4842 "Center alignment for the last paragraph.",
4843 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4846 fontDescriptionRuns.Begin(),
4847 Text::HorizontalAlignment::CENTER,
4848 Text::VerticalAlignment::TOP,
4853 Dali::LayoutDirection::LEFT_TO_RIGHT,
4857 if( !AlignTest( data ) )
4859 tet_result(TET_FAIL);
4862 tet_result(TET_PASS);
4866 int UtcDaliTextAlign07(void)
4868 ToolkitTestApplication application;
4869 tet_infoline(" UtcDaliTextAlign07");
4871 // Calculate text alignment.
4873 const std::string fontLatin( "TizenSans" );
4874 const std::string fontHebrew( "TizenSansHebrew" );
4875 const std::string fontArabic( "TizenSansArabic" );
4877 // Set a known font description
4878 FontDescriptionRun fontDescriptionRun01;
4879 fontDescriptionRun01.characterRun.characterIndex = 0u;
4880 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4881 fontDescriptionRun01.familyLength = fontLatin.size();
4882 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4883 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4884 fontDescriptionRun01.familyDefined = true;
4885 fontDescriptionRun01.weightDefined = false;
4886 fontDescriptionRun01.widthDefined = false;
4887 fontDescriptionRun01.slantDefined = false;
4888 fontDescriptionRun01.sizeDefined = false;
4890 FontDescriptionRun fontDescriptionRun02;
4891 fontDescriptionRun02.characterRun.characterIndex = 12u;
4892 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4893 fontDescriptionRun02.familyLength = fontHebrew.size();
4894 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4895 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4896 fontDescriptionRun02.familyDefined = true;
4897 fontDescriptionRun02.weightDefined = false;
4898 fontDescriptionRun02.widthDefined = false;
4899 fontDescriptionRun02.slantDefined = false;
4900 fontDescriptionRun02.sizeDefined = false;
4902 FontDescriptionRun fontDescriptionRun03;
4903 fontDescriptionRun03.characterRun.characterIndex = 22u;
4904 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4905 fontDescriptionRun03.familyLength = fontArabic.size();
4906 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4907 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4908 fontDescriptionRun03.familyDefined = true;
4909 fontDescriptionRun03.weightDefined = false;
4910 fontDescriptionRun03.widthDefined = false;
4911 fontDescriptionRun03.slantDefined = false;
4912 fontDescriptionRun03.sizeDefined = false;
4914 FontDescriptionRun fontDescriptionRun04;
4915 fontDescriptionRun04.characterRun.characterIndex = 36u;
4916 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4917 fontDescriptionRun04.familyLength = fontLatin.size();
4918 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4919 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4920 fontDescriptionRun04.familyDefined = true;
4921 fontDescriptionRun04.weightDefined = false;
4922 fontDescriptionRun04.widthDefined = false;
4923 fontDescriptionRun04.slantDefined = false;
4924 fontDescriptionRun04.sizeDefined = false;
4926 FontDescriptionRun fontDescriptionRun05;
4927 fontDescriptionRun05.characterRun.characterIndex = 48u;
4928 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4929 fontDescriptionRun05.familyLength = fontLatin.size();
4930 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4931 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4932 fontDescriptionRun05.familyDefined = true;
4933 fontDescriptionRun05.weightDefined = false;
4934 fontDescriptionRun05.widthDefined = false;
4935 fontDescriptionRun05.slantDefined = false;
4936 fontDescriptionRun05.sizeDefined = false;
4938 FontDescriptionRun fontDescriptionRun06;
4939 fontDescriptionRun06.characterRun.characterIndex = 60u;
4940 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4941 fontDescriptionRun06.familyLength = fontArabic.size();
4942 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4943 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4944 fontDescriptionRun06.familyDefined = true;
4945 fontDescriptionRun06.weightDefined = false;
4946 fontDescriptionRun06.widthDefined = false;
4947 fontDescriptionRun06.slantDefined = false;
4948 fontDescriptionRun06.sizeDefined = false;
4950 Vector<FontDescriptionRun> fontDescriptionRuns;
4951 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4952 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4953 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4954 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4955 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4956 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4958 float positions[] = { 22.f, 35.f, 0.f, 0.f, 0.f, 0.f };
4960 Size textArea( 100.f, 300.f );
4963 "End alignment for the first paragraph.",
4964 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4967 fontDescriptionRuns.Begin(),
4968 Text::HorizontalAlignment::END,
4969 Text::VerticalAlignment::TOP,
4974 Dali::LayoutDirection::LEFT_TO_RIGHT,
4978 if( !AlignTest( data ) )
4980 tet_result(TET_FAIL);
4983 tet_result(TET_PASS);
4987 int UtcDaliTextAlign08(void)
4989 ToolkitTestApplication application;
4990 tet_infoline(" UtcDaliTextAlign08");
4992 // Calculate text alignment.
4994 const std::string fontLatin( "TizenSans" );
4995 const std::string fontHebrew( "TizenSansHebrew" );
4996 const std::string fontArabic( "TizenSansArabic" );
4998 // Set a known font description
4999 FontDescriptionRun fontDescriptionRun01;
5000 fontDescriptionRun01.characterRun.characterIndex = 0u;
5001 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5002 fontDescriptionRun01.familyLength = fontLatin.size();
5003 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5004 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5005 fontDescriptionRun01.familyDefined = true;
5006 fontDescriptionRun01.weightDefined = false;
5007 fontDescriptionRun01.widthDefined = false;
5008 fontDescriptionRun01.slantDefined = false;
5009 fontDescriptionRun01.sizeDefined = false;
5011 FontDescriptionRun fontDescriptionRun02;
5012 fontDescriptionRun02.characterRun.characterIndex = 12u;
5013 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5014 fontDescriptionRun02.familyLength = fontHebrew.size();
5015 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5016 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5017 fontDescriptionRun02.familyDefined = true;
5018 fontDescriptionRun02.weightDefined = false;
5019 fontDescriptionRun02.widthDefined = false;
5020 fontDescriptionRun02.slantDefined = false;
5021 fontDescriptionRun02.sizeDefined = false;
5023 FontDescriptionRun fontDescriptionRun03;
5024 fontDescriptionRun03.characterRun.characterIndex = 22u;
5025 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5026 fontDescriptionRun03.familyLength = fontArabic.size();
5027 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5028 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5029 fontDescriptionRun03.familyDefined = true;
5030 fontDescriptionRun03.weightDefined = false;
5031 fontDescriptionRun03.widthDefined = false;
5032 fontDescriptionRun03.slantDefined = false;
5033 fontDescriptionRun03.sizeDefined = false;
5035 FontDescriptionRun fontDescriptionRun04;
5036 fontDescriptionRun04.characterRun.characterIndex = 36u;
5037 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5038 fontDescriptionRun04.familyLength = fontLatin.size();
5039 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5040 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5041 fontDescriptionRun04.familyDefined = true;
5042 fontDescriptionRun04.weightDefined = false;
5043 fontDescriptionRun04.widthDefined = false;
5044 fontDescriptionRun04.slantDefined = false;
5045 fontDescriptionRun04.sizeDefined = false;
5047 FontDescriptionRun fontDescriptionRun05;
5048 fontDescriptionRun05.characterRun.characterIndex = 48u;
5049 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5050 fontDescriptionRun05.familyLength = fontLatin.size();
5051 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5052 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5053 fontDescriptionRun05.familyDefined = true;
5054 fontDescriptionRun05.weightDefined = false;
5055 fontDescriptionRun05.widthDefined = false;
5056 fontDescriptionRun05.slantDefined = false;
5057 fontDescriptionRun05.sizeDefined = false;
5059 FontDescriptionRun fontDescriptionRun06;
5060 fontDescriptionRun06.characterRun.characterIndex = 60u;
5061 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5062 fontDescriptionRun06.familyLength = fontArabic.size();
5063 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5064 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5065 fontDescriptionRun06.familyDefined = true;
5066 fontDescriptionRun06.weightDefined = false;
5067 fontDescriptionRun06.widthDefined = false;
5068 fontDescriptionRun06.slantDefined = false;
5069 fontDescriptionRun06.sizeDefined = false;
5071 Vector<FontDescriptionRun> fontDescriptionRuns;
5072 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5073 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5074 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5075 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5076 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5077 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5079 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5081 Size textArea( 100.f, 300.f );
5084 "End alignment for the mid paragraph.",
5085 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5088 fontDescriptionRuns.Begin(),
5089 Text::HorizontalAlignment::END,
5090 Text::VerticalAlignment::TOP,
5095 Dali::LayoutDirection::LEFT_TO_RIGHT,
5099 if( !AlignTest( data ) )
5101 tet_result(TET_FAIL);
5104 tet_result(TET_PASS);
5108 int UtcDaliTextAlign09(void)
5110 ToolkitTestApplication application;
5111 tet_infoline(" UtcDaliTextAlign09");
5113 // Calculate text alignment.
5115 const std::string fontLatin( "TizenSans" );
5116 const std::string fontHebrew( "TizenSansHebrew" );
5117 const std::string fontArabic( "TizenSansArabic" );
5119 // Set a known font description
5120 FontDescriptionRun fontDescriptionRun01;
5121 fontDescriptionRun01.characterRun.characterIndex = 0u;
5122 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5123 fontDescriptionRun01.familyLength = fontLatin.size();
5124 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5125 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5126 fontDescriptionRun01.familyDefined = true;
5127 fontDescriptionRun01.weightDefined = false;
5128 fontDescriptionRun01.widthDefined = false;
5129 fontDescriptionRun01.slantDefined = false;
5130 fontDescriptionRun01.sizeDefined = false;
5132 FontDescriptionRun fontDescriptionRun02;
5133 fontDescriptionRun02.characterRun.characterIndex = 12u;
5134 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5135 fontDescriptionRun02.familyLength = fontHebrew.size();
5136 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5137 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5138 fontDescriptionRun02.familyDefined = true;
5139 fontDescriptionRun02.weightDefined = false;
5140 fontDescriptionRun02.widthDefined = false;
5141 fontDescriptionRun02.slantDefined = false;
5142 fontDescriptionRun02.sizeDefined = false;
5144 FontDescriptionRun fontDescriptionRun03;
5145 fontDescriptionRun03.characterRun.characterIndex = 22u;
5146 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5147 fontDescriptionRun03.familyLength = fontArabic.size();
5148 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5149 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5150 fontDescriptionRun03.familyDefined = true;
5151 fontDescriptionRun03.weightDefined = false;
5152 fontDescriptionRun03.widthDefined = false;
5153 fontDescriptionRun03.slantDefined = false;
5154 fontDescriptionRun03.sizeDefined = false;
5156 FontDescriptionRun fontDescriptionRun04;
5157 fontDescriptionRun04.characterRun.characterIndex = 36u;
5158 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5159 fontDescriptionRun04.familyLength = fontLatin.size();
5160 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5161 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5162 fontDescriptionRun04.familyDefined = true;
5163 fontDescriptionRun04.weightDefined = false;
5164 fontDescriptionRun04.widthDefined = false;
5165 fontDescriptionRun04.slantDefined = false;
5166 fontDescriptionRun04.sizeDefined = false;
5168 FontDescriptionRun fontDescriptionRun05;
5169 fontDescriptionRun05.characterRun.characterIndex = 48u;
5170 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5171 fontDescriptionRun05.familyLength = fontLatin.size();
5172 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5173 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5174 fontDescriptionRun05.familyDefined = true;
5175 fontDescriptionRun05.weightDefined = false;
5176 fontDescriptionRun05.widthDefined = false;
5177 fontDescriptionRun05.slantDefined = false;
5178 fontDescriptionRun05.sizeDefined = false;
5180 FontDescriptionRun fontDescriptionRun06;
5181 fontDescriptionRun06.characterRun.characterIndex = 60u;
5182 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5183 fontDescriptionRun06.familyLength = fontArabic.size();
5184 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5185 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5186 fontDescriptionRun06.familyDefined = true;
5187 fontDescriptionRun06.weightDefined = false;
5188 fontDescriptionRun06.widthDefined = false;
5189 fontDescriptionRun06.slantDefined = false;
5190 fontDescriptionRun06.sizeDefined = false;
5192 Vector<FontDescriptionRun> fontDescriptionRuns;
5193 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5194 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5195 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5196 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5197 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5198 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5200 float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 42.f };
5202 Size textArea( 100.f, 300.f );
5205 "End alignment for the last paragraph.",
5206 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5209 fontDescriptionRuns.Begin(),
5210 Text::HorizontalAlignment::END,
5211 Text::VerticalAlignment::TOP,
5216 Dali::LayoutDirection::LEFT_TO_RIGHT,
5220 if( !AlignTest( data ) )
5222 tet_result(TET_FAIL);
5225 tet_result(TET_PASS);
5229 int UtcDaliTextAlign10(void)
5231 ToolkitTestApplication application;
5232 tet_infoline(" UtcDaliTextAlign10");
5234 // Calculate text alignment.
5236 const std::string fontLatin( "TizenSans" );
5237 const std::string fontHebrew( "TizenSansHebrew" );
5238 const std::string fontArabic( "TizenSansArabic" );
5240 // Set a known font description
5241 FontDescriptionRun fontDescriptionRun01;
5242 fontDescriptionRun01.characterRun.characterIndex = 0u;
5243 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5244 fontDescriptionRun01.familyLength = fontLatin.size();
5245 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5246 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5247 fontDescriptionRun01.familyDefined = true;
5248 fontDescriptionRun01.weightDefined = false;
5249 fontDescriptionRun01.widthDefined = false;
5250 fontDescriptionRun01.slantDefined = false;
5251 fontDescriptionRun01.sizeDefined = false;
5253 FontDescriptionRun fontDescriptionRun02;
5254 fontDescriptionRun02.characterRun.characterIndex = 12u;
5255 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5256 fontDescriptionRun02.familyLength = fontHebrew.size();
5257 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5258 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5259 fontDescriptionRun02.familyDefined = true;
5260 fontDescriptionRun02.weightDefined = false;
5261 fontDescriptionRun02.widthDefined = false;
5262 fontDescriptionRun02.slantDefined = false;
5263 fontDescriptionRun02.sizeDefined = false;
5265 FontDescriptionRun fontDescriptionRun03;
5266 fontDescriptionRun03.characterRun.characterIndex = 22u;
5267 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5268 fontDescriptionRun03.familyLength = fontArabic.size();
5269 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5270 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5271 fontDescriptionRun03.familyDefined = true;
5272 fontDescriptionRun03.weightDefined = false;
5273 fontDescriptionRun03.widthDefined = false;
5274 fontDescriptionRun03.slantDefined = false;
5275 fontDescriptionRun03.sizeDefined = false;
5277 FontDescriptionRun fontDescriptionRun04;
5278 fontDescriptionRun04.characterRun.characterIndex = 36u;
5279 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5280 fontDescriptionRun04.familyLength = fontLatin.size();
5281 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5282 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5283 fontDescriptionRun04.familyDefined = true;
5284 fontDescriptionRun04.weightDefined = false;
5285 fontDescriptionRun04.widthDefined = false;
5286 fontDescriptionRun04.slantDefined = false;
5287 fontDescriptionRun04.sizeDefined = false;
5289 FontDescriptionRun fontDescriptionRun05;
5290 fontDescriptionRun05.characterRun.characterIndex = 48u;
5291 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5292 fontDescriptionRun05.familyLength = fontLatin.size();
5293 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5294 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5295 fontDescriptionRun05.familyDefined = true;
5296 fontDescriptionRun05.weightDefined = false;
5297 fontDescriptionRun05.widthDefined = false;
5298 fontDescriptionRun05.slantDefined = false;
5299 fontDescriptionRun05.sizeDefined = false;
5301 FontDescriptionRun fontDescriptionRun06;
5302 fontDescriptionRun06.characterRun.characterIndex = 60u;
5303 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5304 fontDescriptionRun06.familyLength = fontArabic.size();
5305 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5306 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5307 fontDescriptionRun06.familyDefined = true;
5308 fontDescriptionRun06.weightDefined = false;
5309 fontDescriptionRun06.widthDefined = false;
5310 fontDescriptionRun06.slantDefined = false;
5311 fontDescriptionRun06.sizeDefined = false;
5313 Vector<FontDescriptionRun> fontDescriptionRuns;
5314 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5315 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5316 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5317 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5318 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5319 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5321 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5323 Size textArea( 100.f, 300.f );
5326 "Begin alignment for the first paragraph.",
5327 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5330 fontDescriptionRuns.Begin(),
5331 Text::HorizontalAlignment::END,
5332 Text::VerticalAlignment::TOP,
5337 Dali::LayoutDirection::RIGHT_TO_LEFT,
5341 if( !AlignTest( data ) )
5343 tet_result(TET_FAIL);
5346 tet_result(TET_PASS);
5350 int UtcDaliTextAlign11(void)
5352 ToolkitTestApplication application;
5353 tet_infoline(" UtcDaliTextAlign11");
5355 // Calculate text alignment.
5357 const std::string fontLatin( "TizenSans" );
5358 const std::string fontHebrew( "TizenSansHebrew" );
5359 const std::string fontArabic( "TizenSansArabic" );
5361 // Set a known font description
5362 FontDescriptionRun fontDescriptionRun01;
5363 fontDescriptionRun01.characterRun.characterIndex = 0u;
5364 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5365 fontDescriptionRun01.familyLength = fontLatin.size();
5366 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5367 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5368 fontDescriptionRun01.familyDefined = true;
5369 fontDescriptionRun01.weightDefined = false;
5370 fontDescriptionRun01.widthDefined = false;
5371 fontDescriptionRun01.slantDefined = false;
5372 fontDescriptionRun01.sizeDefined = false;
5374 FontDescriptionRun fontDescriptionRun02;
5375 fontDescriptionRun02.characterRun.characterIndex = 12u;
5376 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5377 fontDescriptionRun02.familyLength = fontHebrew.size();
5378 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5379 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5380 fontDescriptionRun02.familyDefined = true;
5381 fontDescriptionRun02.weightDefined = false;
5382 fontDescriptionRun02.widthDefined = false;
5383 fontDescriptionRun02.slantDefined = false;
5384 fontDescriptionRun02.sizeDefined = false;
5386 FontDescriptionRun fontDescriptionRun03;
5387 fontDescriptionRun03.characterRun.characterIndex = 22u;
5388 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5389 fontDescriptionRun03.familyLength = fontArabic.size();
5390 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5391 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5392 fontDescriptionRun03.familyDefined = true;
5393 fontDescriptionRun03.weightDefined = false;
5394 fontDescriptionRun03.widthDefined = false;
5395 fontDescriptionRun03.slantDefined = false;
5396 fontDescriptionRun03.sizeDefined = false;
5398 FontDescriptionRun fontDescriptionRun04;
5399 fontDescriptionRun04.characterRun.characterIndex = 36u;
5400 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5401 fontDescriptionRun04.familyLength = fontLatin.size();
5402 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5403 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5404 fontDescriptionRun04.familyDefined = true;
5405 fontDescriptionRun04.weightDefined = false;
5406 fontDescriptionRun04.widthDefined = false;
5407 fontDescriptionRun04.slantDefined = false;
5408 fontDescriptionRun04.sizeDefined = false;
5410 FontDescriptionRun fontDescriptionRun05;
5411 fontDescriptionRun05.characterRun.characterIndex = 48u;
5412 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5413 fontDescriptionRun05.familyLength = fontLatin.size();
5414 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5415 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5416 fontDescriptionRun05.familyDefined = true;
5417 fontDescriptionRun05.weightDefined = false;
5418 fontDescriptionRun05.widthDefined = false;
5419 fontDescriptionRun05.slantDefined = false;
5420 fontDescriptionRun05.sizeDefined = false;
5422 FontDescriptionRun fontDescriptionRun06;
5423 fontDescriptionRun06.characterRun.characterIndex = 60u;
5424 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5425 fontDescriptionRun06.familyLength = fontArabic.size();
5426 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5427 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5428 fontDescriptionRun06.familyDefined = true;
5429 fontDescriptionRun06.weightDefined = false;
5430 fontDescriptionRun06.widthDefined = false;
5431 fontDescriptionRun06.slantDefined = false;
5432 fontDescriptionRun06.sizeDefined = false;
5434 Vector<FontDescriptionRun> fontDescriptionRuns;
5435 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5436 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5437 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5438 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5439 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5440 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5442 float positions[] = { 22.f, 35.f, 2.f, 0.f, 0.f, 0.f };
5444 Size textArea( 100.f, 300.f );
5447 "End alignment for the last paragraph.",
5448 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5451 fontDescriptionRuns.Begin(),
5452 Text::HorizontalAlignment::END,
5453 Text::VerticalAlignment::TOP,
5458 Dali::LayoutDirection::LEFT_TO_RIGHT,
5462 if( !AlignTest( data ) )
5464 tet_result(TET_FAIL);
5467 tet_result(TET_PASS);
5471 int UtcDaliTextAlign12(void)
5473 ToolkitTestApplication application;
5474 tet_infoline(" UtcDaliTextAlign12");
5476 // Calculate text alignment.
5478 const std::string fontLatin( "TizenSans" );
5479 const std::string fontHebrew( "TizenSansHebrew" );
5480 const std::string fontArabic( "TizenSansArabic" );
5482 // Set a known font description
5483 FontDescriptionRun fontDescriptionRun01;
5484 fontDescriptionRun01.characterRun.characterIndex = 0u;
5485 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5486 fontDescriptionRun01.familyLength = fontLatin.size();
5487 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5488 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5489 fontDescriptionRun01.familyDefined = true;
5490 fontDescriptionRun01.weightDefined = false;
5491 fontDescriptionRun01.widthDefined = false;
5492 fontDescriptionRun01.slantDefined = false;
5493 fontDescriptionRun01.sizeDefined = false;
5495 FontDescriptionRun fontDescriptionRun02;
5496 fontDescriptionRun02.characterRun.characterIndex = 12u;
5497 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5498 fontDescriptionRun02.familyLength = fontHebrew.size();
5499 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5500 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5501 fontDescriptionRun02.familyDefined = true;
5502 fontDescriptionRun02.weightDefined = false;
5503 fontDescriptionRun02.widthDefined = false;
5504 fontDescriptionRun02.slantDefined = false;
5505 fontDescriptionRun02.sizeDefined = false;
5507 FontDescriptionRun fontDescriptionRun03;
5508 fontDescriptionRun03.characterRun.characterIndex = 22u;
5509 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5510 fontDescriptionRun03.familyLength = fontArabic.size();
5511 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5512 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5513 fontDescriptionRun03.familyDefined = true;
5514 fontDescriptionRun03.weightDefined = false;
5515 fontDescriptionRun03.widthDefined = false;
5516 fontDescriptionRun03.slantDefined = false;
5517 fontDescriptionRun03.sizeDefined = false;
5519 FontDescriptionRun fontDescriptionRun04;
5520 fontDescriptionRun04.characterRun.characterIndex = 36u;
5521 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5522 fontDescriptionRun04.familyLength = fontLatin.size();
5523 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5524 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5525 fontDescriptionRun04.familyDefined = true;
5526 fontDescriptionRun04.weightDefined = false;
5527 fontDescriptionRun04.widthDefined = false;
5528 fontDescriptionRun04.slantDefined = false;
5529 fontDescriptionRun04.sizeDefined = false;
5531 FontDescriptionRun fontDescriptionRun05;
5532 fontDescriptionRun05.characterRun.characterIndex = 48u;
5533 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5534 fontDescriptionRun05.familyLength = fontLatin.size();
5535 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5536 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5537 fontDescriptionRun05.familyDefined = true;
5538 fontDescriptionRun05.weightDefined = false;
5539 fontDescriptionRun05.widthDefined = false;
5540 fontDescriptionRun05.slantDefined = false;
5541 fontDescriptionRun05.sizeDefined = false;
5543 FontDescriptionRun fontDescriptionRun06;
5544 fontDescriptionRun06.characterRun.characterIndex = 60u;
5545 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5546 fontDescriptionRun06.familyLength = fontArabic.size();
5547 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5548 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5549 fontDescriptionRun06.familyDefined = true;
5550 fontDescriptionRun06.weightDefined = false;
5551 fontDescriptionRun06.widthDefined = false;
5552 fontDescriptionRun06.slantDefined = false;
5553 fontDescriptionRun06.sizeDefined = false;
5555 Vector<FontDescriptionRun> fontDescriptionRuns;
5556 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5557 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5558 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5559 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5560 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5561 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5563 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5565 Size textArea( 100.f, 300.f );
5568 "Begin alignment for the first paragraph.",
5569 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5572 fontDescriptionRuns.Begin(),
5573 Text::HorizontalAlignment::BEGIN,
5574 Text::VerticalAlignment::TOP,
5579 Dali::LayoutDirection::LEFT_TO_RIGHT,
5583 if( !AlignTest( data ) )
5585 tet_result(TET_FAIL);
5588 tet_result(TET_PASS);
5592 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5594 ToolkitTestApplication application;
5595 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5597 Layout::Engine engine;
5598 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5600 engine.SetDefaultLineSpacing( 10.f );
5601 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5603 tet_result(TET_PASS);