2 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
87 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf" );
89 // 1) Create the model.
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,
114 LogicalModelPtr logicalModel = textModel->mLogicalModel;
115 VisualModelPtr visualModel = textModel->mVisualModel;
117 // 2) Clear the layout.
118 Vector<LineRun>& lines = visualModel->mLines;
120 const Length numberOfCharacters = logicalModel->mText.Count();
121 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
122 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
123 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
125 LineIndex startRemoveIndex = 0u;
127 if( 0u != lines.Count() )
129 startRemoveIndex = lines.Count();
130 LineIndex endRemoveIndex = startRemoveIndex;
131 ClearGlyphRuns( data.startIndex,
132 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
137 // Update the character runs of the lines.
138 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
139 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
140 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
141 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
142 ClearCharacterRuns( startCharacterIndex,
143 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
148 lines.Erase( lines.Begin() + startRemoveIndex,
149 lines.Begin() + endRemoveIndex );
152 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
154 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
155 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
158 Layout::Engine engine;
159 engine.SetMetrics( metrics );
160 engine.SetLayout( data.layout );
162 textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
163 textModel->mLineWrapMode = LineWrap::WORD;
164 textModel->mIgnoreSpacesAfterText = true;
165 textModel->mMatchSystemLanguageDirection = false;
166 Layout::Parameters layoutParameters( data.textArea,
169 layoutParameters.isLastNewParagraph = isLastNewParagraph;
171 // The initial glyph and the number of glyphs to layout.
172 layoutParameters.startGlyphIndex = data.startIndex;
173 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
174 layoutParameters.startLineIndex = startRemoveIndex;
175 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
177 layoutSize = Vector2::ZERO;
179 bool isAutoScroll = false;
180 const bool updated = engine.LayoutText( layoutParameters,
187 // 4) Compare the results.
189 if( updated != data.updated )
191 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
195 if( layoutSize != data.layoutSize )
197 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
201 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
203 const Vector2& position = *( glyphPositions.Begin() + index );
205 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
207 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
210 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
212 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
217 if( lines.Count() != data.numberOfLines )
219 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
223 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
225 const LineRun& line = *( lines.Begin() + index );
226 const LineRun& expectedLine = *( data.lines + index );
228 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
230 std::cout << " Different line info for line : " << index << std::endl;
232 std::cout << " expected" << std::endl;
233 Print( expectedLine );
236 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
238 std::cout << " Different line info for line : " << index << std::endl;
240 std::cout << " expected" << std::endl;
241 Print( expectedLine );
245 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
247 std::cout << " Different line info for line : " << index << std::endl;
249 std::cout << " expected" << std::endl;
250 Print( expectedLine );
253 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
255 std::cout << " Different line info for line : " << index << std::endl;
257 std::cout << " expected" << std::endl;
258 Print( expectedLine );
262 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
264 std::cout << " Different line info for line : " << index << std::endl;
266 std::cout << " expected" << std::endl;
267 Print( expectedLine );
271 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
273 std::cout << " Different line info for line : " << index << std::endl;
275 std::cout << " expected" << std::endl;
276 Print( expectedLine );
280 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
282 std::cout << " Different line info for line : " << index << std::endl;
284 std::cout << " expected" << std::endl;
285 Print( expectedLine );
289 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
291 std::cout << " Different line info for line : " << index << std::endl;
293 std::cout << " expected" << std::endl;
294 Print( expectedLine );
298 if( line.ellipsis != expectedLine.ellipsis )
300 std::cout << " Different line info for line : " << index << std::endl;
302 std::cout << " expected" << std::endl;
303 Print( expectedLine );
307 // Do not compare the alignment offset as it's not calculated in the layout.
308 // Do not compare the line direction as it's not set in the layout.
314 //////////////////////////////////////////////////////////
316 struct ReLayoutRightToLeftLinesData
318 std::string description;
321 unsigned int numberOfFonts;
322 FontDescriptionRun* fontDescriptions;
323 unsigned int totalNumberOfGlyphs;
325 unsigned int startIndex;
326 unsigned int numberOfCharacters;
329 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
332 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
333 fontClient.SetDpi( 96u, 96u );
335 char* pathNamePtr = get_current_dir_name();
336 const std::string pathName( pathNamePtr );
339 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
340 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
341 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
343 // 1) Create the model.
348 Vector<FontDescriptionRun> fontDescriptionRuns;
349 if( 0u != data.numberOfFonts )
351 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
352 data.fontDescriptions,
353 data.fontDescriptions + data.numberOfFonts );
356 LayoutOptions options;
357 options.reorder = false;
358 options.align = false;
359 CreateTextModel( data.text,
368 LogicalModelPtr logicalModel = textModel->mLogicalModel;
369 VisualModelPtr visualModel = textModel->mVisualModel;
371 // 2) Call the ReLayoutRightToLeftLines() method.
372 Layout::Engine engine;
373 engine.SetMetrics( metrics );
375 textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
376 textModel->mLineWrapMode = LineWrap::WORD;
377 textModel->mIgnoreSpacesAfterText = true;
378 textModel->mMatchSystemLanguageDirection = false;
379 Layout::Parameters layoutParameters( data.textArea,
382 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
383 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
385 engine.ReLayoutRightToLeftLines( layoutParameters,
387 data.numberOfCharacters,
388 visualModel->mGlyphPositions );
390 // 3) Compare the results.
391 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
393 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
395 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
399 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
401 const Vector2& position = *( glyphPositions.Begin() + index );
403 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
405 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
408 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
410 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
418 //////////////////////////////////////////////////////////
422 std::string description;
425 unsigned int numberOfFonts;
426 FontDescriptionRun* fontDescriptions;
427 Text::HorizontalAlignment::Type horizontalAlignment;
428 Text::VerticalAlignment::Type verticalAlignment;
429 unsigned int startIndex;
430 unsigned int numberOfCharacters;
431 unsigned int numberOfLines;
433 Dali::LayoutDirection::Type layoutDirection;
434 bool matchSystemLanguageDirection;
437 bool AlignTest( const AlignData& data )
440 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
441 fontClient.SetDpi( 96u, 96u );
443 char* pathNamePtr = get_current_dir_name();
444 const std::string pathName( pathNamePtr );
447 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
448 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
449 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
451 // 1) Create the model.
456 Vector<FontDescriptionRun> fontDescriptionRuns;
457 if( 0u != data.numberOfFonts )
459 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
460 data.fontDescriptions,
461 data.fontDescriptions + data.numberOfFonts );
464 LayoutOptions options;
465 options.align = false;
466 CreateTextModel( data.text,
475 LogicalModelPtr logicalModel = textModel->mLogicalModel;
476 VisualModelPtr visualModel = textModel->mVisualModel;
478 // Call the Align method.
479 Layout::Engine engine;
480 engine.SetMetrics( metrics );
482 float alignmentOffset = 0.f;
483 engine.Align( data.textArea,
485 data.numberOfCharacters,
486 data.horizontalAlignment,
489 data.layoutDirection,
490 data.matchSystemLanguageDirection );
493 if( data.numberOfLines != visualModel->mLines.Count() )
495 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
499 const LineRun* const linesBuffer = visualModel->mLines.Begin();
500 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
502 const LineRun& line = *( linesBuffer + index );
504 if( line.alignmentOffset != *( data.lineOffsets + index ) )
506 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
515 //////////////////////////////////////////////////////////
517 // UtcDaliTextLayoutSetGetLayout
518 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
519 // UtcDaliTextLayoutSetGetHorizontalAlignment
520 // UtcDaliTextLayoutSetGetVerticalAlignment
521 // UtcDaliTextLayoutSetGetCursorWidth
522 // UtcDaliTextLayoutNoText
523 // UtcDaliTextLayoutSmallTextArea01
524 // UtcDaliTextLayoutSmallTextArea02
525 // UtcDaliTextLayoutMultilineText01
526 // UtcDaliTextLayoutMultilineText02
527 // UtcDaliTextLayoutMultilineText03
528 // UtcDaliTextLayoutMultilineText04
529 // UtcDaliTextLayoutMultilineText05
530 // UtcDaliTextUpdateLayout01
531 // UtcDaliTextUpdateLayout02
532 // UtcDaliTextUpdateLayout03
533 // UtcDaliTextLayoutEllipsis01
534 // UtcDaliTextLayoutEllipsis02
535 // UtcDaliTextLayoutEllipsis03
536 // UtcDaliTextLayoutEllipsis04
537 // UtcDaliTextLayoutEllipsis04
538 // UtcDaliTextReorderLayout01
539 // UtcDaliTextReorderLayout02
540 // UtcDaliTextReorderLayout03
541 // UtcDaliTextReorderLayout04
542 // UtcDaliTextAlign01
543 // UtcDaliTextAlign02
544 // UtcDaliTextAlign03
545 // UtcDaliTextAlign04
546 // UtcDaliTextAlign05
547 // UtcDaliTextAlign06
548 // UtcDaliTextAlign07
549 // UtcDaliTextAlign08
550 // UtcDaliTextAlign09
552 //////////////////////////////////////////////////////////
554 int UtcDaliTextLayoutSetGetLayout(void)
556 ToolkitTestApplication application;
557 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
559 Layout::Engine engine;
561 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
563 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
564 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
566 tet_result(TET_PASS);
570 int UtcDaliTextLayoutSetGetCursorWidth(void)
572 ToolkitTestApplication application;
575 Layout::Engine engine;
577 DALI_TEST_EQUALS( 0, engine.GetCursorWidth(), TEST_LOCATION );
579 engine.SetCursorWidth( 2 );
580 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
582 tet_result(TET_PASS);
586 int UtcDaliTextLayoutNoText(void)
588 ToolkitTestApplication application;
589 tet_infoline(" UtcDaliTextLayoutNoText");
591 Size textArea(100.f, 60.f);
592 Size layoutSize = Vector2::ZERO;
593 LayoutTextData data =
605 Layout::Engine::MULTI_LINE_BOX,
612 if( !LayoutTextTest( data ) )
614 tet_result(TET_FAIL);
617 tet_result(TET_PASS);
621 int UtcDaliTextLayoutSmallTextArea01(void)
623 ToolkitTestApplication application;
624 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
626 // Won't layout the text in multi-line if the width is too small.
628 const std::string fontFamily( "TizenSans" );
630 // Set a known font description
631 FontDescriptionRun fontDescriptionRun;
632 fontDescriptionRun.characterRun.characterIndex = 0u;
633 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
634 fontDescriptionRun.familyLength = fontFamily.size();
635 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
636 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
637 fontDescriptionRun.familyDefined = true;
638 fontDescriptionRun.weightDefined = false;
639 fontDescriptionRun.widthDefined = false;
640 fontDescriptionRun.slantDefined = false;
641 fontDescriptionRun.sizeDefined = false;
643 Vector<FontDescriptionRun> fontDescriptionRuns;
644 fontDescriptionRuns.PushBack( fontDescriptionRun );
645 Size textArea(1.f, 1.f);
646 Size layoutSize = Vector2::ZERO;
647 LayoutTextData data =
649 "Layout text in a small area",
653 fontDescriptionRuns.Begin(),
659 Layout::Engine::MULTI_LINE_BOX,
666 if( !LayoutTextTest( data ) )
668 tet_result(TET_FAIL);
671 tet_result(TET_PASS);
675 int UtcDaliTextLayoutSmallTextArea02(void)
677 ToolkitTestApplication application;
678 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
680 // Will layout the text in single line as it can be scrolled.
682 const std::string fontFamily( "TizenSans" );
684 // Set a known font description
685 FontDescriptionRun fontDescriptionRun;
686 fontDescriptionRun.characterRun.characterIndex = 0u;
687 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
688 fontDescriptionRun.familyLength = fontFamily.size();
689 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
690 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
691 fontDescriptionRun.familyDefined = true;
692 fontDescriptionRun.weightDefined = false;
693 fontDescriptionRun.widthDefined = false;
694 fontDescriptionRun.slantDefined = false;
695 fontDescriptionRun.sizeDefined = false;
697 Vector<FontDescriptionRun> fontDescriptionRuns;
698 fontDescriptionRuns.PushBack( fontDescriptionRun );
699 Size textArea(1.f, 1.f);
700 Size layoutSize(78.f, 19.f);
701 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 };
702 struct LineRun line =
715 Vector<LineRun> lines;
716 lines.PushBack( line );
718 LayoutTextData data =
720 "Layout text in a small area",
724 fontDescriptionRuns.Begin(),
730 Layout::Engine::SINGLE_LINE_BOX,
737 if( !LayoutTextTest( data ) )
739 tet_result(TET_FAIL);
742 tet_result(TET_PASS);
746 int UtcDaliTextLayoutMultilineText01(void)
748 ToolkitTestApplication application;
749 tet_infoline(" UtcDaliTextLayoutMultilineText01");
751 // Layout some lines of left to right text.
753 const std::string fontFamily( "TizenSans" );
755 // Set a known font description
756 FontDescriptionRun fontDescriptionRun1;
757 fontDescriptionRun1.characterRun.characterIndex = 0u;
758 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
759 fontDescriptionRun1.familyLength = fontFamily.size();
760 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
761 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
762 fontDescriptionRun1.familyDefined = true;
763 fontDescriptionRun1.weightDefined = false;
764 fontDescriptionRun1.widthDefined = false;
765 fontDescriptionRun1.slantDefined = false;
766 fontDescriptionRun1.sizeDefined = false;
768 FontDescriptionRun fontDescriptionRun2;
769 fontDescriptionRun2.characterRun.characterIndex = 18u;
770 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
771 fontDescriptionRun2.familyLength = fontFamily.size();
772 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
773 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
774 fontDescriptionRun2.familyDefined = true;
775 fontDescriptionRun2.weightDefined = false;
776 fontDescriptionRun2.widthDefined = false;
777 fontDescriptionRun2.slantDefined = false;
778 fontDescriptionRun2.sizeDefined = false;
780 Vector<FontDescriptionRun> fontDescriptionRuns;
781 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
782 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
783 Size textArea(100.f, 300.f);
784 Size layoutSize(91.f, 95.f);
787 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,
788 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
789 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,
790 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,
791 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
793 struct LineRun line0 =
806 struct LineRun line1 =
819 struct LineRun line2 =
832 struct LineRun line3 =
845 struct LineRun line4 =
858 Vector<LineRun> lines;
859 lines.PushBack( line0 );
860 lines.PushBack( line1 );
861 lines.PushBack( line2 );
862 lines.PushBack( line3 );
863 lines.PushBack( line4 );
865 LayoutTextData data =
867 "Layout simple multi-line text",
868 "Hello world demo.\n"
869 "Layout different lines of text.",
872 fontDescriptionRuns.Begin(),
878 Layout::Engine::MULTI_LINE_BOX,
885 if( !LayoutTextTest( data ) )
887 tet_result(TET_FAIL);
890 tet_result(TET_PASS);
894 int UtcDaliTextLayoutMultilineText02(void)
896 ToolkitTestApplication application;
897 tet_infoline(" UtcDaliTextLayoutMultilineText02");
899 // Layout some lines of bidirectional text.
901 const std::string fontFamily1( "TizenSans" );
903 // Set a known font description
904 FontDescriptionRun fontDescriptionRun1;
905 fontDescriptionRun1.characterRun.characterIndex = 0u;
906 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
907 fontDescriptionRun1.familyLength = fontFamily1.size();
908 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
909 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
910 fontDescriptionRun1.familyDefined = true;
911 fontDescriptionRun1.weightDefined = false;
912 fontDescriptionRun1.widthDefined = false;
913 fontDescriptionRun1.slantDefined = false;
914 fontDescriptionRun1.sizeDefined = false;
916 const std::string fontFamily2( "TizenSansHebrew" );
918 // Set a known font description
919 FontDescriptionRun fontDescriptionRun2;
920 fontDescriptionRun2.characterRun.characterIndex = 17u;
921 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
922 fontDescriptionRun2.familyLength = fontFamily2.size();
923 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
924 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
925 fontDescriptionRun2.familyDefined = true;
926 fontDescriptionRun2.weightDefined = false;
927 fontDescriptionRun2.widthDefined = false;
928 fontDescriptionRun2.slantDefined = false;
929 fontDescriptionRun2.sizeDefined = false;
931 const std::string fontFamily3( "TizenSans" );
933 // Set a known font description
934 FontDescriptionRun fontDescriptionRun3;
935 fontDescriptionRun3.characterRun.characterIndex = 26u;
936 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
937 fontDescriptionRun3.familyLength = fontFamily3.size();
938 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
939 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
940 fontDescriptionRun3.familyDefined = true;
941 fontDescriptionRun3.weightDefined = false;
942 fontDescriptionRun3.widthDefined = false;
943 fontDescriptionRun3.slantDefined = false;
944 fontDescriptionRun3.sizeDefined = false;
946 const std::string fontFamily4( "TizenSansHebrew" );
948 // Set a known font description
949 FontDescriptionRun fontDescriptionRun4;
950 fontDescriptionRun4.characterRun.characterIndex = 28u;
951 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
952 fontDescriptionRun4.familyLength = fontFamily4.size();
953 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
954 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
955 fontDescriptionRun4.familyDefined = true;
956 fontDescriptionRun4.weightDefined = false;
957 fontDescriptionRun4.widthDefined = false;
958 fontDescriptionRun4.slantDefined = false;
959 fontDescriptionRun4.sizeDefined = false;
961 const std::string fontFamily5( "TizenSans" );
963 // Set a known font description
964 FontDescriptionRun fontDescriptionRun5;
965 fontDescriptionRun5.characterRun.characterIndex = 38u;
966 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
967 fontDescriptionRun5.familyLength = fontFamily5.size();
968 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
969 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
970 fontDescriptionRun5.familyDefined = true;
971 fontDescriptionRun5.weightDefined = false;
972 fontDescriptionRun5.widthDefined = false;
973 fontDescriptionRun5.slantDefined = false;
974 fontDescriptionRun5.sizeDefined = false;
976 Vector<FontDescriptionRun> fontDescriptionRuns;
977 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
978 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
979 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
980 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
981 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
982 Size textArea(100.f, 300.f);
983 Size layoutSize(78.f, 114.f);
986 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,
987 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,
988 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
989 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,
990 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,
991 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
993 struct LineRun line0 =
1006 struct LineRun line1 =
1019 struct LineRun line2 =
1032 struct LineRun line3 =
1045 struct LineRun line4 =
1058 struct LineRun line5 =
1071 Vector<LineRun> lines;
1072 lines.PushBack( line0 );
1073 lines.PushBack( line1 );
1074 lines.PushBack( line2 );
1075 lines.PushBack( line3 );
1076 lines.PushBack( line4 );
1077 lines.PushBack( line5 );
1079 LayoutTextData data =
1081 "Layout bidirectional text.",
1082 "Hello world demo שלום עולם.\n"
1083 "שלום עולם hello world demo.",
1086 fontDescriptionRuns.Begin(),
1092 Layout::Engine::MULTI_LINE_BOX,
1099 if( !LayoutTextTest( data ) )
1101 tet_result(TET_FAIL);
1104 tet_result(TET_PASS);
1108 int UtcDaliTextLayoutMultilineText03(void)
1110 ToolkitTestApplication application;
1111 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1113 // Layout a long word which doesn't fit in the width of the text area.
1115 const std::string fontFamily( "TizenSans" );
1117 // Set a known font description
1118 FontDescriptionRun fontDescriptionRun;
1119 fontDescriptionRun.characterRun.characterIndex = 0u;
1120 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1121 fontDescriptionRun.familyLength = fontFamily.size();
1122 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1123 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1124 fontDescriptionRun.familyDefined = true;
1125 fontDescriptionRun.weightDefined = false;
1126 fontDescriptionRun.widthDefined = false;
1127 fontDescriptionRun.slantDefined = false;
1128 fontDescriptionRun.sizeDefined = false;
1130 Vector<FontDescriptionRun> fontDescriptionRuns;
1131 fontDescriptionRuns.PushBack( fontDescriptionRun );
1132 Size textArea(100.f, 300.f);
1133 Size layoutSize(94.f, 57.f);
1136 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,
1137 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,
1138 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1140 struct LineRun line0 =
1153 struct LineRun line1 =
1166 struct LineRun line2 =
1179 Vector<LineRun> lines;
1180 lines.PushBack( line0 );
1181 lines.PushBack( line1 );
1182 lines.PushBack( line2 );
1184 LayoutTextData data =
1186 "Layout a long word which doesn't fit in the width of the text area.",
1187 "Helloworlddemohelloworlddemo.",
1190 fontDescriptionRuns.Begin(),
1196 Layout::Engine::MULTI_LINE_BOX,
1203 if( !LayoutTextTest( data ) )
1205 tet_result(TET_FAIL);
1208 tet_result(TET_PASS);
1212 int UtcDaliTextLayoutMultilineText04(void)
1214 ToolkitTestApplication application;
1215 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1217 // Layout simple text ending with a \n. It has to add a void line at the end.
1219 const std::string fontFamily( "TizenSans" );
1221 // Set a known font description
1222 FontDescriptionRun fontDescriptionRun;
1223 fontDescriptionRun.characterRun.characterIndex = 0u;
1224 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1225 fontDescriptionRun.familyLength = fontFamily.size();
1226 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1227 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1228 fontDescriptionRun.familyDefined = true;
1229 fontDescriptionRun.weightDefined = false;
1230 fontDescriptionRun.widthDefined = false;
1231 fontDescriptionRun.slantDefined = false;
1232 fontDescriptionRun.sizeDefined = false;
1234 Vector<FontDescriptionRun> fontDescriptionRuns;
1235 fontDescriptionRuns.PushBack( fontDescriptionRun );
1236 Size textArea(100.f, 300.f);
1237 Size layoutSize(81.f, 38.f);
1240 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
1242 struct LineRun line0 =
1254 struct LineRun line1 =
1267 Vector<LineRun> lines;
1268 lines.PushBack( line0 );
1269 lines.PushBack( line1 );
1271 LayoutTextData data =
1273 "Layout simple text ending with a \n.",
1277 fontDescriptionRuns.Begin(),
1283 Layout::Engine::MULTI_LINE_BOX,
1290 if( !LayoutTextTest( data ) )
1292 tet_result(TET_FAIL);
1295 tet_result(TET_PASS);
1299 int UtcDaliTextLayoutMultilineText05(void)
1301 ToolkitTestApplication application;
1302 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1304 // Layout simple text with one character with a different font size.
1306 const std::string fontFamily( "TizenSans" );
1308 // Set a known font description
1309 FontDescriptionRun fontDescriptionRun1;
1310 fontDescriptionRun1.characterRun.characterIndex = 0u;
1311 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1312 fontDescriptionRun1.familyLength = fontFamily.size();
1313 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1314 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1315 fontDescriptionRun1.familyDefined = true;
1316 fontDescriptionRun1.weightDefined = false;
1317 fontDescriptionRun1.widthDefined = false;
1318 fontDescriptionRun1.slantDefined = false;
1319 fontDescriptionRun1.sizeDefined = false;
1321 FontDescriptionRun fontDescriptionRun2;
1322 fontDescriptionRun2.characterRun.characterIndex = 6u;
1323 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1324 fontDescriptionRun2.familyLength = fontFamily.size();
1325 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1326 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1327 fontDescriptionRun2.size = 1280u;
1328 fontDescriptionRun2.familyDefined = true;
1329 fontDescriptionRun2.weightDefined = false;
1330 fontDescriptionRun2.widthDefined = false;
1331 fontDescriptionRun2.slantDefined = false;
1332 fontDescriptionRun2.sizeDefined = true;
1334 FontDescriptionRun fontDescriptionRun3;
1335 fontDescriptionRun3.characterRun.characterIndex = 7u;
1336 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1337 fontDescriptionRun3.familyLength = fontFamily.size();
1338 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1339 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1340 fontDescriptionRun3.familyDefined = true;
1341 fontDescriptionRun3.weightDefined = false;
1342 fontDescriptionRun3.widthDefined = false;
1343 fontDescriptionRun3.slantDefined = false;
1344 fontDescriptionRun3.sizeDefined = false;
1346 Vector<FontDescriptionRun> fontDescriptionRuns;
1347 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1348 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1349 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1350 Size textArea(100.f, 300.f);
1351 Size layoutSize(87.f, 51.f);
1354 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,
1355 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1357 struct LineRun line0 =
1370 struct LineRun line1 =
1383 Vector<LineRun> lines;
1384 lines.PushBack( line0 );
1385 lines.PushBack( line1 );
1387 LayoutTextData data =
1389 "Layout simple text with one character with a different font size.",
1390 "Hello world demo.",
1393 fontDescriptionRuns.Begin(),
1399 Layout::Engine::MULTI_LINE_BOX,
1406 if( !LayoutTextTest( data ) )
1408 tet_result(TET_FAIL);
1411 tet_result(TET_PASS);
1415 int UtcDaliTextUpdateLayout01(void)
1417 ToolkitTestApplication application;
1418 tet_infoline(" UtcDaliTextUpdateLayout01");
1420 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1422 const std::string fontLatin( "TizenSans" );
1423 const std::string fontHebrew( "TizenSansHebrew" );
1424 const std::string fontArabic( "TizenSansArabic" );
1426 // Set a known font description
1427 FontDescriptionRun fontDescriptionRun01;
1428 fontDescriptionRun01.characterRun.characterIndex = 0u;
1429 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1430 fontDescriptionRun01.familyLength = fontLatin.size();
1431 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1432 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1433 fontDescriptionRun01.familyDefined = true;
1434 fontDescriptionRun01.weightDefined = false;
1435 fontDescriptionRun01.widthDefined = false;
1436 fontDescriptionRun01.slantDefined = false;
1437 fontDescriptionRun01.sizeDefined = false;
1439 // Set a known font description
1440 FontDescriptionRun fontDescriptionRun02;
1441 fontDescriptionRun02.characterRun.characterIndex = 17u;
1442 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1443 fontDescriptionRun02.familyLength = fontHebrew.size();
1444 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1445 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1446 fontDescriptionRun02.familyDefined = true;
1447 fontDescriptionRun02.weightDefined = false;
1448 fontDescriptionRun02.widthDefined = false;
1449 fontDescriptionRun02.slantDefined = false;
1450 fontDescriptionRun02.sizeDefined = false;
1452 // Set a known font description
1453 FontDescriptionRun fontDescriptionRun03;
1454 fontDescriptionRun03.characterRun.characterIndex = 26u;
1455 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1456 fontDescriptionRun03.familyLength = fontLatin.size();
1457 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1458 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1459 fontDescriptionRun03.familyDefined = true;
1460 fontDescriptionRun03.weightDefined = false;
1461 fontDescriptionRun03.widthDefined = false;
1462 fontDescriptionRun03.slantDefined = false;
1463 fontDescriptionRun03.sizeDefined = false;
1465 // Set a known font description
1466 FontDescriptionRun fontDescriptionRun04;
1467 fontDescriptionRun04.characterRun.characterIndex = 28u;
1468 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1469 fontDescriptionRun04.familyLength = fontArabic.size();
1470 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1471 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1472 fontDescriptionRun04.familyDefined = true;
1473 fontDescriptionRun04.weightDefined = false;
1474 fontDescriptionRun04.widthDefined = false;
1475 fontDescriptionRun04.slantDefined = false;
1476 fontDescriptionRun04.sizeDefined = false;
1478 // Set a known font description
1479 FontDescriptionRun fontDescriptionRun05;
1480 fontDescriptionRun05.characterRun.characterIndex = 42u;
1481 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1482 fontDescriptionRun05.familyLength = fontLatin.size();
1483 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1484 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1485 fontDescriptionRun05.familyDefined = true;
1486 fontDescriptionRun05.weightDefined = false;
1487 fontDescriptionRun05.widthDefined = false;
1488 fontDescriptionRun05.slantDefined = false;
1489 fontDescriptionRun05.sizeDefined = false;
1491 // Set a known font description
1492 FontDescriptionRun fontDescriptionRun06;
1493 fontDescriptionRun06.characterRun.characterIndex = 54u;
1494 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1495 fontDescriptionRun06.familyLength = fontHebrew.size();
1496 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1497 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1498 fontDescriptionRun06.familyDefined = true;
1499 fontDescriptionRun06.weightDefined = false;
1500 fontDescriptionRun06.widthDefined = false;
1501 fontDescriptionRun06.slantDefined = false;
1502 fontDescriptionRun06.sizeDefined = false;
1504 // Set a known font description
1505 FontDescriptionRun fontDescriptionRun07;
1506 fontDescriptionRun07.characterRun.characterIndex = 64u;
1507 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1508 fontDescriptionRun07.familyLength = fontHebrew.size();
1509 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1510 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1511 fontDescriptionRun07.familyDefined = true;
1512 fontDescriptionRun07.weightDefined = false;
1513 fontDescriptionRun07.widthDefined = false;
1514 fontDescriptionRun07.slantDefined = false;
1515 fontDescriptionRun07.sizeDefined = false;
1517 // Set a known font description
1518 FontDescriptionRun fontDescriptionRun08;
1519 fontDescriptionRun08.characterRun.characterIndex = 74u;
1520 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1521 fontDescriptionRun08.familyLength = fontLatin.size();
1522 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1523 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1524 fontDescriptionRun08.familyDefined = true;
1525 fontDescriptionRun08.weightDefined = false;
1526 fontDescriptionRun08.widthDefined = false;
1527 fontDescriptionRun08.slantDefined = false;
1528 fontDescriptionRun08.sizeDefined = false;
1530 // Set a known font description
1531 FontDescriptionRun fontDescriptionRun09;
1532 fontDescriptionRun09.characterRun.characterIndex = 92u;
1533 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1534 fontDescriptionRun09.familyLength = fontLatin.size();
1535 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1536 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1537 fontDescriptionRun09.familyDefined = true;
1538 fontDescriptionRun09.weightDefined = false;
1539 fontDescriptionRun09.widthDefined = false;
1540 fontDescriptionRun09.slantDefined = false;
1541 fontDescriptionRun09.sizeDefined = false;
1543 // Set a known font description
1544 FontDescriptionRun fontDescriptionRun10;
1545 fontDescriptionRun10.characterRun.characterIndex = 104u;
1546 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1547 fontDescriptionRun10.familyLength = fontArabic.size();
1548 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1549 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1550 fontDescriptionRun10.familyDefined = true;
1551 fontDescriptionRun10.weightDefined = false;
1552 fontDescriptionRun10.widthDefined = false;
1553 fontDescriptionRun10.slantDefined = false;
1554 fontDescriptionRun10.sizeDefined = false;
1556 // Set a known font description
1557 FontDescriptionRun fontDescriptionRun11;
1558 fontDescriptionRun11.characterRun.characterIndex = 118u;
1559 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1560 fontDescriptionRun11.familyLength = fontHebrew.size();
1561 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1562 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1563 fontDescriptionRun11.familyDefined = true;
1564 fontDescriptionRun11.weightDefined = false;
1565 fontDescriptionRun11.widthDefined = false;
1566 fontDescriptionRun11.slantDefined = false;
1567 fontDescriptionRun11.sizeDefined = false;
1569 // Set a known font description
1570 FontDescriptionRun fontDescriptionRun12;
1571 fontDescriptionRun12.characterRun.characterIndex = 128u;
1572 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1573 fontDescriptionRun12.familyLength = fontLatin.size();
1574 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1575 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1576 fontDescriptionRun12.familyDefined = true;
1577 fontDescriptionRun12.weightDefined = false;
1578 fontDescriptionRun12.widthDefined = false;
1579 fontDescriptionRun12.slantDefined = false;
1580 fontDescriptionRun12.sizeDefined = false;
1582 // Set a known font description
1583 FontDescriptionRun fontDescriptionRun13;
1584 fontDescriptionRun13.characterRun.characterIndex = 145u;
1585 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1586 fontDescriptionRun13.familyLength = fontHebrew.size();
1587 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1588 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1589 fontDescriptionRun13.familyDefined = true;
1590 fontDescriptionRun13.weightDefined = false;
1591 fontDescriptionRun13.widthDefined = false;
1592 fontDescriptionRun13.slantDefined = false;
1593 fontDescriptionRun13.sizeDefined = false;
1595 // Set a known font description
1596 FontDescriptionRun fontDescriptionRun14;
1597 fontDescriptionRun14.characterRun.characterIndex = 154u;
1598 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1599 fontDescriptionRun14.familyLength = fontLatin.size();
1600 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1601 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1602 fontDescriptionRun14.familyDefined = true;
1603 fontDescriptionRun14.weightDefined = false;
1604 fontDescriptionRun14.widthDefined = false;
1605 fontDescriptionRun14.slantDefined = false;
1606 fontDescriptionRun14.sizeDefined = false;
1608 // Set a known font description
1609 FontDescriptionRun fontDescriptionRun15;
1610 fontDescriptionRun15.characterRun.characterIndex = 156u;
1611 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1612 fontDescriptionRun15.familyLength = fontHebrew.size();
1613 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1614 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1615 fontDescriptionRun15.familyDefined = true;
1616 fontDescriptionRun15.weightDefined = false;
1617 fontDescriptionRun15.widthDefined = false;
1618 fontDescriptionRun15.slantDefined = false;
1619 fontDescriptionRun15.sizeDefined = false;
1621 // Set a known font description
1622 FontDescriptionRun fontDescriptionRun16;
1623 fontDescriptionRun16.characterRun.characterIndex = 166u;
1624 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1625 fontDescriptionRun16.familyLength = fontLatin.size();
1626 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1627 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1628 fontDescriptionRun16.familyDefined = true;
1629 fontDescriptionRun16.weightDefined = false;
1630 fontDescriptionRun16.widthDefined = false;
1631 fontDescriptionRun16.slantDefined = false;
1632 fontDescriptionRun16.sizeDefined = false;
1634 // Set a known font description
1635 FontDescriptionRun fontDescriptionRun17;
1636 fontDescriptionRun17.characterRun.characterIndex = 178u;
1637 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1638 fontDescriptionRun17.familyLength = fontArabic.size();
1639 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1640 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1641 fontDescriptionRun17.familyDefined = true;
1642 fontDescriptionRun17.weightDefined = false;
1643 fontDescriptionRun17.widthDefined = false;
1644 fontDescriptionRun17.slantDefined = false;
1645 fontDescriptionRun17.sizeDefined = false;
1647 Vector<FontDescriptionRun> fontDescriptionRuns;
1648 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1649 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1650 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1651 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1652 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1653 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1654 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1655 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1656 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1657 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1658 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1659 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1660 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1661 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1662 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1663 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1664 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1665 Size textArea(100.f, 300.f);
1666 Size layoutSize(92.f, 361.f);
1669 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,
1670 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,
1671 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1672 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,
1673 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,
1674 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1675 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,
1676 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,
1677 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1678 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,
1679 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,
1680 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
1681 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,
1682 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,
1683 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
1684 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,
1685 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,
1686 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,
1689 struct LineRun line01 =
1702 struct LineRun line02 =
1715 struct LineRun line03 =
1728 struct LineRun line04 =
1741 struct LineRun line05 =
1754 struct LineRun line06 =
1767 struct LineRun line07 =
1780 struct LineRun line08 =
1793 struct LineRun line09 =
1806 struct LineRun line10 =
1819 struct LineRun line11 =
1832 struct LineRun line12 =
1845 struct LineRun line13 =
1858 struct LineRun line14 =
1871 struct LineRun line15 =
1884 struct LineRun line16 =
1897 struct LineRun line17 =
1910 struct LineRun line18 =
1923 struct LineRun line19 =
1936 Vector<LineRun> lines;
1937 lines.PushBack( line01 );
1938 lines.PushBack( line02 );
1939 lines.PushBack( line03 );
1940 lines.PushBack( line04 );
1941 lines.PushBack( line05 );
1942 lines.PushBack( line06 );
1943 lines.PushBack( line07 );
1944 lines.PushBack( line08 );
1945 lines.PushBack( line09 );
1946 lines.PushBack( line10 );
1947 lines.PushBack( line11 );
1948 lines.PushBack( line12 );
1949 lines.PushBack( line13 );
1950 lines.PushBack( line14 );
1951 lines.PushBack( line15 );
1952 lines.PushBack( line16 );
1953 lines.PushBack( line17 );
1954 lines.PushBack( line18 );
1955 lines.PushBack( line19 );
1957 LayoutTextData data =
1959 "Layout bidirectional text.",
1960 "Hello world demo שלום עולם.\n"
1961 "مرحبا بالعالم hello world שלום עולם\n"
1962 "שלום עולם hello world demo.\n"
1963 "hello world مرحبا بالعالم שלום עולם\n"
1964 "Hello world demo שלום עולם.\n"
1965 "שלום עולם hello world مرحبا بالعالم\n",
1968 fontDescriptionRuns.Begin(),
1974 Layout::Engine::MULTI_LINE_BOX,
1981 if( !LayoutTextTest( data ) )
1983 tet_result(TET_FAIL);
1986 tet_result(TET_PASS);
1990 int UtcDaliTextUpdateLayout02(void)
1992 ToolkitTestApplication application;
1993 tet_infoline(" UtcDaliTextUpdateLayout02");
1995 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1997 const std::string fontLatin( "TizenSans" );
1998 const std::string fontHebrew( "TizenSansHebrew" );
1999 const std::string fontArabic( "TizenSansArabic" );
2001 // Set a known font description
2002 FontDescriptionRun fontDescriptionRun01;
2003 fontDescriptionRun01.characterRun.characterIndex = 0u;
2004 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2005 fontDescriptionRun01.familyLength = fontLatin.size();
2006 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2007 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2008 fontDescriptionRun01.familyDefined = true;
2009 fontDescriptionRun01.weightDefined = false;
2010 fontDescriptionRun01.widthDefined = false;
2011 fontDescriptionRun01.slantDefined = false;
2012 fontDescriptionRun01.sizeDefined = false;
2014 // Set a known font description
2015 FontDescriptionRun fontDescriptionRun02;
2016 fontDescriptionRun02.characterRun.characterIndex = 17u;
2017 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2018 fontDescriptionRun02.familyLength = fontHebrew.size();
2019 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2020 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2021 fontDescriptionRun02.familyDefined = true;
2022 fontDescriptionRun02.weightDefined = false;
2023 fontDescriptionRun02.widthDefined = false;
2024 fontDescriptionRun02.slantDefined = false;
2025 fontDescriptionRun02.sizeDefined = false;
2027 // Set a known font description
2028 FontDescriptionRun fontDescriptionRun03;
2029 fontDescriptionRun03.characterRun.characterIndex = 26u;
2030 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2031 fontDescriptionRun03.familyLength = fontLatin.size();
2032 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2033 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2034 fontDescriptionRun03.familyDefined = true;
2035 fontDescriptionRun03.weightDefined = false;
2036 fontDescriptionRun03.widthDefined = false;
2037 fontDescriptionRun03.slantDefined = false;
2038 fontDescriptionRun03.sizeDefined = false;
2040 // Set a known font description
2041 FontDescriptionRun fontDescriptionRun04;
2042 fontDescriptionRun04.characterRun.characterIndex = 28u;
2043 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2044 fontDescriptionRun04.familyLength = fontArabic.size();
2045 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2046 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2047 fontDescriptionRun04.familyDefined = true;
2048 fontDescriptionRun04.weightDefined = false;
2049 fontDescriptionRun04.widthDefined = false;
2050 fontDescriptionRun04.slantDefined = false;
2051 fontDescriptionRun04.sizeDefined = false;
2053 // Set a known font description
2054 FontDescriptionRun fontDescriptionRun05;
2055 fontDescriptionRun05.characterRun.characterIndex = 42u;
2056 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2057 fontDescriptionRun05.familyLength = fontLatin.size();
2058 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2059 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2060 fontDescriptionRun05.familyDefined = true;
2061 fontDescriptionRun05.weightDefined = false;
2062 fontDescriptionRun05.widthDefined = false;
2063 fontDescriptionRun05.slantDefined = false;
2064 fontDescriptionRun05.sizeDefined = false;
2066 // Set a known font description
2067 FontDescriptionRun fontDescriptionRun06;
2068 fontDescriptionRun06.characterRun.characterIndex = 54u;
2069 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2070 fontDescriptionRun06.familyLength = fontHebrew.size();
2071 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2072 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2073 fontDescriptionRun06.familyDefined = true;
2074 fontDescriptionRun06.weightDefined = false;
2075 fontDescriptionRun06.widthDefined = false;
2076 fontDescriptionRun06.slantDefined = false;
2077 fontDescriptionRun06.sizeDefined = false;
2079 // Set a known font description
2080 FontDescriptionRun fontDescriptionRun07;
2081 fontDescriptionRun07.characterRun.characterIndex = 64u;
2082 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2083 fontDescriptionRun07.familyLength = fontHebrew.size();
2084 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2085 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2086 fontDescriptionRun07.familyDefined = true;
2087 fontDescriptionRun07.weightDefined = false;
2088 fontDescriptionRun07.widthDefined = false;
2089 fontDescriptionRun07.slantDefined = false;
2090 fontDescriptionRun07.sizeDefined = false;
2092 // Set a known font description
2093 FontDescriptionRun fontDescriptionRun08;
2094 fontDescriptionRun08.characterRun.characterIndex = 74u;
2095 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2096 fontDescriptionRun08.familyLength = fontLatin.size();
2097 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2098 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2099 fontDescriptionRun08.familyDefined = true;
2100 fontDescriptionRun08.weightDefined = false;
2101 fontDescriptionRun08.widthDefined = false;
2102 fontDescriptionRun08.slantDefined = false;
2103 fontDescriptionRun08.sizeDefined = false;
2105 // Set a known font description
2106 FontDescriptionRun fontDescriptionRun09;
2107 fontDescriptionRun09.characterRun.characterIndex = 92u;
2108 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2109 fontDescriptionRun09.familyLength = fontLatin.size();
2110 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2111 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2112 fontDescriptionRun09.familyDefined = true;
2113 fontDescriptionRun09.weightDefined = false;
2114 fontDescriptionRun09.widthDefined = false;
2115 fontDescriptionRun09.slantDefined = false;
2116 fontDescriptionRun09.sizeDefined = false;
2118 // Set a known font description
2119 FontDescriptionRun fontDescriptionRun10;
2120 fontDescriptionRun10.characterRun.characterIndex = 104u;
2121 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2122 fontDescriptionRun10.familyLength = fontArabic.size();
2123 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2124 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2125 fontDescriptionRun10.familyDefined = true;
2126 fontDescriptionRun10.weightDefined = false;
2127 fontDescriptionRun10.widthDefined = false;
2128 fontDescriptionRun10.slantDefined = false;
2129 fontDescriptionRun10.sizeDefined = false;
2131 // Set a known font description
2132 FontDescriptionRun fontDescriptionRun11;
2133 fontDescriptionRun11.characterRun.characterIndex = 118u;
2134 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2135 fontDescriptionRun11.familyLength = fontHebrew.size();
2136 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2137 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2138 fontDescriptionRun11.familyDefined = true;
2139 fontDescriptionRun11.weightDefined = false;
2140 fontDescriptionRun11.widthDefined = false;
2141 fontDescriptionRun11.slantDefined = false;
2142 fontDescriptionRun11.sizeDefined = false;
2144 // Set a known font description
2145 FontDescriptionRun fontDescriptionRun12;
2146 fontDescriptionRun12.characterRun.characterIndex = 128u;
2147 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2148 fontDescriptionRun12.familyLength = fontLatin.size();
2149 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2150 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2151 fontDescriptionRun12.familyDefined = true;
2152 fontDescriptionRun12.weightDefined = false;
2153 fontDescriptionRun12.widthDefined = false;
2154 fontDescriptionRun12.slantDefined = false;
2155 fontDescriptionRun12.sizeDefined = false;
2157 // Set a known font description
2158 FontDescriptionRun fontDescriptionRun13;
2159 fontDescriptionRun13.characterRun.characterIndex = 145u;
2160 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2161 fontDescriptionRun13.familyLength = fontHebrew.size();
2162 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2163 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2164 fontDescriptionRun13.familyDefined = true;
2165 fontDescriptionRun13.weightDefined = false;
2166 fontDescriptionRun13.widthDefined = false;
2167 fontDescriptionRun13.slantDefined = false;
2168 fontDescriptionRun13.sizeDefined = false;
2170 // Set a known font description
2171 FontDescriptionRun fontDescriptionRun14;
2172 fontDescriptionRun14.characterRun.characterIndex = 154u;
2173 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2174 fontDescriptionRun14.familyLength = fontLatin.size();
2175 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2176 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2177 fontDescriptionRun14.familyDefined = true;
2178 fontDescriptionRun14.weightDefined = false;
2179 fontDescriptionRun14.widthDefined = false;
2180 fontDescriptionRun14.slantDefined = false;
2181 fontDescriptionRun14.sizeDefined = false;
2183 // Set a known font description
2184 FontDescriptionRun fontDescriptionRun15;
2185 fontDescriptionRun15.characterRun.characterIndex = 156u;
2186 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2187 fontDescriptionRun15.familyLength = fontHebrew.size();
2188 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2189 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2190 fontDescriptionRun15.familyDefined = true;
2191 fontDescriptionRun15.weightDefined = false;
2192 fontDescriptionRun15.widthDefined = false;
2193 fontDescriptionRun15.slantDefined = false;
2194 fontDescriptionRun15.sizeDefined = false;
2196 // Set a known font description
2197 FontDescriptionRun fontDescriptionRun16;
2198 fontDescriptionRun16.characterRun.characterIndex = 166u;
2199 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2200 fontDescriptionRun16.familyLength = fontLatin.size();
2201 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2202 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2203 fontDescriptionRun16.familyDefined = true;
2204 fontDescriptionRun16.weightDefined = false;
2205 fontDescriptionRun16.widthDefined = false;
2206 fontDescriptionRun16.slantDefined = false;
2207 fontDescriptionRun16.sizeDefined = false;
2209 // Set a known font description
2210 FontDescriptionRun fontDescriptionRun17;
2211 fontDescriptionRun17.characterRun.characterIndex = 178u;
2212 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2213 fontDescriptionRun17.familyLength = fontArabic.size();
2214 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2215 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2216 fontDescriptionRun17.familyDefined = true;
2217 fontDescriptionRun17.weightDefined = false;
2218 fontDescriptionRun17.widthDefined = false;
2219 fontDescriptionRun17.slantDefined = false;
2220 fontDescriptionRun17.sizeDefined = false;
2222 Vector<FontDescriptionRun> fontDescriptionRuns;
2223 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2224 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2225 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2226 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2227 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2228 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2229 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2230 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2231 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2232 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2233 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2234 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2235 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2236 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2240 Size textArea(100.f, 300.f);
2241 Size layoutSize(92.f, 361.f);
2244 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,
2245 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,
2246 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2247 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,
2248 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,
2249 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2250 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,
2251 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,
2252 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2253 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,
2254 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,
2255 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2256 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,
2257 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,
2258 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2259 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,
2260 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,
2261 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,
2264 struct LineRun line01 =
2277 struct LineRun line02 =
2290 struct LineRun line03 =
2303 struct LineRun line04 =
2316 struct LineRun line05 =
2329 struct LineRun line06 =
2342 struct LineRun line07 =
2355 struct LineRun line08 =
2368 struct LineRun line09 =
2381 struct LineRun line10 =
2394 struct LineRun line11 =
2407 struct LineRun line12 =
2420 struct LineRun line13 =
2433 struct LineRun line14 =
2446 struct LineRun line15 =
2459 struct LineRun line16 =
2472 struct LineRun line17 =
2485 struct LineRun line18 =
2498 struct LineRun line19 =
2511 Vector<LineRun> lines;
2512 lines.PushBack( line01 );
2513 lines.PushBack( line02 );
2514 lines.PushBack( line03 );
2515 lines.PushBack( line04 );
2516 lines.PushBack( line05 );
2517 lines.PushBack( line06 );
2518 lines.PushBack( line07 );
2519 lines.PushBack( line08 );
2520 lines.PushBack( line09 );
2521 lines.PushBack( line10 );
2522 lines.PushBack( line11 );
2523 lines.PushBack( line12 );
2524 lines.PushBack( line13 );
2525 lines.PushBack( line14 );
2526 lines.PushBack( line15 );
2527 lines.PushBack( line16 );
2528 lines.PushBack( line17 );
2529 lines.PushBack( line18 );
2530 lines.PushBack( line19 );
2532 LayoutTextData data =
2534 "Layout bidirectional text.",
2535 "Hello world demo שלום עולם.\n"
2536 "مرحبا بالعالم hello world שלום עולם\n"
2537 "שלום עולם hello world demo.\n"
2538 "hello world مرحبا بالعالم שלום עולם\n"
2539 "Hello world demo שלום עולם.\n"
2540 "שלום עולם hello world مرحبا بالعالم\n",
2543 fontDescriptionRuns.Begin(),
2549 Layout::Engine::MULTI_LINE_BOX,
2556 if( !LayoutTextTest( data ) )
2558 tet_result(TET_FAIL);
2561 tet_result(TET_PASS);
2565 int UtcDaliTextUpdateLayout03(void)
2567 ToolkitTestApplication application;
2568 tet_infoline(" UtcDaliTextUpdateLayout03");
2570 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2572 const std::string fontLatin( "TizenSans" );
2573 const std::string fontHebrew( "TizenSansHebrew" );
2574 const std::string fontArabic( "TizenSansArabic" );
2576 // Set a known font description
2577 FontDescriptionRun fontDescriptionRun01;
2578 fontDescriptionRun01.characterRun.characterIndex = 0u;
2579 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2580 fontDescriptionRun01.familyLength = fontLatin.size();
2581 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2582 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2583 fontDescriptionRun01.familyDefined = true;
2584 fontDescriptionRun01.weightDefined = false;
2585 fontDescriptionRun01.widthDefined = false;
2586 fontDescriptionRun01.slantDefined = false;
2587 fontDescriptionRun01.sizeDefined = false;
2589 // Set a known font description
2590 FontDescriptionRun fontDescriptionRun02;
2591 fontDescriptionRun02.characterRun.characterIndex = 17u;
2592 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2593 fontDescriptionRun02.familyLength = fontHebrew.size();
2594 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2595 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2596 fontDescriptionRun02.familyDefined = true;
2597 fontDescriptionRun02.weightDefined = false;
2598 fontDescriptionRun02.widthDefined = false;
2599 fontDescriptionRun02.slantDefined = false;
2600 fontDescriptionRun02.sizeDefined = false;
2602 // Set a known font description
2603 FontDescriptionRun fontDescriptionRun03;
2604 fontDescriptionRun03.characterRun.characterIndex = 26u;
2605 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2606 fontDescriptionRun03.familyLength = fontLatin.size();
2607 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2608 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2609 fontDescriptionRun03.familyDefined = true;
2610 fontDescriptionRun03.weightDefined = false;
2611 fontDescriptionRun03.widthDefined = false;
2612 fontDescriptionRun03.slantDefined = false;
2613 fontDescriptionRun03.sizeDefined = false;
2615 // Set a known font description
2616 FontDescriptionRun fontDescriptionRun04;
2617 fontDescriptionRun04.characterRun.characterIndex = 28u;
2618 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2619 fontDescriptionRun04.familyLength = fontArabic.size();
2620 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2621 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2622 fontDescriptionRun04.familyDefined = true;
2623 fontDescriptionRun04.weightDefined = false;
2624 fontDescriptionRun04.widthDefined = false;
2625 fontDescriptionRun04.slantDefined = false;
2626 fontDescriptionRun04.sizeDefined = false;
2628 // Set a known font description
2629 FontDescriptionRun fontDescriptionRun05;
2630 fontDescriptionRun05.characterRun.characterIndex = 42u;
2631 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2632 fontDescriptionRun05.familyLength = fontLatin.size();
2633 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2634 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2635 fontDescriptionRun05.familyDefined = true;
2636 fontDescriptionRun05.weightDefined = false;
2637 fontDescriptionRun05.widthDefined = false;
2638 fontDescriptionRun05.slantDefined = false;
2639 fontDescriptionRun05.sizeDefined = false;
2641 // Set a known font description
2642 FontDescriptionRun fontDescriptionRun06;
2643 fontDescriptionRun06.characterRun.characterIndex = 54u;
2644 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2645 fontDescriptionRun06.familyLength = fontHebrew.size();
2646 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2647 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2648 fontDescriptionRun06.familyDefined = true;
2649 fontDescriptionRun06.weightDefined = false;
2650 fontDescriptionRun06.widthDefined = false;
2651 fontDescriptionRun06.slantDefined = false;
2652 fontDescriptionRun06.sizeDefined = false;
2654 // Set a known font description
2655 FontDescriptionRun fontDescriptionRun07;
2656 fontDescriptionRun07.characterRun.characterIndex = 64u;
2657 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2658 fontDescriptionRun07.familyLength = fontHebrew.size();
2659 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2660 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2661 fontDescriptionRun07.familyDefined = true;
2662 fontDescriptionRun07.weightDefined = false;
2663 fontDescriptionRun07.widthDefined = false;
2664 fontDescriptionRun07.slantDefined = false;
2665 fontDescriptionRun07.sizeDefined = false;
2667 // Set a known font description
2668 FontDescriptionRun fontDescriptionRun08;
2669 fontDescriptionRun08.characterRun.characterIndex = 74u;
2670 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2671 fontDescriptionRun08.familyLength = fontLatin.size();
2672 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2673 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2674 fontDescriptionRun08.familyDefined = true;
2675 fontDescriptionRun08.weightDefined = false;
2676 fontDescriptionRun08.widthDefined = false;
2677 fontDescriptionRun08.slantDefined = false;
2678 fontDescriptionRun08.sizeDefined = false;
2680 // Set a known font description
2681 FontDescriptionRun fontDescriptionRun09;
2682 fontDescriptionRun09.characterRun.characterIndex = 92u;
2683 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2684 fontDescriptionRun09.familyLength = fontLatin.size();
2685 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2686 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2687 fontDescriptionRun09.familyDefined = true;
2688 fontDescriptionRun09.weightDefined = false;
2689 fontDescriptionRun09.widthDefined = false;
2690 fontDescriptionRun09.slantDefined = false;
2691 fontDescriptionRun09.sizeDefined = false;
2693 // Set a known font description
2694 FontDescriptionRun fontDescriptionRun10;
2695 fontDescriptionRun10.characterRun.characterIndex = 104u;
2696 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2697 fontDescriptionRun10.familyLength = fontArabic.size();
2698 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2699 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2700 fontDescriptionRun10.familyDefined = true;
2701 fontDescriptionRun10.weightDefined = false;
2702 fontDescriptionRun10.widthDefined = false;
2703 fontDescriptionRun10.slantDefined = false;
2704 fontDescriptionRun10.sizeDefined = false;
2706 // Set a known font description
2707 FontDescriptionRun fontDescriptionRun11;
2708 fontDescriptionRun11.characterRun.characterIndex = 118u;
2709 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2710 fontDescriptionRun11.familyLength = fontHebrew.size();
2711 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2712 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2713 fontDescriptionRun11.familyDefined = true;
2714 fontDescriptionRun11.weightDefined = false;
2715 fontDescriptionRun11.widthDefined = false;
2716 fontDescriptionRun11.slantDefined = false;
2717 fontDescriptionRun11.sizeDefined = false;
2719 // Set a known font description
2720 FontDescriptionRun fontDescriptionRun12;
2721 fontDescriptionRun12.characterRun.characterIndex = 128u;
2722 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2723 fontDescriptionRun12.familyLength = fontLatin.size();
2724 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2725 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2726 fontDescriptionRun12.familyDefined = true;
2727 fontDescriptionRun12.weightDefined = false;
2728 fontDescriptionRun12.widthDefined = false;
2729 fontDescriptionRun12.slantDefined = false;
2730 fontDescriptionRun12.sizeDefined = false;
2732 // Set a known font description
2733 FontDescriptionRun fontDescriptionRun13;
2734 fontDescriptionRun13.characterRun.characterIndex = 145u;
2735 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2736 fontDescriptionRun13.familyLength = fontHebrew.size();
2737 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2738 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2739 fontDescriptionRun13.familyDefined = true;
2740 fontDescriptionRun13.weightDefined = false;
2741 fontDescriptionRun13.widthDefined = false;
2742 fontDescriptionRun13.slantDefined = false;
2743 fontDescriptionRun13.sizeDefined = false;
2745 // Set a known font description
2746 FontDescriptionRun fontDescriptionRun14;
2747 fontDescriptionRun14.characterRun.characterIndex = 154u;
2748 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2749 fontDescriptionRun14.familyLength = fontLatin.size();
2750 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2751 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2752 fontDescriptionRun14.familyDefined = true;
2753 fontDescriptionRun14.weightDefined = false;
2754 fontDescriptionRun14.widthDefined = false;
2755 fontDescriptionRun14.slantDefined = false;
2756 fontDescriptionRun14.sizeDefined = false;
2758 // Set a known font description
2759 FontDescriptionRun fontDescriptionRun15;
2760 fontDescriptionRun15.characterRun.characterIndex = 156u;
2761 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2762 fontDescriptionRun15.familyLength = fontHebrew.size();
2763 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2764 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2765 fontDescriptionRun15.familyDefined = true;
2766 fontDescriptionRun15.weightDefined = false;
2767 fontDescriptionRun15.widthDefined = false;
2768 fontDescriptionRun15.slantDefined = false;
2769 fontDescriptionRun15.sizeDefined = false;
2771 // Set a known font description
2772 FontDescriptionRun fontDescriptionRun16;
2773 fontDescriptionRun16.characterRun.characterIndex = 166u;
2774 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2775 fontDescriptionRun16.familyLength = fontLatin.size();
2776 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2777 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2778 fontDescriptionRun16.familyDefined = true;
2779 fontDescriptionRun16.weightDefined = false;
2780 fontDescriptionRun16.widthDefined = false;
2781 fontDescriptionRun16.slantDefined = false;
2782 fontDescriptionRun16.sizeDefined = false;
2784 // Set a known font description
2785 FontDescriptionRun fontDescriptionRun17;
2786 fontDescriptionRun17.characterRun.characterIndex = 178u;
2787 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2788 fontDescriptionRun17.familyLength = fontArabic.size();
2789 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2790 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2791 fontDescriptionRun17.familyDefined = true;
2792 fontDescriptionRun17.weightDefined = false;
2793 fontDescriptionRun17.widthDefined = false;
2794 fontDescriptionRun17.slantDefined = false;
2795 fontDescriptionRun17.sizeDefined = false;
2797 Vector<FontDescriptionRun> fontDescriptionRuns;
2798 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2799 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2800 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2801 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2802 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2803 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2804 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2805 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2806 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2807 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2808 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2809 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2810 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2811 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2812 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2813 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2814 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2815 Size textArea(100.f, 300.f);
2816 Size layoutSize(92.f, 361.f);
2819 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,
2820 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,
2821 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2822 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,
2823 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,
2824 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2825 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,
2826 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,
2827 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2828 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,
2829 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,
2830 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
2831 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,
2832 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,
2833 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -2.f, 32.f, -12.f,
2834 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,
2835 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,
2836 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,
2839 struct LineRun line01 =
2852 struct LineRun line02 =
2865 struct LineRun line03 =
2878 struct LineRun line04 =
2891 struct LineRun line05 =
2904 struct LineRun line06 =
2917 struct LineRun line07 =
2930 struct LineRun line08 =
2943 struct LineRun line09 =
2956 struct LineRun line10 =
2969 struct LineRun line11 =
2982 struct LineRun line12 =
2995 struct LineRun line13 =
3008 struct LineRun line14 =
3021 struct LineRun line15 =
3034 struct LineRun line16 =
3047 struct LineRun line17 =
3060 struct LineRun line18 =
3073 struct LineRun line19 =
3086 Vector<LineRun> lines;
3087 lines.PushBack( line01 );
3088 lines.PushBack( line02 );
3089 lines.PushBack( line03 );
3090 lines.PushBack( line04 );
3091 lines.PushBack( line05 );
3092 lines.PushBack( line06 );
3093 lines.PushBack( line07 );
3094 lines.PushBack( line08 );
3095 lines.PushBack( line09 );
3096 lines.PushBack( line10 );
3097 lines.PushBack( line11 );
3098 lines.PushBack( line12 );
3099 lines.PushBack( line13 );
3100 lines.PushBack( line14 );
3101 lines.PushBack( line15 );
3102 lines.PushBack( line16 );
3103 lines.PushBack( line17 );
3104 lines.PushBack( line18 );
3105 lines.PushBack( line19 );
3107 LayoutTextData data =
3109 "Layout bidirectional text.",
3110 "Hello world demo שלום עולם.\n"
3111 "مرحبا بالعالم hello world שלום עולם\n"
3112 "שלום עולם hello world demo.\n"
3113 "hello world مرحبا بالعالم שלום עולם\n"
3114 "Hello world demo שלום עולם.\n"
3115 "שלום עולם hello world مرحبا بالعالم\n",
3118 fontDescriptionRuns.Begin(),
3124 Layout::Engine::MULTI_LINE_BOX,
3131 if( !LayoutTextTest( data ) )
3133 tet_result(TET_FAIL);
3136 tet_result(TET_PASS);
3140 int UtcDaliTextLayoutEllipsis01(void)
3142 ToolkitTestApplication application;
3143 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3145 // Layout single-line LTR text with ellipsis.
3147 const std::string fontLatin( "TizenSans" );
3149 // Set a known font description
3150 FontDescriptionRun fontDescriptionRun01;
3151 fontDescriptionRun01.characterRun.characterIndex = 0u;
3152 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3153 fontDescriptionRun01.familyLength = fontLatin.size();
3154 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3155 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3156 fontDescriptionRun01.familyDefined = true;
3157 fontDescriptionRun01.weightDefined = false;
3158 fontDescriptionRun01.widthDefined = false;
3159 fontDescriptionRun01.slantDefined = false;
3160 fontDescriptionRun01.sizeDefined = false;
3162 Vector<FontDescriptionRun> fontDescriptionRuns;
3163 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3165 struct LineRun line01 =
3178 Vector<LineRun> lines;
3179 lines.PushBack( line01 );
3183 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,
3186 Size textArea( 100.f, 50.f );
3187 Size layoutSize( 100.f, 19.f );
3189 LayoutTextData data =
3191 "Layout single-line LTR text with ellipsis.",
3192 "Hello world demo hello world demo hello world demo.",
3195 fontDescriptionRuns.Begin(),
3201 Layout::Engine::SINGLE_LINE_BOX,
3208 if( !LayoutTextTest( data ) )
3210 tet_result(TET_FAIL);
3213 tet_result(TET_PASS);
3217 int UtcDaliTextLayoutEllipsis02(void)
3219 ToolkitTestApplication application;
3220 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3222 // Layout multi-line LTR text with ellipsis.
3224 const std::string fontLatin( "TizenSans" );
3226 // Set a known font description
3227 FontDescriptionRun fontDescriptionRun01;
3228 fontDescriptionRun01.characterRun.characterIndex = 0u;
3229 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3230 fontDescriptionRun01.familyLength = fontLatin.size();
3231 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3232 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3233 fontDescriptionRun01.familyDefined = true;
3234 fontDescriptionRun01.weightDefined = false;
3235 fontDescriptionRun01.widthDefined = false;
3236 fontDescriptionRun01.slantDefined = false;
3237 fontDescriptionRun01.sizeDefined = false;
3239 Vector<FontDescriptionRun> fontDescriptionRuns;
3240 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3242 struct LineRun line01 =
3255 struct LineRun line02 =
3268 Vector<LineRun> lines;
3269 lines.PushBack( line01 );
3270 lines.PushBack( line02 );
3274 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,
3275 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,
3278 Size textArea( 100.f, 50.f );
3279 Size layoutSize( 100.f, 38.f );
3281 LayoutTextData data =
3283 "Layout multi-line LTR text with ellipsis.",
3284 "Hello world demo hello world demo hello world demo.",
3287 fontDescriptionRuns.Begin(),
3293 Layout::Engine::MULTI_LINE_BOX,
3300 if( !LayoutTextTest( data ) )
3302 tet_result(TET_FAIL);
3305 tet_result(TET_PASS);
3309 int UtcDaliTextLayoutEllipsis03(void)
3311 ToolkitTestApplication application;
3312 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3314 // Layout single-line RTL text with ellipsis.
3316 const std::string fontHebrew( "TizenSansHebrew" );
3317 const std::string fontArabic( "TizenSansArabic" );
3319 // Set a known font description
3320 FontDescriptionRun fontDescriptionRun01;
3321 fontDescriptionRun01.characterRun.characterIndex = 0u;
3322 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3323 fontDescriptionRun01.familyLength = fontHebrew.size();
3324 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3325 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3326 fontDescriptionRun01.familyDefined = true;
3327 fontDescriptionRun01.weightDefined = false;
3328 fontDescriptionRun01.widthDefined = false;
3329 fontDescriptionRun01.slantDefined = false;
3330 fontDescriptionRun01.sizeDefined = false;
3332 FontDescriptionRun fontDescriptionRun02;
3333 fontDescriptionRun02.characterRun.characterIndex = 10u;
3334 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3335 fontDescriptionRun02.familyLength = fontArabic.size();
3336 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3337 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3338 fontDescriptionRun02.familyDefined = true;
3339 fontDescriptionRun02.weightDefined = false;
3340 fontDescriptionRun02.widthDefined = false;
3341 fontDescriptionRun02.slantDefined = false;
3342 fontDescriptionRun02.sizeDefined = false;
3344 FontDescriptionRun fontDescriptionRun03;
3345 fontDescriptionRun03.characterRun.characterIndex = 24u;
3346 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3347 fontDescriptionRun03.familyLength = fontHebrew.size();
3348 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3349 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3350 fontDescriptionRun03.familyDefined = true;
3351 fontDescriptionRun03.weightDefined = false;
3352 fontDescriptionRun03.widthDefined = false;
3353 fontDescriptionRun03.slantDefined = false;
3354 fontDescriptionRun03.sizeDefined = false;
3356 FontDescriptionRun fontDescriptionRun04;
3357 fontDescriptionRun04.characterRun.characterIndex = 34u;
3358 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3359 fontDescriptionRun04.familyLength = fontArabic.size();
3360 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3361 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3362 fontDescriptionRun04.familyDefined = true;
3363 fontDescriptionRun04.weightDefined = false;
3364 fontDescriptionRun04.widthDefined = false;
3365 fontDescriptionRun04.slantDefined = false;
3366 fontDescriptionRun04.sizeDefined = false;
3368 FontDescriptionRun fontDescriptionRun05;
3369 fontDescriptionRun05.characterRun.characterIndex = 48u;
3370 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3371 fontDescriptionRun05.familyLength = fontHebrew.size();
3372 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3373 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3374 fontDescriptionRun05.familyDefined = true;
3375 fontDescriptionRun05.weightDefined = false;
3376 fontDescriptionRun05.widthDefined = false;
3377 fontDescriptionRun05.slantDefined = false;
3378 fontDescriptionRun05.sizeDefined = false;
3380 FontDescriptionRun fontDescriptionRun06;
3381 fontDescriptionRun06.characterRun.characterIndex = 58u;
3382 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3383 fontDescriptionRun06.familyLength = fontArabic.size();
3384 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3385 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3386 fontDescriptionRun06.familyDefined = true;
3387 fontDescriptionRun06.weightDefined = false;
3388 fontDescriptionRun06.widthDefined = false;
3389 fontDescriptionRun06.slantDefined = false;
3390 fontDescriptionRun06.sizeDefined = false;
3392 Vector<FontDescriptionRun> fontDescriptionRuns;
3393 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3394 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3395 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3396 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3397 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3398 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3400 struct LineRun line01 =
3413 Vector<LineRun> lines;
3414 lines.PushBack( line01 );
3418 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,
3421 Size textArea( 100.f, 50.f );
3422 Size layoutSize( 100.f, 19.f );
3424 LayoutTextData data =
3426 "Layout single-line RTL text with ellipsis.",
3427 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3430 fontDescriptionRuns.Begin(),
3436 Layout::Engine::SINGLE_LINE_BOX,
3443 if( !LayoutTextTest( data ) )
3445 tet_result(TET_FAIL);
3448 tet_result(TET_PASS);
3452 int UtcDaliTextLayoutEllipsis04(void)
3454 ToolkitTestApplication application;
3455 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3457 // Layout multi-line RTL text with ellipsis.
3459 const std::string fontHebrew( "TizenSansHebrew" );
3460 const std::string fontArabic( "TizenSansArabic" );
3462 // Set a known font description
3463 FontDescriptionRun fontDescriptionRun01;
3464 fontDescriptionRun01.characterRun.characterIndex = 0u;
3465 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3466 fontDescriptionRun01.familyLength = fontHebrew.size();
3467 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3468 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3469 fontDescriptionRun01.familyDefined = true;
3470 fontDescriptionRun01.weightDefined = false;
3471 fontDescriptionRun01.widthDefined = false;
3472 fontDescriptionRun01.slantDefined = false;
3473 fontDescriptionRun01.sizeDefined = false;
3475 FontDescriptionRun fontDescriptionRun02;
3476 fontDescriptionRun02.characterRun.characterIndex = 10u;
3477 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3478 fontDescriptionRun02.familyLength = fontArabic.size();
3479 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3480 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3481 fontDescriptionRun02.familyDefined = true;
3482 fontDescriptionRun02.weightDefined = false;
3483 fontDescriptionRun02.widthDefined = false;
3484 fontDescriptionRun02.slantDefined = false;
3485 fontDescriptionRun02.sizeDefined = false;
3487 FontDescriptionRun fontDescriptionRun03;
3488 fontDescriptionRun03.characterRun.characterIndex = 24u;
3489 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3490 fontDescriptionRun03.familyLength = fontHebrew.size();
3491 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3492 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3493 fontDescriptionRun03.familyDefined = true;
3494 fontDescriptionRun03.weightDefined = false;
3495 fontDescriptionRun03.widthDefined = false;
3496 fontDescriptionRun03.slantDefined = false;
3497 fontDescriptionRun03.sizeDefined = false;
3499 FontDescriptionRun fontDescriptionRun04;
3500 fontDescriptionRun04.characterRun.characterIndex = 34u;
3501 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3502 fontDescriptionRun04.familyLength = fontArabic.size();
3503 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3504 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3505 fontDescriptionRun04.familyDefined = true;
3506 fontDescriptionRun04.weightDefined = false;
3507 fontDescriptionRun04.widthDefined = false;
3508 fontDescriptionRun04.slantDefined = false;
3509 fontDescriptionRun04.sizeDefined = false;
3511 FontDescriptionRun fontDescriptionRun05;
3512 fontDescriptionRun05.characterRun.characterIndex = 48u;
3513 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3514 fontDescriptionRun05.familyLength = fontHebrew.size();
3515 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3516 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3517 fontDescriptionRun05.familyDefined = true;
3518 fontDescriptionRun05.weightDefined = false;
3519 fontDescriptionRun05.widthDefined = false;
3520 fontDescriptionRun05.slantDefined = false;
3521 fontDescriptionRun05.sizeDefined = false;
3523 FontDescriptionRun fontDescriptionRun06;
3524 fontDescriptionRun06.characterRun.characterIndex = 58u;
3525 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3526 fontDescriptionRun06.familyLength = fontArabic.size();
3527 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3528 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3529 fontDescriptionRun06.familyDefined = true;
3530 fontDescriptionRun06.weightDefined = false;
3531 fontDescriptionRun06.widthDefined = false;
3532 fontDescriptionRun06.slantDefined = false;
3533 fontDescriptionRun06.sizeDefined = false;
3535 Vector<FontDescriptionRun> fontDescriptionRuns;
3536 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3537 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3538 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3539 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3540 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3541 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3543 struct LineRun line01 =
3556 struct LineRun line02 =
3569 Vector<LineRun> lines;
3570 lines.PushBack( line01 );
3571 lines.PushBack( line02 );
3575 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,
3576 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,
3579 Size textArea( 100.f, 50.f );
3580 Size layoutSize( 100.f, 38.f );
3582 LayoutTextData data =
3584 "Layout single-line RTL text with ellipsis.",
3585 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3588 fontDescriptionRuns.Begin(),
3594 Layout::Engine::MULTI_LINE_BOX,
3601 if( !LayoutTextTest( data ) )
3603 tet_result(TET_FAIL);
3606 tet_result(TET_PASS);
3610 int UtcDaliTextLayoutEllipsis05(void)
3612 ToolkitTestApplication application;
3613 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3615 const std::string fontLatin( "TizenSans" );
3617 // Set a known font description
3618 FontDescriptionRun fontDescriptionRun01;
3619 fontDescriptionRun01.characterRun.characterIndex = 0u;
3620 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3621 fontDescriptionRun01.familyLength = fontLatin.size();
3622 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3623 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3624 fontDescriptionRun01.familyDefined = true;
3625 fontDescriptionRun01.weightDefined = false;
3626 fontDescriptionRun01.widthDefined = false;
3627 fontDescriptionRun01.slantDefined = false;
3628 fontDescriptionRun01.sizeDefined = false;
3630 Vector<FontDescriptionRun> fontDescriptionRuns;
3631 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3633 struct LineRun line01 =
3646 Vector<LineRun> lines;
3647 lines.PushBack( line01 );
3654 Size textArea( 100.f, 19.f );
3655 Size layoutSize( 78.f, 19.f );
3657 LayoutTextData data =
3659 "Not enough height.",
3663 fontDescriptionRuns.Begin(),
3669 Layout::Engine::MULTI_LINE_BOX,
3676 if( !LayoutTextTest( data ) )
3678 tet_result(TET_FAIL);
3681 tet_result(TET_PASS);
3685 int UtcDaliTextReorderLayout01(void)
3687 ToolkitTestApplication application;
3688 tet_infoline(" UtcDaliTextReorderLayout01");
3690 // Reorder lines. No right to left characters.
3692 const std::string fontLatin( "TizenSans" );
3694 // Set a known font description
3695 FontDescriptionRun fontDescriptionRun01;
3696 fontDescriptionRun01.characterRun.characterIndex = 0u;
3697 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3698 fontDescriptionRun01.familyLength = fontLatin.size();
3699 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3700 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3701 fontDescriptionRun01.familyDefined = true;
3702 fontDescriptionRun01.weightDefined = false;
3703 fontDescriptionRun01.widthDefined = false;
3704 fontDescriptionRun01.slantDefined = false;
3705 fontDescriptionRun01.sizeDefined = false;
3707 Vector<FontDescriptionRun> fontDescriptionRuns;
3708 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3712 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,
3715 Size textArea( 100.f, 300.f );
3717 ReLayoutRightToLeftLinesData data =
3719 "Text with no right to left text.",
3723 fontDescriptionRuns.Begin(),
3730 if( !ReLayoutRightToLeftLinesTest( data ) )
3732 tet_result(TET_FAIL);
3735 tet_result(TET_PASS);
3739 int UtcDaliTextReorderLayout02(void)
3741 ToolkitTestApplication application;
3742 tet_infoline(" UtcDaliTextReorderLayout02");
3744 // Reorder lines of the first paragraph.
3746 const std::string fontHebrew( "TizenSansHebrew" );
3747 const std::string fontArabic( "TizenSansArabic" );
3749 // Set a known font description
3750 FontDescriptionRun fontDescriptionRun01;
3751 fontDescriptionRun01.characterRun.characterIndex = 0u;
3752 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3753 fontDescriptionRun01.familyLength = fontHebrew.size();
3754 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3755 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3756 fontDescriptionRun01.familyDefined = true;
3757 fontDescriptionRun01.weightDefined = false;
3758 fontDescriptionRun01.widthDefined = false;
3759 fontDescriptionRun01.slantDefined = false;
3760 fontDescriptionRun01.sizeDefined = false;
3762 FontDescriptionRun fontDescriptionRun02;
3763 fontDescriptionRun02.characterRun.characterIndex = 10u;
3764 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3765 fontDescriptionRun02.familyLength = fontArabic.size();
3766 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3767 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3768 fontDescriptionRun02.familyDefined = true;
3769 fontDescriptionRun02.weightDefined = false;
3770 fontDescriptionRun02.widthDefined = false;
3771 fontDescriptionRun02.slantDefined = false;
3772 fontDescriptionRun02.sizeDefined = false;
3774 FontDescriptionRun fontDescriptionRun03;
3775 fontDescriptionRun03.characterRun.characterIndex = 24u;
3776 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3777 fontDescriptionRun03.familyLength = fontArabic.size();
3778 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3779 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3780 fontDescriptionRun03.familyDefined = true;
3781 fontDescriptionRun03.weightDefined = false;
3782 fontDescriptionRun03.widthDefined = false;
3783 fontDescriptionRun03.slantDefined = false;
3784 fontDescriptionRun03.sizeDefined = false;
3786 FontDescriptionRun fontDescriptionRun04;
3787 fontDescriptionRun04.characterRun.characterIndex = 38u;
3788 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3789 fontDescriptionRun04.familyLength = fontHebrew.size();
3790 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3791 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3792 fontDescriptionRun04.familyDefined = true;
3793 fontDescriptionRun04.weightDefined = false;
3794 fontDescriptionRun04.widthDefined = false;
3795 fontDescriptionRun04.slantDefined = false;
3796 fontDescriptionRun04.sizeDefined = false;
3798 FontDescriptionRun fontDescriptionRun05;
3799 fontDescriptionRun05.characterRun.characterIndex = 48u;
3800 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3801 fontDescriptionRun05.familyLength = fontHebrew.size();
3802 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3803 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3804 fontDescriptionRun05.familyDefined = true;
3805 fontDescriptionRun05.weightDefined = false;
3806 fontDescriptionRun05.widthDefined = false;
3807 fontDescriptionRun05.slantDefined = false;
3808 fontDescriptionRun05.sizeDefined = false;
3810 FontDescriptionRun fontDescriptionRun06;
3811 fontDescriptionRun06.characterRun.characterIndex = 58u;
3812 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3813 fontDescriptionRun06.familyLength = fontArabic.size();
3814 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3815 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3816 fontDescriptionRun06.familyDefined = true;
3817 fontDescriptionRun06.weightDefined = false;
3818 fontDescriptionRun06.widthDefined = false;
3819 fontDescriptionRun06.slantDefined = false;
3820 fontDescriptionRun06.sizeDefined = false;
3822 Vector<FontDescriptionRun> fontDescriptionRuns;
3823 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3824 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3825 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3826 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3827 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3828 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3832 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,
3833 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,
3834 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,
3835 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
3836 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,
3837 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,
3840 Size textArea( 100.f, 300.f );
3842 ReLayoutRightToLeftLinesData data =
3844 "Paragraphs with right to left text.",
3845 "שלום עולם مرحبا بالعالم\n"
3846 "مرحبا بالعالم שלום עולם\n"
3847 "שלום עולם مرحبا بالعالم.",
3850 fontDescriptionRuns.Begin(),
3857 if( !ReLayoutRightToLeftLinesTest( data ) )
3859 tet_result(TET_FAIL);
3862 tet_result(TET_PASS);
3866 int UtcDaliTextReorderLayout03(void)
3868 ToolkitTestApplication application;
3869 tet_infoline(" UtcDaliTextReorderLayout03");
3871 // Reorder lines of the mid paragraph.
3873 const std::string fontHebrew( "TizenSansHebrew" );
3874 const std::string fontArabic( "TizenSansArabic" );
3876 // Set a known font description
3877 FontDescriptionRun fontDescriptionRun01;
3878 fontDescriptionRun01.characterRun.characterIndex = 0u;
3879 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3880 fontDescriptionRun01.familyLength = fontHebrew.size();
3881 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3882 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3883 fontDescriptionRun01.familyDefined = true;
3884 fontDescriptionRun01.weightDefined = false;
3885 fontDescriptionRun01.widthDefined = false;
3886 fontDescriptionRun01.slantDefined = false;
3887 fontDescriptionRun01.sizeDefined = false;
3889 FontDescriptionRun fontDescriptionRun02;
3890 fontDescriptionRun02.characterRun.characterIndex = 10u;
3891 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3892 fontDescriptionRun02.familyLength = fontArabic.size();
3893 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3894 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3895 fontDescriptionRun02.familyDefined = true;
3896 fontDescriptionRun02.weightDefined = false;
3897 fontDescriptionRun02.widthDefined = false;
3898 fontDescriptionRun02.slantDefined = false;
3899 fontDescriptionRun02.sizeDefined = false;
3901 FontDescriptionRun fontDescriptionRun03;
3902 fontDescriptionRun03.characterRun.characterIndex = 24u;
3903 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3904 fontDescriptionRun03.familyLength = fontArabic.size();
3905 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3906 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3907 fontDescriptionRun03.familyDefined = true;
3908 fontDescriptionRun03.weightDefined = false;
3909 fontDescriptionRun03.widthDefined = false;
3910 fontDescriptionRun03.slantDefined = false;
3911 fontDescriptionRun03.sizeDefined = false;
3913 FontDescriptionRun fontDescriptionRun04;
3914 fontDescriptionRun04.characterRun.characterIndex = 38u;
3915 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3916 fontDescriptionRun04.familyLength = fontHebrew.size();
3917 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3918 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3919 fontDescriptionRun04.familyDefined = true;
3920 fontDescriptionRun04.weightDefined = false;
3921 fontDescriptionRun04.widthDefined = false;
3922 fontDescriptionRun04.slantDefined = false;
3923 fontDescriptionRun04.sizeDefined = false;
3925 FontDescriptionRun fontDescriptionRun05;
3926 fontDescriptionRun05.characterRun.characterIndex = 48u;
3927 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3928 fontDescriptionRun05.familyLength = fontHebrew.size();
3929 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3930 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3931 fontDescriptionRun05.familyDefined = true;
3932 fontDescriptionRun05.weightDefined = false;
3933 fontDescriptionRun05.widthDefined = false;
3934 fontDescriptionRun05.slantDefined = false;
3935 fontDescriptionRun05.sizeDefined = false;
3937 FontDescriptionRun fontDescriptionRun06;
3938 fontDescriptionRun06.characterRun.characterIndex = 58u;
3939 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3940 fontDescriptionRun06.familyLength = fontArabic.size();
3941 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3942 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3943 fontDescriptionRun06.familyDefined = true;
3944 fontDescriptionRun06.weightDefined = false;
3945 fontDescriptionRun06.widthDefined = false;
3946 fontDescriptionRun06.slantDefined = false;
3947 fontDescriptionRun06.sizeDefined = false;
3949 Vector<FontDescriptionRun> fontDescriptionRuns;
3950 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3951 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3952 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3953 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3954 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3955 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3959 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,
3960 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,
3961 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,
3962 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3963 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,
3964 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,
3967 Size textArea( 100.f, 300.f );
3969 ReLayoutRightToLeftLinesData data =
3971 "Paragraphs with right to left text.",
3972 "שלום עולם مرحبا بالعالم\n"
3973 "مرحبا بالعالم שלום עולם\n"
3974 "שלום עולם مرحبا بالعالم.",
3977 fontDescriptionRuns.Begin(),
3984 if( !ReLayoutRightToLeftLinesTest( data ) )
3986 tet_result(TET_FAIL);
3989 tet_result(TET_PASS);
3993 int UtcDaliTextReorderLayout04(void)
3995 ToolkitTestApplication application;
3996 tet_infoline(" UtcDaliTextReorderLayout04");
3998 // Reorder lines of the last paragraph.
4000 const std::string fontHebrew( "TizenSansHebrew" );
4001 const std::string fontArabic( "TizenSansArabic" );
4003 // Set a known font description
4004 FontDescriptionRun fontDescriptionRun01;
4005 fontDescriptionRun01.characterRun.characterIndex = 0u;
4006 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4007 fontDescriptionRun01.familyLength = fontHebrew.size();
4008 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4009 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4010 fontDescriptionRun01.familyDefined = true;
4011 fontDescriptionRun01.weightDefined = false;
4012 fontDescriptionRun01.widthDefined = false;
4013 fontDescriptionRun01.slantDefined = false;
4014 fontDescriptionRun01.sizeDefined = false;
4016 FontDescriptionRun fontDescriptionRun02;
4017 fontDescriptionRun02.characterRun.characterIndex = 10u;
4018 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4019 fontDescriptionRun02.familyLength = fontArabic.size();
4020 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4021 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4022 fontDescriptionRun02.familyDefined = true;
4023 fontDescriptionRun02.weightDefined = false;
4024 fontDescriptionRun02.widthDefined = false;
4025 fontDescriptionRun02.slantDefined = false;
4026 fontDescriptionRun02.sizeDefined = false;
4028 FontDescriptionRun fontDescriptionRun03;
4029 fontDescriptionRun03.characterRun.characterIndex = 24u;
4030 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4031 fontDescriptionRun03.familyLength = fontArabic.size();
4032 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4033 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4034 fontDescriptionRun03.familyDefined = true;
4035 fontDescriptionRun03.weightDefined = false;
4036 fontDescriptionRun03.widthDefined = false;
4037 fontDescriptionRun03.slantDefined = false;
4038 fontDescriptionRun03.sizeDefined = false;
4040 FontDescriptionRun fontDescriptionRun04;
4041 fontDescriptionRun04.characterRun.characterIndex = 38u;
4042 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4043 fontDescriptionRun04.familyLength = fontHebrew.size();
4044 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4045 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4046 fontDescriptionRun04.familyDefined = true;
4047 fontDescriptionRun04.weightDefined = false;
4048 fontDescriptionRun04.widthDefined = false;
4049 fontDescriptionRun04.slantDefined = false;
4050 fontDescriptionRun04.sizeDefined = false;
4052 FontDescriptionRun fontDescriptionRun05;
4053 fontDescriptionRun05.characterRun.characterIndex = 48u;
4054 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4055 fontDescriptionRun05.familyLength = fontHebrew.size();
4056 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4057 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4058 fontDescriptionRun05.familyDefined = true;
4059 fontDescriptionRun05.weightDefined = false;
4060 fontDescriptionRun05.widthDefined = false;
4061 fontDescriptionRun05.slantDefined = false;
4062 fontDescriptionRun05.sizeDefined = false;
4064 FontDescriptionRun fontDescriptionRun06;
4065 fontDescriptionRun06.characterRun.characterIndex = 58u;
4066 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4067 fontDescriptionRun06.familyLength = fontArabic.size();
4068 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4069 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4070 fontDescriptionRun06.familyDefined = true;
4071 fontDescriptionRun06.weightDefined = false;
4072 fontDescriptionRun06.widthDefined = false;
4073 fontDescriptionRun06.slantDefined = false;
4074 fontDescriptionRun06.sizeDefined = false;
4076 Vector<FontDescriptionRun> fontDescriptionRuns;
4077 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4078 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4079 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4080 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4081 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4082 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4086 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,
4087 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,
4088 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,
4089 0.f, -10.f, 8.f, -10.f, 13.f, -13.f, 21.f, -10.f, 29.f, -0.f,
4090 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,
4091 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,
4094 Size textArea( 100.f, 300.f );
4096 ReLayoutRightToLeftLinesData data =
4098 "Paragraphs with right to left text.",
4099 "שלום עולם مرحبا بالعالم\n"
4100 "مرحبا بالعالم שלום עולם\n"
4101 "שלום עולם مرحبا بالعالم.",
4104 fontDescriptionRuns.Begin(),
4111 if( !ReLayoutRightToLeftLinesTest( data ) )
4113 tet_result(TET_FAIL);
4116 tet_result(TET_PASS);
4120 int UtcDaliTextAlign01(void)
4122 ToolkitTestApplication application;
4123 tet_infoline(" UtcDaliTextAlign01");
4125 // Calculate text alignment.
4127 const std::string fontLatin( "TizenSans" );
4128 const std::string fontHebrew( "TizenSansHebrew" );
4129 const std::string fontArabic( "TizenSansArabic" );
4131 // Set a known font description
4132 FontDescriptionRun fontDescriptionRun01;
4133 fontDescriptionRun01.characterRun.characterIndex = 0u;
4134 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4135 fontDescriptionRun01.familyLength = fontLatin.size();
4136 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4137 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4138 fontDescriptionRun01.familyDefined = true;
4139 fontDescriptionRun01.weightDefined = false;
4140 fontDescriptionRun01.widthDefined = false;
4141 fontDescriptionRun01.slantDefined = false;
4142 fontDescriptionRun01.sizeDefined = false;
4144 FontDescriptionRun fontDescriptionRun02;
4145 fontDescriptionRun02.characterRun.characterIndex = 12u;
4146 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4147 fontDescriptionRun02.familyLength = fontHebrew.size();
4148 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4149 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4150 fontDescriptionRun02.familyDefined = true;
4151 fontDescriptionRun02.weightDefined = false;
4152 fontDescriptionRun02.widthDefined = false;
4153 fontDescriptionRun02.slantDefined = false;
4154 fontDescriptionRun02.sizeDefined = false;
4156 FontDescriptionRun fontDescriptionRun03;
4157 fontDescriptionRun03.characterRun.characterIndex = 22u;
4158 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4159 fontDescriptionRun03.familyLength = fontArabic.size();
4160 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4161 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4162 fontDescriptionRun03.familyDefined = true;
4163 fontDescriptionRun03.weightDefined = false;
4164 fontDescriptionRun03.widthDefined = false;
4165 fontDescriptionRun03.slantDefined = false;
4166 fontDescriptionRun03.sizeDefined = false;
4168 FontDescriptionRun fontDescriptionRun04;
4169 fontDescriptionRun04.characterRun.characterIndex = 36u;
4170 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4171 fontDescriptionRun04.familyLength = fontLatin.size();
4172 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4173 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4174 fontDescriptionRun04.familyDefined = true;
4175 fontDescriptionRun04.weightDefined = false;
4176 fontDescriptionRun04.widthDefined = false;
4177 fontDescriptionRun04.slantDefined = false;
4178 fontDescriptionRun04.sizeDefined = false;
4180 FontDescriptionRun fontDescriptionRun05;
4181 fontDescriptionRun05.characterRun.characterIndex = 48u;
4182 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4183 fontDescriptionRun05.familyLength = fontLatin.size();
4184 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4185 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4186 fontDescriptionRun05.familyDefined = true;
4187 fontDescriptionRun05.weightDefined = false;
4188 fontDescriptionRun05.widthDefined = false;
4189 fontDescriptionRun05.slantDefined = false;
4190 fontDescriptionRun05.sizeDefined = false;
4192 FontDescriptionRun fontDescriptionRun06;
4193 fontDescriptionRun06.characterRun.characterIndex = 60u;
4194 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4195 fontDescriptionRun06.familyLength = fontArabic.size();
4196 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4197 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4198 fontDescriptionRun06.familyDefined = true;
4199 fontDescriptionRun06.weightDefined = false;
4200 fontDescriptionRun06.widthDefined = false;
4201 fontDescriptionRun06.slantDefined = false;
4202 fontDescriptionRun06.sizeDefined = false;
4204 Vector<FontDescriptionRun> fontDescriptionRuns;
4205 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4206 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4207 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4208 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4209 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4210 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4212 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4214 Size textArea( 100.f, 300.f );
4217 "Begin alignment for the first paragraph.",
4218 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4221 fontDescriptionRuns.Begin(),
4222 Text::HorizontalAlignment::BEGIN,
4223 Text::VerticalAlignment::TOP,
4228 Dali::LayoutDirection::LEFT_TO_RIGHT,
4232 if( !AlignTest( data ) )
4234 tet_result(TET_FAIL);
4237 tet_result(TET_PASS);
4241 int UtcDaliTextAlign02(void)
4243 ToolkitTestApplication application;
4244 tet_infoline(" UtcDaliTextAlign02");
4246 // Calculate text alignment.
4248 const std::string fontLatin( "TizenSans" );
4249 const std::string fontHebrew( "TizenSansHebrew" );
4250 const std::string fontArabic( "TizenSansArabic" );
4252 // Set a known font description
4253 FontDescriptionRun fontDescriptionRun01;
4254 fontDescriptionRun01.characterRun.characterIndex = 0u;
4255 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4256 fontDescriptionRun01.familyLength = fontLatin.size();
4257 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4258 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4259 fontDescriptionRun01.familyDefined = true;
4260 fontDescriptionRun01.weightDefined = false;
4261 fontDescriptionRun01.widthDefined = false;
4262 fontDescriptionRun01.slantDefined = false;
4263 fontDescriptionRun01.sizeDefined = false;
4265 FontDescriptionRun fontDescriptionRun02;
4266 fontDescriptionRun02.characterRun.characterIndex = 12u;
4267 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4268 fontDescriptionRun02.familyLength = fontHebrew.size();
4269 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4270 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4271 fontDescriptionRun02.familyDefined = true;
4272 fontDescriptionRun02.weightDefined = false;
4273 fontDescriptionRun02.widthDefined = false;
4274 fontDescriptionRun02.slantDefined = false;
4275 fontDescriptionRun02.sizeDefined = false;
4277 FontDescriptionRun fontDescriptionRun03;
4278 fontDescriptionRun03.characterRun.characterIndex = 22u;
4279 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4280 fontDescriptionRun03.familyLength = fontArabic.size();
4281 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4282 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4283 fontDescriptionRun03.familyDefined = true;
4284 fontDescriptionRun03.weightDefined = false;
4285 fontDescriptionRun03.widthDefined = false;
4286 fontDescriptionRun03.slantDefined = false;
4287 fontDescriptionRun03.sizeDefined = false;
4289 FontDescriptionRun fontDescriptionRun04;
4290 fontDescriptionRun04.characterRun.characterIndex = 36u;
4291 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4292 fontDescriptionRun04.familyLength = fontLatin.size();
4293 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4294 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4295 fontDescriptionRun04.familyDefined = true;
4296 fontDescriptionRun04.weightDefined = false;
4297 fontDescriptionRun04.widthDefined = false;
4298 fontDescriptionRun04.slantDefined = false;
4299 fontDescriptionRun04.sizeDefined = false;
4301 FontDescriptionRun fontDescriptionRun05;
4302 fontDescriptionRun05.characterRun.characterIndex = 48u;
4303 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4304 fontDescriptionRun05.familyLength = fontLatin.size();
4305 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4306 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4307 fontDescriptionRun05.familyDefined = true;
4308 fontDescriptionRun05.weightDefined = false;
4309 fontDescriptionRun05.widthDefined = false;
4310 fontDescriptionRun05.slantDefined = false;
4311 fontDescriptionRun05.sizeDefined = false;
4313 FontDescriptionRun fontDescriptionRun06;
4314 fontDescriptionRun06.characterRun.characterIndex = 60u;
4315 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4316 fontDescriptionRun06.familyLength = fontArabic.size();
4317 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4318 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4319 fontDescriptionRun06.familyDefined = true;
4320 fontDescriptionRun06.weightDefined = false;
4321 fontDescriptionRun06.widthDefined = false;
4322 fontDescriptionRun06.slantDefined = false;
4323 fontDescriptionRun06.sizeDefined = false;
4325 Vector<FontDescriptionRun> fontDescriptionRuns;
4326 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4327 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4328 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4329 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4330 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4331 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4333 float positions[] = { 0.f, 0.f, 2.f, 61.f, 0.f, 0.f };
4335 Size textArea( 100.f, 300.f );
4338 "Begin alignment for the mid paragraph.",
4339 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4342 fontDescriptionRuns.Begin(),
4343 Text::HorizontalAlignment::BEGIN,
4344 Text::VerticalAlignment::TOP,
4349 Dali::LayoutDirection::LEFT_TO_RIGHT,
4353 if( !AlignTest( data ) )
4355 tet_result(TET_FAIL);
4358 tet_result(TET_PASS);
4362 int UtcDaliTextAlign03(void)
4364 ToolkitTestApplication application;
4365 tet_infoline(" UtcDaliTextAlign03");
4367 // Calculate text alignment.
4369 const std::string fontLatin( "TizenSans" );
4370 const std::string fontHebrew( "TizenSansHebrew" );
4371 const std::string fontArabic( "TizenSansArabic" );
4373 // Set a known font description
4374 FontDescriptionRun fontDescriptionRun01;
4375 fontDescriptionRun01.characterRun.characterIndex = 0u;
4376 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4377 fontDescriptionRun01.familyLength = fontLatin.size();
4378 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4379 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4380 fontDescriptionRun01.familyDefined = true;
4381 fontDescriptionRun01.weightDefined = false;
4382 fontDescriptionRun01.widthDefined = false;
4383 fontDescriptionRun01.slantDefined = false;
4384 fontDescriptionRun01.sizeDefined = false;
4386 FontDescriptionRun fontDescriptionRun02;
4387 fontDescriptionRun02.characterRun.characterIndex = 12u;
4388 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4389 fontDescriptionRun02.familyLength = fontHebrew.size();
4390 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4391 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4392 fontDescriptionRun02.familyDefined = true;
4393 fontDescriptionRun02.weightDefined = false;
4394 fontDescriptionRun02.widthDefined = false;
4395 fontDescriptionRun02.slantDefined = false;
4396 fontDescriptionRun02.sizeDefined = false;
4398 FontDescriptionRun fontDescriptionRun03;
4399 fontDescriptionRun03.characterRun.characterIndex = 22u;
4400 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4401 fontDescriptionRun03.familyLength = fontArabic.size();
4402 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4403 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4404 fontDescriptionRun03.familyDefined = true;
4405 fontDescriptionRun03.weightDefined = false;
4406 fontDescriptionRun03.widthDefined = false;
4407 fontDescriptionRun03.slantDefined = false;
4408 fontDescriptionRun03.sizeDefined = false;
4410 FontDescriptionRun fontDescriptionRun04;
4411 fontDescriptionRun04.characterRun.characterIndex = 36u;
4412 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4413 fontDescriptionRun04.familyLength = fontLatin.size();
4414 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4415 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4416 fontDescriptionRun04.familyDefined = true;
4417 fontDescriptionRun04.weightDefined = false;
4418 fontDescriptionRun04.widthDefined = false;
4419 fontDescriptionRun04.slantDefined = false;
4420 fontDescriptionRun04.sizeDefined = false;
4422 FontDescriptionRun fontDescriptionRun05;
4423 fontDescriptionRun05.characterRun.characterIndex = 48u;
4424 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4425 fontDescriptionRun05.familyLength = fontLatin.size();
4426 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4427 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4428 fontDescriptionRun05.familyDefined = true;
4429 fontDescriptionRun05.weightDefined = false;
4430 fontDescriptionRun05.widthDefined = false;
4431 fontDescriptionRun05.slantDefined = false;
4432 fontDescriptionRun05.sizeDefined = false;
4434 FontDescriptionRun fontDescriptionRun06;
4435 fontDescriptionRun06.characterRun.characterIndex = 60u;
4436 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4437 fontDescriptionRun06.familyLength = fontArabic.size();
4438 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4439 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4440 fontDescriptionRun06.familyDefined = true;
4441 fontDescriptionRun06.weightDefined = false;
4442 fontDescriptionRun06.widthDefined = false;
4443 fontDescriptionRun06.slantDefined = false;
4444 fontDescriptionRun06.sizeDefined = false;
4446 Vector<FontDescriptionRun> fontDescriptionRuns;
4447 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4448 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4449 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4450 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4451 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4452 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4454 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4456 Size textArea( 100.f, 300.f );
4459 "Begin alignment for the last paragraph.",
4460 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4463 fontDescriptionRuns.Begin(),
4464 Text::HorizontalAlignment::BEGIN,
4465 Text::VerticalAlignment::TOP,
4470 Dali::LayoutDirection::LEFT_TO_RIGHT,
4474 if( !AlignTest( data ) )
4476 tet_result(TET_FAIL);
4479 tet_result(TET_PASS);
4483 int UtcDaliTextAlign04(void)
4485 ToolkitTestApplication application;
4486 tet_infoline(" UtcDaliTextAlign04");
4488 // Calculate text alignment.
4490 const std::string fontLatin( "TizenSans" );
4491 const std::string fontHebrew( "TizenSansHebrew" );
4492 const std::string fontArabic( "TizenSansArabic" );
4494 // Set a known font description
4495 FontDescriptionRun fontDescriptionRun01;
4496 fontDescriptionRun01.characterRun.characterIndex = 0u;
4497 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4498 fontDescriptionRun01.familyLength = fontLatin.size();
4499 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4500 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4501 fontDescriptionRun01.familyDefined = true;
4502 fontDescriptionRun01.weightDefined = false;
4503 fontDescriptionRun01.widthDefined = false;
4504 fontDescriptionRun01.slantDefined = false;
4505 fontDescriptionRun01.sizeDefined = false;
4507 FontDescriptionRun fontDescriptionRun02;
4508 fontDescriptionRun02.characterRun.characterIndex = 12u;
4509 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4510 fontDescriptionRun02.familyLength = fontHebrew.size();
4511 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4512 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4513 fontDescriptionRun02.familyDefined = true;
4514 fontDescriptionRun02.weightDefined = false;
4515 fontDescriptionRun02.widthDefined = false;
4516 fontDescriptionRun02.slantDefined = false;
4517 fontDescriptionRun02.sizeDefined = false;
4519 FontDescriptionRun fontDescriptionRun03;
4520 fontDescriptionRun03.characterRun.characterIndex = 22u;
4521 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4522 fontDescriptionRun03.familyLength = fontArabic.size();
4523 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4524 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4525 fontDescriptionRun03.familyDefined = true;
4526 fontDescriptionRun03.weightDefined = false;
4527 fontDescriptionRun03.widthDefined = false;
4528 fontDescriptionRun03.slantDefined = false;
4529 fontDescriptionRun03.sizeDefined = false;
4531 FontDescriptionRun fontDescriptionRun04;
4532 fontDescriptionRun04.characterRun.characterIndex = 36u;
4533 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4534 fontDescriptionRun04.familyLength = fontLatin.size();
4535 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4536 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4537 fontDescriptionRun04.familyDefined = true;
4538 fontDescriptionRun04.weightDefined = false;
4539 fontDescriptionRun04.widthDefined = false;
4540 fontDescriptionRun04.slantDefined = false;
4541 fontDescriptionRun04.sizeDefined = false;
4543 FontDescriptionRun fontDescriptionRun05;
4544 fontDescriptionRun05.characterRun.characterIndex = 48u;
4545 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4546 fontDescriptionRun05.familyLength = fontLatin.size();
4547 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4548 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4549 fontDescriptionRun05.familyDefined = true;
4550 fontDescriptionRun05.weightDefined = false;
4551 fontDescriptionRun05.widthDefined = false;
4552 fontDescriptionRun05.slantDefined = false;
4553 fontDescriptionRun05.sizeDefined = false;
4555 FontDescriptionRun fontDescriptionRun06;
4556 fontDescriptionRun06.characterRun.characterIndex = 60u;
4557 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4558 fontDescriptionRun06.familyLength = fontArabic.size();
4559 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4560 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4561 fontDescriptionRun06.familyDefined = true;
4562 fontDescriptionRun06.weightDefined = false;
4563 fontDescriptionRun06.widthDefined = false;
4564 fontDescriptionRun06.slantDefined = false;
4565 fontDescriptionRun06.sizeDefined = false;
4567 Vector<FontDescriptionRun> fontDescriptionRuns;
4568 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4569 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4570 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4571 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4572 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4573 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4575 float positions[] = { 11.f, 17.f, 0.f, 0.f, 0.f, 0.f };
4577 Size textArea( 100.f, 300.f );
4580 "Center alignment for the first paragraph.",
4581 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4584 fontDescriptionRuns.Begin(),
4585 Text::HorizontalAlignment::CENTER,
4586 Text::VerticalAlignment::TOP,
4591 Dali::LayoutDirection::LEFT_TO_RIGHT,
4595 if( !AlignTest( data ) )
4597 tet_result(TET_FAIL);
4600 tet_result(TET_PASS);
4604 int UtcDaliTextAlign05(void)
4606 ToolkitTestApplication application;
4607 tet_infoline(" UtcDaliTextAlign05");
4609 // Calculate text alignment.
4611 const std::string fontLatin( "TizenSans" );
4612 const std::string fontHebrew( "TizenSansHebrew" );
4613 const std::string fontArabic( "TizenSansArabic" );
4615 // Set a known font description
4616 FontDescriptionRun fontDescriptionRun01;
4617 fontDescriptionRun01.characterRun.characterIndex = 0u;
4618 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4619 fontDescriptionRun01.familyLength = fontLatin.size();
4620 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4621 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4622 fontDescriptionRun01.familyDefined = true;
4623 fontDescriptionRun01.weightDefined = false;
4624 fontDescriptionRun01.widthDefined = false;
4625 fontDescriptionRun01.slantDefined = false;
4626 fontDescriptionRun01.sizeDefined = false;
4628 FontDescriptionRun fontDescriptionRun02;
4629 fontDescriptionRun02.characterRun.characterIndex = 12u;
4630 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4631 fontDescriptionRun02.familyLength = fontHebrew.size();
4632 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4633 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4634 fontDescriptionRun02.familyDefined = true;
4635 fontDescriptionRun02.weightDefined = false;
4636 fontDescriptionRun02.widthDefined = false;
4637 fontDescriptionRun02.slantDefined = false;
4638 fontDescriptionRun02.sizeDefined = false;
4640 FontDescriptionRun fontDescriptionRun03;
4641 fontDescriptionRun03.characterRun.characterIndex = 22u;
4642 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4643 fontDescriptionRun03.familyLength = fontArabic.size();
4644 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4645 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4646 fontDescriptionRun03.familyDefined = true;
4647 fontDescriptionRun03.weightDefined = false;
4648 fontDescriptionRun03.widthDefined = false;
4649 fontDescriptionRun03.slantDefined = false;
4650 fontDescriptionRun03.sizeDefined = false;
4652 FontDescriptionRun fontDescriptionRun04;
4653 fontDescriptionRun04.characterRun.characterIndex = 36u;
4654 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4655 fontDescriptionRun04.familyLength = fontLatin.size();
4656 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4657 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4658 fontDescriptionRun04.familyDefined = true;
4659 fontDescriptionRun04.weightDefined = false;
4660 fontDescriptionRun04.widthDefined = false;
4661 fontDescriptionRun04.slantDefined = false;
4662 fontDescriptionRun04.sizeDefined = false;
4664 FontDescriptionRun fontDescriptionRun05;
4665 fontDescriptionRun05.characterRun.characterIndex = 48u;
4666 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4667 fontDescriptionRun05.familyLength = fontLatin.size();
4668 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4669 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4670 fontDescriptionRun05.familyDefined = true;
4671 fontDescriptionRun05.weightDefined = false;
4672 fontDescriptionRun05.widthDefined = false;
4673 fontDescriptionRun05.slantDefined = false;
4674 fontDescriptionRun05.sizeDefined = false;
4676 FontDescriptionRun fontDescriptionRun06;
4677 fontDescriptionRun06.characterRun.characterIndex = 60u;
4678 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4679 fontDescriptionRun06.familyLength = fontArabic.size();
4680 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4681 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4682 fontDescriptionRun06.familyDefined = true;
4683 fontDescriptionRun06.weightDefined = false;
4684 fontDescriptionRun06.widthDefined = false;
4685 fontDescriptionRun06.slantDefined = false;
4686 fontDescriptionRun06.sizeDefined = false;
4688 Vector<FontDescriptionRun> fontDescriptionRuns;
4689 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4690 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4691 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4692 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4693 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4694 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4696 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4698 Size textArea( 100.f, 300.f );
4701 "Center alignment for the mid paragraph.",
4702 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4705 fontDescriptionRuns.Begin(),
4706 Text::HorizontalAlignment::CENTER,
4707 Text::VerticalAlignment::TOP,
4712 Dali::LayoutDirection::LEFT_TO_RIGHT,
4716 if( !AlignTest( data ) )
4718 tet_result(TET_FAIL);
4721 tet_result(TET_PASS);
4725 int UtcDaliTextAlign06(void)
4727 ToolkitTestApplication application;
4728 tet_infoline(" UtcDaliTextAlign06");
4730 // Calculate text alignment.
4732 const std::string fontLatin( "TizenSans" );
4733 const std::string fontHebrew( "TizenSansHebrew" );
4734 const std::string fontArabic( "TizenSansArabic" );
4736 // Set a known font description
4737 FontDescriptionRun fontDescriptionRun01;
4738 fontDescriptionRun01.characterRun.characterIndex = 0u;
4739 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4740 fontDescriptionRun01.familyLength = fontLatin.size();
4741 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4742 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4743 fontDescriptionRun01.familyDefined = true;
4744 fontDescriptionRun01.weightDefined = false;
4745 fontDescriptionRun01.widthDefined = false;
4746 fontDescriptionRun01.slantDefined = false;
4747 fontDescriptionRun01.sizeDefined = false;
4749 FontDescriptionRun fontDescriptionRun02;
4750 fontDescriptionRun02.characterRun.characterIndex = 12u;
4751 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4752 fontDescriptionRun02.familyLength = fontHebrew.size();
4753 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4754 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4755 fontDescriptionRun02.familyDefined = true;
4756 fontDescriptionRun02.weightDefined = false;
4757 fontDescriptionRun02.widthDefined = false;
4758 fontDescriptionRun02.slantDefined = false;
4759 fontDescriptionRun02.sizeDefined = false;
4761 FontDescriptionRun fontDescriptionRun03;
4762 fontDescriptionRun03.characterRun.characterIndex = 22u;
4763 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4764 fontDescriptionRun03.familyLength = fontArabic.size();
4765 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4766 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4767 fontDescriptionRun03.familyDefined = true;
4768 fontDescriptionRun03.weightDefined = false;
4769 fontDescriptionRun03.widthDefined = false;
4770 fontDescriptionRun03.slantDefined = false;
4771 fontDescriptionRun03.sizeDefined = false;
4773 FontDescriptionRun fontDescriptionRun04;
4774 fontDescriptionRun04.characterRun.characterIndex = 36u;
4775 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4776 fontDescriptionRun04.familyLength = fontLatin.size();
4777 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4778 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4779 fontDescriptionRun04.familyDefined = true;
4780 fontDescriptionRun04.weightDefined = false;
4781 fontDescriptionRun04.widthDefined = false;
4782 fontDescriptionRun04.slantDefined = false;
4783 fontDescriptionRun04.sizeDefined = false;
4785 FontDescriptionRun fontDescriptionRun05;
4786 fontDescriptionRun05.characterRun.characterIndex = 48u;
4787 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4788 fontDescriptionRun05.familyLength = fontLatin.size();
4789 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4790 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4791 fontDescriptionRun05.familyDefined = true;
4792 fontDescriptionRun05.weightDefined = false;
4793 fontDescriptionRun05.widthDefined = false;
4794 fontDescriptionRun05.slantDefined = false;
4795 fontDescriptionRun05.sizeDefined = false;
4797 FontDescriptionRun fontDescriptionRun06;
4798 fontDescriptionRun06.characterRun.characterIndex = 60u;
4799 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4800 fontDescriptionRun06.familyLength = fontArabic.size();
4801 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4802 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4803 fontDescriptionRun06.familyDefined = true;
4804 fontDescriptionRun06.weightDefined = false;
4805 fontDescriptionRun06.widthDefined = false;
4806 fontDescriptionRun06.slantDefined = false;
4807 fontDescriptionRun06.sizeDefined = false;
4809 Vector<FontDescriptionRun> fontDescriptionRuns;
4810 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4811 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4812 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4813 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4814 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4815 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4817 float positions[] = { 0.f, 0.f, 0.f, 0.f, 11.f, 21.f };
4819 Size textArea( 100.f, 300.f );
4822 "Center alignment for the last paragraph.",
4823 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4826 fontDescriptionRuns.Begin(),
4827 Text::HorizontalAlignment::CENTER,
4828 Text::VerticalAlignment::TOP,
4833 Dali::LayoutDirection::LEFT_TO_RIGHT,
4837 if( !AlignTest( data ) )
4839 tet_result(TET_FAIL);
4842 tet_result(TET_PASS);
4846 int UtcDaliTextAlign07(void)
4848 ToolkitTestApplication application;
4849 tet_infoline(" UtcDaliTextAlign07");
4851 // Calculate text alignment.
4853 const std::string fontLatin( "TizenSans" );
4854 const std::string fontHebrew( "TizenSansHebrew" );
4855 const std::string fontArabic( "TizenSansArabic" );
4857 // Set a known font description
4858 FontDescriptionRun fontDescriptionRun01;
4859 fontDescriptionRun01.characterRun.characterIndex = 0u;
4860 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4861 fontDescriptionRun01.familyLength = fontLatin.size();
4862 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4863 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4864 fontDescriptionRun01.familyDefined = true;
4865 fontDescriptionRun01.weightDefined = false;
4866 fontDescriptionRun01.widthDefined = false;
4867 fontDescriptionRun01.slantDefined = false;
4868 fontDescriptionRun01.sizeDefined = false;
4870 FontDescriptionRun fontDescriptionRun02;
4871 fontDescriptionRun02.characterRun.characterIndex = 12u;
4872 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4873 fontDescriptionRun02.familyLength = fontHebrew.size();
4874 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4875 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4876 fontDescriptionRun02.familyDefined = true;
4877 fontDescriptionRun02.weightDefined = false;
4878 fontDescriptionRun02.widthDefined = false;
4879 fontDescriptionRun02.slantDefined = false;
4880 fontDescriptionRun02.sizeDefined = false;
4882 FontDescriptionRun fontDescriptionRun03;
4883 fontDescriptionRun03.characterRun.characterIndex = 22u;
4884 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4885 fontDescriptionRun03.familyLength = fontArabic.size();
4886 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4887 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4888 fontDescriptionRun03.familyDefined = true;
4889 fontDescriptionRun03.weightDefined = false;
4890 fontDescriptionRun03.widthDefined = false;
4891 fontDescriptionRun03.slantDefined = false;
4892 fontDescriptionRun03.sizeDefined = false;
4894 FontDescriptionRun fontDescriptionRun04;
4895 fontDescriptionRun04.characterRun.characterIndex = 36u;
4896 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4897 fontDescriptionRun04.familyLength = fontLatin.size();
4898 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4899 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4900 fontDescriptionRun04.familyDefined = true;
4901 fontDescriptionRun04.weightDefined = false;
4902 fontDescriptionRun04.widthDefined = false;
4903 fontDescriptionRun04.slantDefined = false;
4904 fontDescriptionRun04.sizeDefined = false;
4906 FontDescriptionRun fontDescriptionRun05;
4907 fontDescriptionRun05.characterRun.characterIndex = 48u;
4908 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4909 fontDescriptionRun05.familyLength = fontLatin.size();
4910 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4911 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4912 fontDescriptionRun05.familyDefined = true;
4913 fontDescriptionRun05.weightDefined = false;
4914 fontDescriptionRun05.widthDefined = false;
4915 fontDescriptionRun05.slantDefined = false;
4916 fontDescriptionRun05.sizeDefined = false;
4918 FontDescriptionRun fontDescriptionRun06;
4919 fontDescriptionRun06.characterRun.characterIndex = 60u;
4920 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4921 fontDescriptionRun06.familyLength = fontArabic.size();
4922 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4923 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4924 fontDescriptionRun06.familyDefined = true;
4925 fontDescriptionRun06.weightDefined = false;
4926 fontDescriptionRun06.widthDefined = false;
4927 fontDescriptionRun06.slantDefined = false;
4928 fontDescriptionRun06.sizeDefined = false;
4930 Vector<FontDescriptionRun> fontDescriptionRuns;
4931 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4932 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4933 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4934 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4935 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4936 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4938 float positions[] = { 22.f, 35.f, 0.f, 0.f, 0.f, 0.f };
4940 Size textArea( 100.f, 300.f );
4943 "End alignment for the first paragraph.",
4944 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4947 fontDescriptionRuns.Begin(),
4948 Text::HorizontalAlignment::END,
4949 Text::VerticalAlignment::TOP,
4954 Dali::LayoutDirection::LEFT_TO_RIGHT,
4958 if( !AlignTest( data ) )
4960 tet_result(TET_FAIL);
4963 tet_result(TET_PASS);
4967 int UtcDaliTextAlign08(void)
4969 ToolkitTestApplication application;
4970 tet_infoline(" UtcDaliTextAlign08");
4972 // Calculate text alignment.
4974 const std::string fontLatin( "TizenSans" );
4975 const std::string fontHebrew( "TizenSansHebrew" );
4976 const std::string fontArabic( "TizenSansArabic" );
4978 // Set a known font description
4979 FontDescriptionRun fontDescriptionRun01;
4980 fontDescriptionRun01.characterRun.characterIndex = 0u;
4981 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4982 fontDescriptionRun01.familyLength = fontLatin.size();
4983 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4984 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4985 fontDescriptionRun01.familyDefined = true;
4986 fontDescriptionRun01.weightDefined = false;
4987 fontDescriptionRun01.widthDefined = false;
4988 fontDescriptionRun01.slantDefined = false;
4989 fontDescriptionRun01.sizeDefined = false;
4991 FontDescriptionRun fontDescriptionRun02;
4992 fontDescriptionRun02.characterRun.characterIndex = 12u;
4993 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4994 fontDescriptionRun02.familyLength = fontHebrew.size();
4995 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4996 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4997 fontDescriptionRun02.familyDefined = true;
4998 fontDescriptionRun02.weightDefined = false;
4999 fontDescriptionRun02.widthDefined = false;
5000 fontDescriptionRun02.slantDefined = false;
5001 fontDescriptionRun02.sizeDefined = false;
5003 FontDescriptionRun fontDescriptionRun03;
5004 fontDescriptionRun03.characterRun.characterIndex = 22u;
5005 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5006 fontDescriptionRun03.familyLength = fontArabic.size();
5007 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5008 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5009 fontDescriptionRun03.familyDefined = true;
5010 fontDescriptionRun03.weightDefined = false;
5011 fontDescriptionRun03.widthDefined = false;
5012 fontDescriptionRun03.slantDefined = false;
5013 fontDescriptionRun03.sizeDefined = false;
5015 FontDescriptionRun fontDescriptionRun04;
5016 fontDescriptionRun04.characterRun.characterIndex = 36u;
5017 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5018 fontDescriptionRun04.familyLength = fontLatin.size();
5019 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5020 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5021 fontDescriptionRun04.familyDefined = true;
5022 fontDescriptionRun04.weightDefined = false;
5023 fontDescriptionRun04.widthDefined = false;
5024 fontDescriptionRun04.slantDefined = false;
5025 fontDescriptionRun04.sizeDefined = false;
5027 FontDescriptionRun fontDescriptionRun05;
5028 fontDescriptionRun05.characterRun.characterIndex = 48u;
5029 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5030 fontDescriptionRun05.familyLength = fontLatin.size();
5031 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5032 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5033 fontDescriptionRun05.familyDefined = true;
5034 fontDescriptionRun05.weightDefined = false;
5035 fontDescriptionRun05.widthDefined = false;
5036 fontDescriptionRun05.slantDefined = false;
5037 fontDescriptionRun05.sizeDefined = false;
5039 FontDescriptionRun fontDescriptionRun06;
5040 fontDescriptionRun06.characterRun.characterIndex = 60u;
5041 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5042 fontDescriptionRun06.familyLength = fontArabic.size();
5043 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5044 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5045 fontDescriptionRun06.familyDefined = true;
5046 fontDescriptionRun06.weightDefined = false;
5047 fontDescriptionRun06.widthDefined = false;
5048 fontDescriptionRun06.slantDefined = false;
5049 fontDescriptionRun06.sizeDefined = false;
5051 Vector<FontDescriptionRun> fontDescriptionRuns;
5052 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5053 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5054 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5055 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5056 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5057 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5059 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5061 Size textArea( 100.f, 300.f );
5064 "End alignment for the mid paragraph.",
5065 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5068 fontDescriptionRuns.Begin(),
5069 Text::HorizontalAlignment::END,
5070 Text::VerticalAlignment::TOP,
5075 Dali::LayoutDirection::LEFT_TO_RIGHT,
5079 if( !AlignTest( data ) )
5081 tet_result(TET_FAIL);
5084 tet_result(TET_PASS);
5088 int UtcDaliTextAlign09(void)
5090 ToolkitTestApplication application;
5091 tet_infoline(" UtcDaliTextAlign09");
5093 // Calculate text alignment.
5095 const std::string fontLatin( "TizenSans" );
5096 const std::string fontHebrew( "TizenSansHebrew" );
5097 const std::string fontArabic( "TizenSansArabic" );
5099 // Set a known font description
5100 FontDescriptionRun fontDescriptionRun01;
5101 fontDescriptionRun01.characterRun.characterIndex = 0u;
5102 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5103 fontDescriptionRun01.familyLength = fontLatin.size();
5104 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5105 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5106 fontDescriptionRun01.familyDefined = true;
5107 fontDescriptionRun01.weightDefined = false;
5108 fontDescriptionRun01.widthDefined = false;
5109 fontDescriptionRun01.slantDefined = false;
5110 fontDescriptionRun01.sizeDefined = false;
5112 FontDescriptionRun fontDescriptionRun02;
5113 fontDescriptionRun02.characterRun.characterIndex = 12u;
5114 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5115 fontDescriptionRun02.familyLength = fontHebrew.size();
5116 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5117 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5118 fontDescriptionRun02.familyDefined = true;
5119 fontDescriptionRun02.weightDefined = false;
5120 fontDescriptionRun02.widthDefined = false;
5121 fontDescriptionRun02.slantDefined = false;
5122 fontDescriptionRun02.sizeDefined = false;
5124 FontDescriptionRun fontDescriptionRun03;
5125 fontDescriptionRun03.characterRun.characterIndex = 22u;
5126 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5127 fontDescriptionRun03.familyLength = fontArabic.size();
5128 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5129 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5130 fontDescriptionRun03.familyDefined = true;
5131 fontDescriptionRun03.weightDefined = false;
5132 fontDescriptionRun03.widthDefined = false;
5133 fontDescriptionRun03.slantDefined = false;
5134 fontDescriptionRun03.sizeDefined = false;
5136 FontDescriptionRun fontDescriptionRun04;
5137 fontDescriptionRun04.characterRun.characterIndex = 36u;
5138 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5139 fontDescriptionRun04.familyLength = fontLatin.size();
5140 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5141 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5142 fontDescriptionRun04.familyDefined = true;
5143 fontDescriptionRun04.weightDefined = false;
5144 fontDescriptionRun04.widthDefined = false;
5145 fontDescriptionRun04.slantDefined = false;
5146 fontDescriptionRun04.sizeDefined = false;
5148 FontDescriptionRun fontDescriptionRun05;
5149 fontDescriptionRun05.characterRun.characterIndex = 48u;
5150 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5151 fontDescriptionRun05.familyLength = fontLatin.size();
5152 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5153 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5154 fontDescriptionRun05.familyDefined = true;
5155 fontDescriptionRun05.weightDefined = false;
5156 fontDescriptionRun05.widthDefined = false;
5157 fontDescriptionRun05.slantDefined = false;
5158 fontDescriptionRun05.sizeDefined = false;
5160 FontDescriptionRun fontDescriptionRun06;
5161 fontDescriptionRun06.characterRun.characterIndex = 60u;
5162 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5163 fontDescriptionRun06.familyLength = fontArabic.size();
5164 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5165 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5166 fontDescriptionRun06.familyDefined = true;
5167 fontDescriptionRun06.weightDefined = false;
5168 fontDescriptionRun06.widthDefined = false;
5169 fontDescriptionRun06.slantDefined = false;
5170 fontDescriptionRun06.sizeDefined = false;
5172 Vector<FontDescriptionRun> fontDescriptionRuns;
5173 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5174 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5175 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5176 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5177 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5178 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5180 float positions[] = { 0.f, 0.f, 0.f, 0.f, 22.f, 42.f };
5182 Size textArea( 100.f, 300.f );
5185 "End alignment for the last paragraph.",
5186 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5189 fontDescriptionRuns.Begin(),
5190 Text::HorizontalAlignment::END,
5191 Text::VerticalAlignment::TOP,
5196 Dali::LayoutDirection::LEFT_TO_RIGHT,
5200 if( !AlignTest( data ) )
5202 tet_result(TET_FAIL);
5205 tet_result(TET_PASS);
5209 int UtcDaliTextAlign10(void)
5211 ToolkitTestApplication application;
5212 tet_infoline(" UtcDaliTextAlign10");
5214 // Calculate text alignment.
5216 const std::string fontLatin( "TizenSans" );
5217 const std::string fontHebrew( "TizenSansHebrew" );
5218 const std::string fontArabic( "TizenSansArabic" );
5220 // Set a known font description
5221 FontDescriptionRun fontDescriptionRun01;
5222 fontDescriptionRun01.characterRun.characterIndex = 0u;
5223 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5224 fontDescriptionRun01.familyLength = fontLatin.size();
5225 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5226 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5227 fontDescriptionRun01.familyDefined = true;
5228 fontDescriptionRun01.weightDefined = false;
5229 fontDescriptionRun01.widthDefined = false;
5230 fontDescriptionRun01.slantDefined = false;
5231 fontDescriptionRun01.sizeDefined = false;
5233 FontDescriptionRun fontDescriptionRun02;
5234 fontDescriptionRun02.characterRun.characterIndex = 12u;
5235 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5236 fontDescriptionRun02.familyLength = fontHebrew.size();
5237 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5238 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5239 fontDescriptionRun02.familyDefined = true;
5240 fontDescriptionRun02.weightDefined = false;
5241 fontDescriptionRun02.widthDefined = false;
5242 fontDescriptionRun02.slantDefined = false;
5243 fontDescriptionRun02.sizeDefined = false;
5245 FontDescriptionRun fontDescriptionRun03;
5246 fontDescriptionRun03.characterRun.characterIndex = 22u;
5247 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5248 fontDescriptionRun03.familyLength = fontArabic.size();
5249 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5250 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5251 fontDescriptionRun03.familyDefined = true;
5252 fontDescriptionRun03.weightDefined = false;
5253 fontDescriptionRun03.widthDefined = false;
5254 fontDescriptionRun03.slantDefined = false;
5255 fontDescriptionRun03.sizeDefined = false;
5257 FontDescriptionRun fontDescriptionRun04;
5258 fontDescriptionRun04.characterRun.characterIndex = 36u;
5259 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5260 fontDescriptionRun04.familyLength = fontLatin.size();
5261 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5262 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5263 fontDescriptionRun04.familyDefined = true;
5264 fontDescriptionRun04.weightDefined = false;
5265 fontDescriptionRun04.widthDefined = false;
5266 fontDescriptionRun04.slantDefined = false;
5267 fontDescriptionRun04.sizeDefined = false;
5269 FontDescriptionRun fontDescriptionRun05;
5270 fontDescriptionRun05.characterRun.characterIndex = 48u;
5271 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5272 fontDescriptionRun05.familyLength = fontLatin.size();
5273 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5274 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5275 fontDescriptionRun05.familyDefined = true;
5276 fontDescriptionRun05.weightDefined = false;
5277 fontDescriptionRun05.widthDefined = false;
5278 fontDescriptionRun05.slantDefined = false;
5279 fontDescriptionRun05.sizeDefined = false;
5281 FontDescriptionRun fontDescriptionRun06;
5282 fontDescriptionRun06.characterRun.characterIndex = 60u;
5283 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5284 fontDescriptionRun06.familyLength = fontArabic.size();
5285 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5286 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5287 fontDescriptionRun06.familyDefined = true;
5288 fontDescriptionRun06.weightDefined = false;
5289 fontDescriptionRun06.widthDefined = false;
5290 fontDescriptionRun06.slantDefined = false;
5291 fontDescriptionRun06.sizeDefined = false;
5293 Vector<FontDescriptionRun> fontDescriptionRuns;
5294 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5295 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5296 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5297 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5298 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5299 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5301 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5303 Size textArea( 100.f, 300.f );
5306 "Begin alignment for the first paragraph.",
5307 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5310 fontDescriptionRuns.Begin(),
5311 Text::HorizontalAlignment::END,
5312 Text::VerticalAlignment::TOP,
5317 Dali::LayoutDirection::RIGHT_TO_LEFT,
5321 if( !AlignTest( data ) )
5323 tet_result(TET_FAIL);
5326 tet_result(TET_PASS);
5330 int UtcDaliTextAlign11(void)
5332 ToolkitTestApplication application;
5333 tet_infoline(" UtcDaliTextAlign11");
5335 // Calculate text alignment.
5337 const std::string fontLatin( "TizenSans" );
5338 const std::string fontHebrew( "TizenSansHebrew" );
5339 const std::string fontArabic( "TizenSansArabic" );
5341 // Set a known font description
5342 FontDescriptionRun fontDescriptionRun01;
5343 fontDescriptionRun01.characterRun.characterIndex = 0u;
5344 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5345 fontDescriptionRun01.familyLength = fontLatin.size();
5346 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5347 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5348 fontDescriptionRun01.familyDefined = true;
5349 fontDescriptionRun01.weightDefined = false;
5350 fontDescriptionRun01.widthDefined = false;
5351 fontDescriptionRun01.slantDefined = false;
5352 fontDescriptionRun01.sizeDefined = false;
5354 FontDescriptionRun fontDescriptionRun02;
5355 fontDescriptionRun02.characterRun.characterIndex = 12u;
5356 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5357 fontDescriptionRun02.familyLength = fontHebrew.size();
5358 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5359 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5360 fontDescriptionRun02.familyDefined = true;
5361 fontDescriptionRun02.weightDefined = false;
5362 fontDescriptionRun02.widthDefined = false;
5363 fontDescriptionRun02.slantDefined = false;
5364 fontDescriptionRun02.sizeDefined = false;
5366 FontDescriptionRun fontDescriptionRun03;
5367 fontDescriptionRun03.characterRun.characterIndex = 22u;
5368 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5369 fontDescriptionRun03.familyLength = fontArabic.size();
5370 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5371 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5372 fontDescriptionRun03.familyDefined = true;
5373 fontDescriptionRun03.weightDefined = false;
5374 fontDescriptionRun03.widthDefined = false;
5375 fontDescriptionRun03.slantDefined = false;
5376 fontDescriptionRun03.sizeDefined = false;
5378 FontDescriptionRun fontDescriptionRun04;
5379 fontDescriptionRun04.characterRun.characterIndex = 36u;
5380 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5381 fontDescriptionRun04.familyLength = fontLatin.size();
5382 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5383 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5384 fontDescriptionRun04.familyDefined = true;
5385 fontDescriptionRun04.weightDefined = false;
5386 fontDescriptionRun04.widthDefined = false;
5387 fontDescriptionRun04.slantDefined = false;
5388 fontDescriptionRun04.sizeDefined = false;
5390 FontDescriptionRun fontDescriptionRun05;
5391 fontDescriptionRun05.characterRun.characterIndex = 48u;
5392 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5393 fontDescriptionRun05.familyLength = fontLatin.size();
5394 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5395 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5396 fontDescriptionRun05.familyDefined = true;
5397 fontDescriptionRun05.weightDefined = false;
5398 fontDescriptionRun05.widthDefined = false;
5399 fontDescriptionRun05.slantDefined = false;
5400 fontDescriptionRun05.sizeDefined = false;
5402 FontDescriptionRun fontDescriptionRun06;
5403 fontDescriptionRun06.characterRun.characterIndex = 60u;
5404 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5405 fontDescriptionRun06.familyLength = fontArabic.size();
5406 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5407 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5408 fontDescriptionRun06.familyDefined = true;
5409 fontDescriptionRun06.weightDefined = false;
5410 fontDescriptionRun06.widthDefined = false;
5411 fontDescriptionRun06.slantDefined = false;
5412 fontDescriptionRun06.sizeDefined = false;
5414 Vector<FontDescriptionRun> fontDescriptionRuns;
5415 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5416 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5417 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5418 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5419 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5420 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5422 float positions[] = { 22.f, 35.f, 2.f, 0.f, 0.f, 0.f };
5424 Size textArea( 100.f, 300.f );
5427 "End alignment for the last paragraph.",
5428 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5431 fontDescriptionRuns.Begin(),
5432 Text::HorizontalAlignment::END,
5433 Text::VerticalAlignment::TOP,
5438 Dali::LayoutDirection::LEFT_TO_RIGHT,
5442 if( !AlignTest( data ) )
5444 tet_result(TET_FAIL);
5447 tet_result(TET_PASS);
5451 int UtcDaliTextAlign12(void)
5453 ToolkitTestApplication application;
5454 tet_infoline(" UtcDaliTextAlign12");
5456 // Calculate text alignment.
5458 const std::string fontLatin( "TizenSans" );
5459 const std::string fontHebrew( "TizenSansHebrew" );
5460 const std::string fontArabic( "TizenSansArabic" );
5462 // Set a known font description
5463 FontDescriptionRun fontDescriptionRun01;
5464 fontDescriptionRun01.characterRun.characterIndex = 0u;
5465 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5466 fontDescriptionRun01.familyLength = fontLatin.size();
5467 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5468 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5469 fontDescriptionRun01.familyDefined = true;
5470 fontDescriptionRun01.weightDefined = false;
5471 fontDescriptionRun01.widthDefined = false;
5472 fontDescriptionRun01.slantDefined = false;
5473 fontDescriptionRun01.sizeDefined = false;
5475 FontDescriptionRun fontDescriptionRun02;
5476 fontDescriptionRun02.characterRun.characterIndex = 12u;
5477 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5478 fontDescriptionRun02.familyLength = fontHebrew.size();
5479 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5480 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5481 fontDescriptionRun02.familyDefined = true;
5482 fontDescriptionRun02.weightDefined = false;
5483 fontDescriptionRun02.widthDefined = false;
5484 fontDescriptionRun02.slantDefined = false;
5485 fontDescriptionRun02.sizeDefined = false;
5487 FontDescriptionRun fontDescriptionRun03;
5488 fontDescriptionRun03.characterRun.characterIndex = 22u;
5489 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5490 fontDescriptionRun03.familyLength = fontArabic.size();
5491 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5492 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5493 fontDescriptionRun03.familyDefined = true;
5494 fontDescriptionRun03.weightDefined = false;
5495 fontDescriptionRun03.widthDefined = false;
5496 fontDescriptionRun03.slantDefined = false;
5497 fontDescriptionRun03.sizeDefined = false;
5499 FontDescriptionRun fontDescriptionRun04;
5500 fontDescriptionRun04.characterRun.characterIndex = 36u;
5501 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5502 fontDescriptionRun04.familyLength = fontLatin.size();
5503 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5504 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5505 fontDescriptionRun04.familyDefined = true;
5506 fontDescriptionRun04.weightDefined = false;
5507 fontDescriptionRun04.widthDefined = false;
5508 fontDescriptionRun04.slantDefined = false;
5509 fontDescriptionRun04.sizeDefined = false;
5511 FontDescriptionRun fontDescriptionRun05;
5512 fontDescriptionRun05.characterRun.characterIndex = 48u;
5513 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5514 fontDescriptionRun05.familyLength = fontLatin.size();
5515 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5516 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5517 fontDescriptionRun05.familyDefined = true;
5518 fontDescriptionRun05.weightDefined = false;
5519 fontDescriptionRun05.widthDefined = false;
5520 fontDescriptionRun05.slantDefined = false;
5521 fontDescriptionRun05.sizeDefined = false;
5523 FontDescriptionRun fontDescriptionRun06;
5524 fontDescriptionRun06.characterRun.characterIndex = 60u;
5525 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5526 fontDescriptionRun06.familyLength = fontArabic.size();
5527 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5528 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5529 fontDescriptionRun06.familyDefined = true;
5530 fontDescriptionRun06.weightDefined = false;
5531 fontDescriptionRun06.widthDefined = false;
5532 fontDescriptionRun06.slantDefined = false;
5533 fontDescriptionRun06.sizeDefined = false;
5535 Vector<FontDescriptionRun> fontDescriptionRuns;
5536 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5537 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5538 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5539 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5540 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5541 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5543 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
5545 Size textArea( 100.f, 300.f );
5548 "Begin alignment for the first paragraph.",
5549 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5552 fontDescriptionRuns.Begin(),
5553 Text::HorizontalAlignment::BEGIN,
5554 Text::VerticalAlignment::TOP,
5559 Dali::LayoutDirection::LEFT_TO_RIGHT,
5563 if( !AlignTest( data ) )
5565 tet_result(TET_FAIL);
5568 tet_result(TET_PASS);
5572 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5574 ToolkitTestApplication application;
5575 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5577 Layout::Engine engine;
5578 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5580 engine.SetDefaultLineSpacing( 10.f );
5581 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5583 tet_result(TET_PASS);
5587 int UtcDaliTextLayoutGetGlyphMetrics(void)
5589 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
5591 // Test retrieving metrics from group of characters
5593 const std::string fontFamily( "TizenSansHindi" );
5595 // Set a known font description
5596 FontDescriptionRun fontDescriptionRun01;
5597 fontDescriptionRun01.characterRun.characterIndex = 0u;
5598 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
5599 fontDescriptionRun01.familyLength = fontFamily.size();
5600 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5601 memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength );
5602 fontDescriptionRun01.familyDefined = true;
5603 fontDescriptionRun01.weightDefined = false;
5604 fontDescriptionRun01.widthDefined = false;
5605 fontDescriptionRun01.slantDefined = false;
5606 fontDescriptionRun01.sizeDefined = false;
5608 // Set a known font description
5609 FontDescriptionRun fontDescriptionRun02;
5610 fontDescriptionRun02.characterRun.characterIndex = 0u;
5611 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
5612 fontDescriptionRun02.familyLength = fontFamily.size();
5613 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5614 memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength );
5615 fontDescriptionRun02.familyDefined = true;
5616 fontDescriptionRun02.weightDefined = false;
5617 fontDescriptionRun02.widthDefined = false;
5618 fontDescriptionRun02.slantDefined = false;
5619 fontDescriptionRun02.sizeDefined = false;
5621 // Set a known font description
5622 FontDescriptionRun fontDescriptionRun03;
5623 fontDescriptionRun03.characterRun.characterIndex = 0u;
5624 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
5625 fontDescriptionRun03.familyLength = fontFamily.size();
5626 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5627 memcpy( fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength );
5628 fontDescriptionRun03.familyDefined = true;
5629 fontDescriptionRun03.weightDefined = false;
5630 fontDescriptionRun03.widthDefined = false;
5631 fontDescriptionRun03.slantDefined = false;
5632 fontDescriptionRun03.sizeDefined = false;
5634 Vector<FontDescriptionRun> fontDescriptionRuns01;
5635 fontDescriptionRuns01.PushBack( fontDescriptionRun01 );
5637 Vector<FontDescriptionRun> fontDescriptionRuns02;
5638 fontDescriptionRuns02.PushBack( fontDescriptionRun02 );
5640 Vector<FontDescriptionRun> fontDescriptionRuns03;
5641 fontDescriptionRuns03.PushBack( fontDescriptionRun03 );
5644 Size textArea(100.f, 100.f);
5647 // Group: second glyph doesn't exceed the width of the first glyph
5648 float positions01[] = { 0.f, -11.f };
5650 struct LineRun line01 =
5663 Vector<LineRun> lines01;
5664 lines01.PushBack( line01 );
5666 Size layoutSize01 = Vector2(11.f, 19.f);
5668 // Group: second glyph doesn't exceed the width of the first glyph
5669 float positions02[] = { 0.f, -11.f , 7.f, -15.f };
5671 struct LineRun line02 =
5684 Vector<LineRun> lines02;
5685 lines02.PushBack( line02 );
5687 Size layoutSize02 = Vector2(15.f, 19.f);
5689 // Group: second glyph doesn't exceed the width of the first glyph
5690 float positions03[] = { 0.f, -11.f , 2.f, -15.f };
5692 struct LineRun line03 =
5705 Vector<LineRun> lines03;
5706 lines03.PushBack( line03 );
5708 Size layoutSize03 = Vector2(11.f, 19.f);
5710 /////////////////////////////
5712 struct LayoutTextData data[] =
5719 fontDescriptionRuns01.Begin(),
5725 Layout::Engine::SINGLE_LINE_BOX,
5732 "Group: second glyph exceeds the width of the first glyph",
5736 fontDescriptionRuns02.Begin(),
5742 Layout::Engine::SINGLE_LINE_BOX,
5749 "Group: second glyph doesn't exceed the width of the first glyph",
5753 fontDescriptionRuns03.Begin(),
5759 Layout::Engine::SINGLE_LINE_BOX,
5766 const unsigned int numberOfTests = sizeof(data)/sizeof(LayoutTextData);
5768 for( unsigned int index = 0u; index < numberOfTests; ++index )
5770 ToolkitTestApplication application;
5771 if( !LayoutTextTest( data[index] ) )
5773 tet_result(TET_FAIL);
5777 tet_result(TET_PASS);