2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
114 // 2) Clear the layout.
115 Vector<LineRun>& lines = visualModel->mLines;
117 const Length numberOfCharacters = logicalModel->mText.Count();
118 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
119 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
120 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
122 LineIndex startRemoveIndex = 0u;
124 if( 0u != lines.Count() )
126 startRemoveIndex = lines.Count();
127 LineIndex endRemoveIndex = startRemoveIndex;
128 ClearGlyphRuns( data.startIndex,
129 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
134 // Update the character runs of the lines.
135 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
136 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
137 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
138 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
139 ClearCharacterRuns( startCharacterIndex,
140 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
145 lines.Erase( lines.Begin() + startRemoveIndex,
146 lines.Begin() + endRemoveIndex );
149 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
151 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
152 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
155 Layout::Engine engine;
156 engine.SetMetrics( metrics );
157 engine.SetLayout( data.layout );
159 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
160 float outlineWidth = visualModel->GetOutlineWidth();
162 Layout::Parameters layoutParameters( data.textArea,
163 logicalModel->mText.Begin(),
164 logicalModel->mLineBreakInfo.Begin(),
165 logicalModel->mWordBreakInfo.Begin(),
166 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
167 visualModel->mGlyphs.Begin(),
168 visualModel->mGlyphsToCharacters.Begin(),
169 visualModel->mCharactersPerGlyph.Begin(),
170 visualModel->mCharactersToGlyph.Begin(),
171 visualModel->mGlyphsPerCharacter.Begin(),
173 Text::HorizontalAlignment::BEGIN,
174 Text::LineWrap::WORD,
177 layoutParameters.isLastNewParagraph = isLastNewParagraph;
179 // The initial glyph and the number of glyphs to layout.
180 layoutParameters.startGlyphIndex = data.startIndex;
181 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
182 layoutParameters.startLineIndex = startRemoveIndex;
183 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
185 layoutSize = Vector2::ZERO;
187 const bool updated = engine.LayoutText( layoutParameters,
193 // 4) Compare the results.
195 if( updated != data.updated )
197 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
201 if( layoutSize != data.layoutSize )
203 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
207 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
209 const Vector2& position = *( glyphPositions.Begin() + index );
211 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
213 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
216 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
218 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
223 if( lines.Count() != data.numberOfLines )
225 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
229 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
231 const LineRun& line = *( lines.Begin() + index );
232 const LineRun& expectedLine = *( data.lines + index );
234 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
236 std::cout << " Different line info for line : " << index << std::endl;
238 std::cout << " expected" << std::endl;
239 Print( expectedLine );
242 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
244 std::cout << " Different line info for line : " << index << std::endl;
246 std::cout << " expected" << std::endl;
247 Print( expectedLine );
251 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
253 std::cout << " Different line info for line : " << index << std::endl;
255 std::cout << " expected" << std::endl;
256 Print( expectedLine );
259 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
261 std::cout << " Different line info for line : " << index << std::endl;
263 std::cout << " expected" << std::endl;
264 Print( expectedLine );
268 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
270 std::cout << " Different line info for line : " << index << std::endl;
272 std::cout << " expected" << std::endl;
273 Print( expectedLine );
277 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
279 std::cout << " Different line info for line : " << index << std::endl;
281 std::cout << " expected" << std::endl;
282 Print( expectedLine );
286 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
288 std::cout << " Different line info for line : " << index << std::endl;
290 std::cout << " expected" << std::endl;
291 Print( expectedLine );
295 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
297 std::cout << " Different line info for line : " << index << std::endl;
299 std::cout << " expected" << std::endl;
300 Print( expectedLine );
304 if( line.ellipsis != expectedLine.ellipsis )
306 std::cout << " Different line info for line : " << index << std::endl;
308 std::cout << " expected" << std::endl;
309 Print( expectedLine );
313 // Do not compare the alignment offset as it's not calculated in the layout.
314 // Do not compare the line direction as it's not set in the layout.
320 //////////////////////////////////////////////////////////
322 struct ReLayoutRightToLeftLinesData
324 std::string description;
327 unsigned int numberOfFonts;
328 FontDescriptionRun* fontDescriptions;
329 unsigned int totalNumberOfGlyphs;
331 unsigned int startIndex;
332 unsigned int numberOfCharacters;
335 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
338 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
339 fontClient.SetDpi( 96u, 96u );
341 char* pathNamePtr = get_current_dir_name();
342 const std::string pathName( pathNamePtr );
345 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
346 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
347 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
349 // 1) Create the model.
350 LogicalModelPtr logicalModel;
351 VisualModelPtr visualModel;
355 Vector<FontDescriptionRun> fontDescriptionRuns;
356 if( 0u != data.numberOfFonts )
358 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
359 data.fontDescriptions,
360 data.fontDescriptions + data.numberOfFonts );
363 LayoutOptions options;
364 options.reorder = false;
365 options.align = false;
366 CreateTextModel( data.text,
375 // 2) Call the ReLayoutRightToLeftLines() method.
376 Layout::Engine engine;
377 engine.SetMetrics( metrics );
379 float outlineWidth = visualModel->GetOutlineWidth();
380 Layout::Parameters layoutParameters( data.textArea,
381 logicalModel->mText.Begin(),
382 logicalModel->mLineBreakInfo.Begin(),
383 logicalModel->mWordBreakInfo.Begin(),
384 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
385 visualModel->mGlyphs.Begin(),
386 visualModel->mGlyphsToCharacters.Begin(),
387 visualModel->mCharactersPerGlyph.Begin(),
388 visualModel->mCharactersToGlyph.Begin(),
389 visualModel->mGlyphsPerCharacter.Begin(),
390 visualModel->mGlyphs.Count(),
391 Text::HorizontalAlignment::BEGIN,
392 Text::LineWrap::WORD,
395 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
396 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
398 engine.ReLayoutRightToLeftLines( layoutParameters,
400 data.numberOfCharacters,
401 visualModel->mGlyphPositions );
403 // 3) Compare the results.
404 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
406 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
408 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
412 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
414 const Vector2& position = *( glyphPositions.Begin() + index );
416 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
418 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
421 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
423 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
431 //////////////////////////////////////////////////////////
435 std::string description;
438 unsigned int numberOfFonts;
439 FontDescriptionRun* fontDescriptions;
440 Text::HorizontalAlignment::Type horizontalAlignment;
441 Text::VerticalAlignment::Type verticalAlignment;
442 unsigned int startIndex;
443 unsigned int numberOfCharacters;
444 unsigned int numberOfLines;
448 bool AlignTest( const AlignData& data )
451 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
452 fontClient.SetDpi( 96u, 96u );
454 char* pathNamePtr = get_current_dir_name();
455 const std::string pathName( pathNamePtr );
458 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
459 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
460 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
462 // 1) Create the model.
463 LogicalModelPtr logicalModel;
464 VisualModelPtr visualModel;
468 Vector<FontDescriptionRun> fontDescriptionRuns;
469 if( 0u != data.numberOfFonts )
471 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
472 data.fontDescriptions,
473 data.fontDescriptions + data.numberOfFonts );
476 LayoutOptions options;
477 options.align = false;
478 CreateTextModel( data.text,
487 // Call the Align method.
488 Layout::Engine engine;
489 engine.SetMetrics( metrics );
491 float alignmentOffset = 0.f;
492 engine.Align( data.textArea,
494 data.numberOfCharacters,
495 data.horizontalAlignment,
500 if( data.numberOfLines != visualModel->mLines.Count() )
502 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
506 const LineRun* const linesBuffer = visualModel->mLines.Begin();
507 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
509 const LineRun& line = *( linesBuffer + index );
511 if( line.alignmentOffset != *( data.lineOffsets + index ) )
513 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
523 //////////////////////////////////////////////////////////
525 // UtcDaliTextLayoutSetGetLayout
526 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
527 // UtcDaliTextLayoutSetGetHorizontalAlignment
528 // UtcDaliTextLayoutSetGetVerticalAlignment
529 // UtcDaliTextLayoutSetGetCursorWidth
530 // UtcDaliTextLayoutNoText
531 // UtcDaliTextLayoutSmallTextArea01
532 // UtcDaliTextLayoutSmallTextArea02
533 // UtcDaliTextLayoutMultilineText01
534 // UtcDaliTextLayoutMultilineText02
535 // UtcDaliTextLayoutMultilineText03
536 // UtcDaliTextLayoutMultilineText04
537 // UtcDaliTextLayoutMultilineText05
538 // UtcDaliTextUpdateLayout01
539 // UtcDaliTextUpdateLayout02
540 // UtcDaliTextUpdateLayout03
541 // UtcDaliTextLayoutEllipsis01
542 // UtcDaliTextLayoutEllipsis02
543 // UtcDaliTextLayoutEllipsis03
544 // UtcDaliTextLayoutEllipsis04
545 // UtcDaliTextLayoutEllipsis04
546 // UtcDaliTextReorderLayout01
547 // UtcDaliTextReorderLayout02
548 // UtcDaliTextReorderLayout03
549 // UtcDaliTextReorderLayout04
550 // UtcDaliTextAlign01
551 // UtcDaliTextAlign02
552 // UtcDaliTextAlign03
553 // UtcDaliTextAlign04
554 // UtcDaliTextAlign05
555 // UtcDaliTextAlign06
556 // UtcDaliTextAlign07
557 // UtcDaliTextAlign08
558 // UtcDaliTextAlign09
560 //////////////////////////////////////////////////////////
562 int UtcDaliTextLayoutSetGetLayout(void)
564 ToolkitTestApplication application;
565 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
567 Layout::Engine engine;
569 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
571 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
572 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
574 tet_result(TET_PASS);
578 int UtcDaliTextLayoutSetGetCursorWidth(void)
580 ToolkitTestApplication application;
583 Layout::Engine engine;
585 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
587 engine.SetCursorWidth( 2 );
588 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
590 tet_result(TET_PASS);
594 int UtcDaliTextLayoutNoText(void)
596 ToolkitTestApplication application;
597 tet_infoline(" UtcDaliTextLayoutNoText");
599 Size textArea(100.f, 60.f);
600 Size layoutSize = Vector2::ZERO;
601 LayoutTextData data =
613 Layout::Engine::MULTI_LINE_BOX,
620 if( !LayoutTextTest( data ) )
622 tet_result(TET_FAIL);
625 tet_result(TET_PASS);
629 int UtcDaliTextLayoutSmallTextArea01(void)
631 ToolkitTestApplication application;
632 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
634 // Won't layout the text in multi-line if the width is too small.
636 const std::string fontFamily( "TizenSans" );
638 // Set a known font description
639 FontDescriptionRun fontDescriptionRun;
640 fontDescriptionRun.characterRun.characterIndex = 0u;
641 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
642 fontDescriptionRun.familyLength = fontFamily.size();
643 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
644 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
645 fontDescriptionRun.familyDefined = true;
646 fontDescriptionRun.weightDefined = false;
647 fontDescriptionRun.widthDefined = false;
648 fontDescriptionRun.slantDefined = false;
649 fontDescriptionRun.sizeDefined = false;
651 Vector<FontDescriptionRun> fontDescriptionRuns;
652 fontDescriptionRuns.PushBack( fontDescriptionRun );
653 Size textArea(1.f, 1.f);
654 Size layoutSize = Vector2::ZERO;
655 LayoutTextData data =
657 "Layout text in a small area",
661 fontDescriptionRuns.Begin(),
667 Layout::Engine::MULTI_LINE_BOX,
674 if( !LayoutTextTest( data ) )
676 tet_result(TET_FAIL);
679 tet_result(TET_PASS);
683 int UtcDaliTextLayoutSmallTextArea02(void)
685 ToolkitTestApplication application;
686 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
688 // Will layout the text in single line as it can be scrolled.
690 const std::string fontFamily( "TizenSans" );
692 // Set a known font description
693 FontDescriptionRun fontDescriptionRun;
694 fontDescriptionRun.characterRun.characterIndex = 0u;
695 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
696 fontDescriptionRun.familyLength = fontFamily.size();
697 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
698 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
699 fontDescriptionRun.familyDefined = true;
700 fontDescriptionRun.weightDefined = false;
701 fontDescriptionRun.widthDefined = false;
702 fontDescriptionRun.slantDefined = false;
703 fontDescriptionRun.sizeDefined = false;
705 Vector<FontDescriptionRun> fontDescriptionRuns;
706 fontDescriptionRuns.PushBack( fontDescriptionRun );
707 Size textArea(1.f, 1.f);
708 Size layoutSize(80.f, 20.f);
709 float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
710 struct LineRun line =
723 Vector<LineRun> lines;
724 lines.PushBack( line );
726 LayoutTextData data =
728 "Layout text in a small area",
732 fontDescriptionRuns.Begin(),
738 Layout::Engine::SINGLE_LINE_BOX,
745 if( !LayoutTextTest( data ) )
747 tet_result(TET_FAIL);
750 tet_result(TET_PASS);
754 int UtcDaliTextLayoutMultilineText01(void)
756 ToolkitTestApplication application;
757 tet_infoline(" UtcDaliTextLayoutMultilineText01");
759 // Layout some lines of left to right text.
761 const std::string fontFamily( "TizenSans" );
763 // Set a known font description
764 FontDescriptionRun fontDescriptionRun1;
765 fontDescriptionRun1.characterRun.characterIndex = 0u;
766 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
767 fontDescriptionRun1.familyLength = fontFamily.size();
768 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
769 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
770 fontDescriptionRun1.familyDefined = true;
771 fontDescriptionRun1.weightDefined = false;
772 fontDescriptionRun1.widthDefined = false;
773 fontDescriptionRun1.slantDefined = false;
774 fontDescriptionRun1.sizeDefined = false;
776 FontDescriptionRun fontDescriptionRun2;
777 fontDescriptionRun2.characterRun.characterIndex = 18u;
778 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
779 fontDescriptionRun2.familyLength = fontFamily.size();
780 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
781 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
782 fontDescriptionRun2.familyDefined = true;
783 fontDescriptionRun2.weightDefined = false;
784 fontDescriptionRun2.widthDefined = false;
785 fontDescriptionRun2.slantDefined = false;
786 fontDescriptionRun2.sizeDefined = false;
788 Vector<FontDescriptionRun> fontDescriptionRuns;
789 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
790 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
791 Size textArea(100.f, 300.f);
792 Size layoutSize(95.f, 97.f);
795 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
796 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
797 1.f, -12.f, 9.f, -9.f, 17.f, -9.f, 27.f, -9.f, 36.f, -9.f, 45.f, -11.f, 51.f, -0.f,
798 1.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 41.f, -9.f, 50.f, -9.f, 59.f, -11.f, 65.f, -0.f,
799 1.f, -12.f, 5.f, -12.f, 9.f, -9.f, 19.f, -9.f, 28.f, -9.f, 35.f, -0.f, 41.f, -9.f, 50.f, -12.f, 54.f, -0.f, 59.f, -11.f, 66.f, -9.f, 75.f, -9.f, 83.f, -11.f, 91.f, -2.f
801 struct LineRun line0 =
814 struct LineRun line1 =
827 struct LineRun line2 =
840 struct LineRun line3 =
853 struct LineRun line4 =
866 Vector<LineRun> lines;
867 lines.PushBack( line0 );
868 lines.PushBack( line1 );
869 lines.PushBack( line2 );
870 lines.PushBack( line3 );
871 lines.PushBack( line4 );
873 LayoutTextData data =
875 "Layout simple multi-line text",
876 "Hello world demo.\n"
877 "Layout different lines of text.",
880 fontDescriptionRuns.Begin(),
886 Layout::Engine::MULTI_LINE_BOX,
893 if( !LayoutTextTest( data ) )
895 tet_result(TET_FAIL);
898 tet_result(TET_PASS);
902 int UtcDaliTextLayoutMultilineText02(void)
904 ToolkitTestApplication application;
905 tet_infoline(" UtcDaliTextLayoutMultilineText02");
907 // Layout some lines of bidirectional text.
909 const std::string fontFamily1( "TizenSans" );
911 // Set a known font description
912 FontDescriptionRun fontDescriptionRun1;
913 fontDescriptionRun1.characterRun.characterIndex = 0u;
914 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
915 fontDescriptionRun1.familyLength = fontFamily1.size();
916 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
917 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
918 fontDescriptionRun1.familyDefined = true;
919 fontDescriptionRun1.weightDefined = false;
920 fontDescriptionRun1.widthDefined = false;
921 fontDescriptionRun1.slantDefined = false;
922 fontDescriptionRun1.sizeDefined = false;
924 const std::string fontFamily2( "TizenSansHebrew" );
926 // Set a known font description
927 FontDescriptionRun fontDescriptionRun2;
928 fontDescriptionRun2.characterRun.characterIndex = 17u;
929 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
930 fontDescriptionRun2.familyLength = fontFamily2.size();
931 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
932 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
933 fontDescriptionRun2.familyDefined = true;
934 fontDescriptionRun2.weightDefined = false;
935 fontDescriptionRun2.widthDefined = false;
936 fontDescriptionRun2.slantDefined = false;
937 fontDescriptionRun2.sizeDefined = false;
939 const std::string fontFamily3( "TizenSans" );
941 // Set a known font description
942 FontDescriptionRun fontDescriptionRun3;
943 fontDescriptionRun3.characterRun.characterIndex = 26u;
944 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
945 fontDescriptionRun3.familyLength = fontFamily3.size();
946 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
947 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
948 fontDescriptionRun3.familyDefined = true;
949 fontDescriptionRun3.weightDefined = false;
950 fontDescriptionRun3.widthDefined = false;
951 fontDescriptionRun3.slantDefined = false;
952 fontDescriptionRun3.sizeDefined = false;
954 const std::string fontFamily4( "TizenSansHebrew" );
956 // Set a known font description
957 FontDescriptionRun fontDescriptionRun4;
958 fontDescriptionRun4.characterRun.characterIndex = 28u;
959 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
960 fontDescriptionRun4.familyLength = fontFamily4.size();
961 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
962 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
963 fontDescriptionRun4.familyDefined = true;
964 fontDescriptionRun4.weightDefined = false;
965 fontDescriptionRun4.widthDefined = false;
966 fontDescriptionRun4.slantDefined = false;
967 fontDescriptionRun4.sizeDefined = false;
969 const std::string fontFamily5( "TizenSans" );
971 // Set a known font description
972 FontDescriptionRun fontDescriptionRun5;
973 fontDescriptionRun5.characterRun.characterIndex = 38u;
974 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
975 fontDescriptionRun5.familyLength = fontFamily5.size();
976 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
977 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
978 fontDescriptionRun5.familyDefined = true;
979 fontDescriptionRun5.weightDefined = false;
980 fontDescriptionRun5.widthDefined = false;
981 fontDescriptionRun5.slantDefined = false;
982 fontDescriptionRun5.sizeDefined = false;
984 Vector<FontDescriptionRun> fontDescriptionRuns;
985 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
986 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
987 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
988 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
989 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
990 Size textArea(100.f, 300.f);
991 Size layoutSize(80.f, 120.f);
994 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
995 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,
996 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
997 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
998 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
999 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1001 struct LineRun line0 =
1014 struct LineRun line1 =
1027 struct LineRun line2 =
1040 struct LineRun line3 =
1053 struct LineRun line4 =
1066 struct LineRun line5 =
1079 Vector<LineRun> lines;
1080 lines.PushBack( line0 );
1081 lines.PushBack( line1 );
1082 lines.PushBack( line2 );
1083 lines.PushBack( line3 );
1084 lines.PushBack( line4 );
1085 lines.PushBack( line5 );
1087 LayoutTextData data =
1089 "Layout bidirectional text.",
1090 "Hello world demo שלום עולם.\n"
1091 "שלום עולם hello world demo.",
1094 fontDescriptionRuns.Begin(),
1100 Layout::Engine::MULTI_LINE_BOX,
1107 if( !LayoutTextTest( data ) )
1109 tet_result(TET_FAIL);
1112 tet_result(TET_PASS);
1116 int UtcDaliTextLayoutMultilineText03(void)
1118 ToolkitTestApplication application;
1119 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1121 // Layout a long word which doesn't fit in the width of the text area.
1123 const std::string fontFamily( "TizenSans" );
1125 // Set a known font description
1126 FontDescriptionRun fontDescriptionRun;
1127 fontDescriptionRun.characterRun.characterIndex = 0u;
1128 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1129 fontDescriptionRun.familyLength = fontFamily.size();
1130 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1131 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1132 fontDescriptionRun.familyDefined = true;
1133 fontDescriptionRun.weightDefined = false;
1134 fontDescriptionRun.widthDefined = false;
1135 fontDescriptionRun.slantDefined = false;
1136 fontDescriptionRun.sizeDefined = false;
1138 Vector<FontDescriptionRun> fontDescriptionRuns;
1139 fontDescriptionRuns.PushBack( fontDescriptionRun );
1140 Size textArea(100.f, 300.f);
1141 Size layoutSize(96.f, 60.f);
1144 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f,
1145 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f,
1146 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1148 struct LineRun line0 =
1161 struct LineRun line1 =
1174 struct LineRun line2 =
1187 Vector<LineRun> lines;
1188 lines.PushBack( line0 );
1189 lines.PushBack( line1 );
1190 lines.PushBack( line2 );
1192 LayoutTextData data =
1194 "Layout a long word which doesn't fit in the width of the text area.",
1195 "Helloworlddemohelloworlddemo.",
1198 fontDescriptionRuns.Begin(),
1204 Layout::Engine::MULTI_LINE_BOX,
1211 if( !LayoutTextTest( data ) )
1213 tet_result(TET_FAIL);
1216 tet_result(TET_PASS);
1220 int UtcDaliTextLayoutMultilineText04(void)
1222 ToolkitTestApplication application;
1223 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1225 // Layout simple text ending with a \n. It has to add a void line at the end.
1227 const std::string fontFamily( "TizenSans" );
1229 // Set a known font description
1230 FontDescriptionRun fontDescriptionRun;
1231 fontDescriptionRun.characterRun.characterIndex = 0u;
1232 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1233 fontDescriptionRun.familyLength = fontFamily.size();
1234 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1235 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1236 fontDescriptionRun.familyDefined = true;
1237 fontDescriptionRun.weightDefined = false;
1238 fontDescriptionRun.widthDefined = false;
1239 fontDescriptionRun.slantDefined = false;
1240 fontDescriptionRun.sizeDefined = false;
1242 Vector<FontDescriptionRun> fontDescriptionRuns;
1243 fontDescriptionRuns.PushBack( fontDescriptionRun );
1244 Size textArea(100.f, 300.f);
1245 Size layoutSize(83.f, 40.f);
1248 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f
1250 struct LineRun line0 =
1262 struct LineRun line1 =
1275 Vector<LineRun> lines;
1276 lines.PushBack( line0 );
1277 lines.PushBack( line1 );
1279 LayoutTextData data =
1281 "Layout simple text ending with a \n.",
1285 fontDescriptionRuns.Begin(),
1291 Layout::Engine::MULTI_LINE_BOX,
1298 if( !LayoutTextTest( data ) )
1300 tet_result(TET_FAIL);
1303 tet_result(TET_PASS);
1307 int UtcDaliTextLayoutMultilineText05(void)
1309 ToolkitTestApplication application;
1310 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1312 // Layout simple text with one character with a different font size.
1314 const std::string fontFamily( "TizenSans" );
1316 // Set a known font description
1317 FontDescriptionRun fontDescriptionRun1;
1318 fontDescriptionRun1.characterRun.characterIndex = 0u;
1319 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1320 fontDescriptionRun1.familyLength = fontFamily.size();
1321 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1322 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1323 fontDescriptionRun1.familyDefined = true;
1324 fontDescriptionRun1.weightDefined = false;
1325 fontDescriptionRun1.widthDefined = false;
1326 fontDescriptionRun1.slantDefined = false;
1327 fontDescriptionRun1.sizeDefined = false;
1329 FontDescriptionRun fontDescriptionRun2;
1330 fontDescriptionRun2.characterRun.characterIndex = 6u;
1331 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1332 fontDescriptionRun2.familyLength = fontFamily.size();
1333 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1334 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1335 fontDescriptionRun2.size = 1280u;
1336 fontDescriptionRun2.familyDefined = true;
1337 fontDescriptionRun2.weightDefined = false;
1338 fontDescriptionRun2.widthDefined = false;
1339 fontDescriptionRun2.slantDefined = false;
1340 fontDescriptionRun2.sizeDefined = true;
1342 FontDescriptionRun fontDescriptionRun3;
1343 fontDescriptionRun3.characterRun.characterIndex = 7u;
1344 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1345 fontDescriptionRun3.familyLength = fontFamily.size();
1346 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1347 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1348 fontDescriptionRun3.familyDefined = true;
1349 fontDescriptionRun3.weightDefined = false;
1350 fontDescriptionRun3.widthDefined = false;
1351 fontDescriptionRun3.slantDefined = false;
1352 fontDescriptionRun3.sizeDefined = false;
1354 Vector<FontDescriptionRun> fontDescriptionRuns;
1355 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1356 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1357 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1358 Size textArea(100.f, 300.f);
1359 Size layoutSize(88.f, 53.f);
1362 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1363 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1365 struct LineRun line0 =
1378 struct LineRun line1 =
1391 Vector<LineRun> lines;
1392 lines.PushBack( line0 );
1393 lines.PushBack( line1 );
1395 LayoutTextData data =
1397 "Layout simple text with one character with a different font size.",
1398 "Hello world demo.",
1401 fontDescriptionRuns.Begin(),
1407 Layout::Engine::MULTI_LINE_BOX,
1414 if( !LayoutTextTest( data ) )
1416 tet_result(TET_FAIL);
1419 tet_result(TET_PASS);
1423 int UtcDaliTextUpdateLayout01(void)
1425 ToolkitTestApplication application;
1426 tet_infoline(" UtcDaliTextUpdateLayout01");
1428 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1430 const std::string fontLatin( "TizenSans" );
1431 const std::string fontHebrew( "TizenSansHebrew" );
1432 const std::string fontArabic( "TizenSansArabic" );
1434 // Set a known font description
1435 FontDescriptionRun fontDescriptionRun01;
1436 fontDescriptionRun01.characterRun.characterIndex = 0u;
1437 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1438 fontDescriptionRun01.familyLength = fontLatin.size();
1439 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1440 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1441 fontDescriptionRun01.familyDefined = true;
1442 fontDescriptionRun01.weightDefined = false;
1443 fontDescriptionRun01.widthDefined = false;
1444 fontDescriptionRun01.slantDefined = false;
1445 fontDescriptionRun01.sizeDefined = false;
1447 // Set a known font description
1448 FontDescriptionRun fontDescriptionRun02;
1449 fontDescriptionRun02.characterRun.characterIndex = 17u;
1450 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1451 fontDescriptionRun02.familyLength = fontHebrew.size();
1452 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1453 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1454 fontDescriptionRun02.familyDefined = true;
1455 fontDescriptionRun02.weightDefined = false;
1456 fontDescriptionRun02.widthDefined = false;
1457 fontDescriptionRun02.slantDefined = false;
1458 fontDescriptionRun02.sizeDefined = false;
1460 // Set a known font description
1461 FontDescriptionRun fontDescriptionRun03;
1462 fontDescriptionRun03.characterRun.characterIndex = 26u;
1463 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1464 fontDescriptionRun03.familyLength = fontLatin.size();
1465 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1466 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1467 fontDescriptionRun03.familyDefined = true;
1468 fontDescriptionRun03.weightDefined = false;
1469 fontDescriptionRun03.widthDefined = false;
1470 fontDescriptionRun03.slantDefined = false;
1471 fontDescriptionRun03.sizeDefined = false;
1473 // Set a known font description
1474 FontDescriptionRun fontDescriptionRun04;
1475 fontDescriptionRun04.characterRun.characterIndex = 28u;
1476 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1477 fontDescriptionRun04.familyLength = fontArabic.size();
1478 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1479 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1480 fontDescriptionRun04.familyDefined = true;
1481 fontDescriptionRun04.weightDefined = false;
1482 fontDescriptionRun04.widthDefined = false;
1483 fontDescriptionRun04.slantDefined = false;
1484 fontDescriptionRun04.sizeDefined = false;
1486 // Set a known font description
1487 FontDescriptionRun fontDescriptionRun05;
1488 fontDescriptionRun05.characterRun.characterIndex = 42u;
1489 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1490 fontDescriptionRun05.familyLength = fontLatin.size();
1491 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1492 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1493 fontDescriptionRun05.familyDefined = true;
1494 fontDescriptionRun05.weightDefined = false;
1495 fontDescriptionRun05.widthDefined = false;
1496 fontDescriptionRun05.slantDefined = false;
1497 fontDescriptionRun05.sizeDefined = false;
1499 // Set a known font description
1500 FontDescriptionRun fontDescriptionRun06;
1501 fontDescriptionRun06.characterRun.characterIndex = 54u;
1502 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1503 fontDescriptionRun06.familyLength = fontHebrew.size();
1504 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1505 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1506 fontDescriptionRun06.familyDefined = true;
1507 fontDescriptionRun06.weightDefined = false;
1508 fontDescriptionRun06.widthDefined = false;
1509 fontDescriptionRun06.slantDefined = false;
1510 fontDescriptionRun06.sizeDefined = false;
1512 // Set a known font description
1513 FontDescriptionRun fontDescriptionRun07;
1514 fontDescriptionRun07.characterRun.characterIndex = 64u;
1515 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1516 fontDescriptionRun07.familyLength = fontHebrew.size();
1517 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1518 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1519 fontDescriptionRun07.familyDefined = true;
1520 fontDescriptionRun07.weightDefined = false;
1521 fontDescriptionRun07.widthDefined = false;
1522 fontDescriptionRun07.slantDefined = false;
1523 fontDescriptionRun07.sizeDefined = false;
1525 // Set a known font description
1526 FontDescriptionRun fontDescriptionRun08;
1527 fontDescriptionRun08.characterRun.characterIndex = 74u;
1528 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1529 fontDescriptionRun08.familyLength = fontLatin.size();
1530 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1531 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1532 fontDescriptionRun08.familyDefined = true;
1533 fontDescriptionRun08.weightDefined = false;
1534 fontDescriptionRun08.widthDefined = false;
1535 fontDescriptionRun08.slantDefined = false;
1536 fontDescriptionRun08.sizeDefined = false;
1538 // Set a known font description
1539 FontDescriptionRun fontDescriptionRun09;
1540 fontDescriptionRun09.characterRun.characterIndex = 92u;
1541 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1542 fontDescriptionRun09.familyLength = fontLatin.size();
1543 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1544 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1545 fontDescriptionRun09.familyDefined = true;
1546 fontDescriptionRun09.weightDefined = false;
1547 fontDescriptionRun09.widthDefined = false;
1548 fontDescriptionRun09.slantDefined = false;
1549 fontDescriptionRun09.sizeDefined = false;
1551 // Set a known font description
1552 FontDescriptionRun fontDescriptionRun10;
1553 fontDescriptionRun10.characterRun.characterIndex = 104u;
1554 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1555 fontDescriptionRun10.familyLength = fontArabic.size();
1556 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1557 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1558 fontDescriptionRun10.familyDefined = true;
1559 fontDescriptionRun10.weightDefined = false;
1560 fontDescriptionRun10.widthDefined = false;
1561 fontDescriptionRun10.slantDefined = false;
1562 fontDescriptionRun10.sizeDefined = false;
1564 // Set a known font description
1565 FontDescriptionRun fontDescriptionRun11;
1566 fontDescriptionRun11.characterRun.characterIndex = 118u;
1567 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1568 fontDescriptionRun11.familyLength = fontHebrew.size();
1569 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1570 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1571 fontDescriptionRun11.familyDefined = true;
1572 fontDescriptionRun11.weightDefined = false;
1573 fontDescriptionRun11.widthDefined = false;
1574 fontDescriptionRun11.slantDefined = false;
1575 fontDescriptionRun11.sizeDefined = false;
1577 // Set a known font description
1578 FontDescriptionRun fontDescriptionRun12;
1579 fontDescriptionRun12.characterRun.characterIndex = 128u;
1580 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1581 fontDescriptionRun12.familyLength = fontLatin.size();
1582 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1583 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1584 fontDescriptionRun12.familyDefined = true;
1585 fontDescriptionRun12.weightDefined = false;
1586 fontDescriptionRun12.widthDefined = false;
1587 fontDescriptionRun12.slantDefined = false;
1588 fontDescriptionRun12.sizeDefined = false;
1590 // Set a known font description
1591 FontDescriptionRun fontDescriptionRun13;
1592 fontDescriptionRun13.characterRun.characterIndex = 145u;
1593 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1594 fontDescriptionRun13.familyLength = fontHebrew.size();
1595 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1596 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1597 fontDescriptionRun13.familyDefined = true;
1598 fontDescriptionRun13.weightDefined = false;
1599 fontDescriptionRun13.widthDefined = false;
1600 fontDescriptionRun13.slantDefined = false;
1601 fontDescriptionRun13.sizeDefined = false;
1603 // Set a known font description
1604 FontDescriptionRun fontDescriptionRun14;
1605 fontDescriptionRun14.characterRun.characterIndex = 154u;
1606 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1607 fontDescriptionRun14.familyLength = fontLatin.size();
1608 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1609 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1610 fontDescriptionRun14.familyDefined = true;
1611 fontDescriptionRun14.weightDefined = false;
1612 fontDescriptionRun14.widthDefined = false;
1613 fontDescriptionRun14.slantDefined = false;
1614 fontDescriptionRun14.sizeDefined = false;
1616 // Set a known font description
1617 FontDescriptionRun fontDescriptionRun15;
1618 fontDescriptionRun15.characterRun.characterIndex = 156u;
1619 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1620 fontDescriptionRun15.familyLength = fontHebrew.size();
1621 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1622 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1623 fontDescriptionRun15.familyDefined = true;
1624 fontDescriptionRun15.weightDefined = false;
1625 fontDescriptionRun15.widthDefined = false;
1626 fontDescriptionRun15.slantDefined = false;
1627 fontDescriptionRun15.sizeDefined = false;
1629 // Set a known font description
1630 FontDescriptionRun fontDescriptionRun16;
1631 fontDescriptionRun16.characterRun.characterIndex = 166u;
1632 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1633 fontDescriptionRun16.familyLength = fontLatin.size();
1634 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1635 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1636 fontDescriptionRun16.familyDefined = true;
1637 fontDescriptionRun16.weightDefined = false;
1638 fontDescriptionRun16.widthDefined = false;
1639 fontDescriptionRun16.slantDefined = false;
1640 fontDescriptionRun16.sizeDefined = false;
1642 // Set a known font description
1643 FontDescriptionRun fontDescriptionRun17;
1644 fontDescriptionRun17.characterRun.characterIndex = 178u;
1645 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1646 fontDescriptionRun17.familyLength = fontArabic.size();
1647 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1648 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1649 fontDescriptionRun17.familyDefined = true;
1650 fontDescriptionRun17.weightDefined = false;
1651 fontDescriptionRun17.widthDefined = false;
1652 fontDescriptionRun17.slantDefined = false;
1653 fontDescriptionRun17.sizeDefined = false;
1655 Vector<FontDescriptionRun> fontDescriptionRuns;
1656 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1657 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1658 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1659 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1660 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1661 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1662 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1663 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1664 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1665 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1666 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1667 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1668 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1673 Size textArea(100.f, 300.f);
1674 Size layoutSize(92.f, 380.f);
1677 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1678 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,
1679 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1680 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,
1681 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,
1682 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1683 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
1684 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1685 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1686 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1687 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,
1688 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1689 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1690 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1691 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1692 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
1693 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1694 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,
1697 struct LineRun line01 =
1710 struct LineRun line02 =
1723 struct LineRun line03 =
1736 struct LineRun line04 =
1749 struct LineRun line05 =
1762 struct LineRun line06 =
1775 struct LineRun line07 =
1788 struct LineRun line08 =
1801 struct LineRun line09 =
1814 struct LineRun line10 =
1827 struct LineRun line11 =
1840 struct LineRun line12 =
1853 struct LineRun line13 =
1866 struct LineRun line14 =
1879 struct LineRun line15 =
1892 struct LineRun line16 =
1905 struct LineRun line17 =
1918 struct LineRun line18 =
1931 struct LineRun line19 =
1944 Vector<LineRun> lines;
1945 lines.PushBack( line01 );
1946 lines.PushBack( line02 );
1947 lines.PushBack( line03 );
1948 lines.PushBack( line04 );
1949 lines.PushBack( line05 );
1950 lines.PushBack( line06 );
1951 lines.PushBack( line07 );
1952 lines.PushBack( line08 );
1953 lines.PushBack( line09 );
1954 lines.PushBack( line10 );
1955 lines.PushBack( line11 );
1956 lines.PushBack( line12 );
1957 lines.PushBack( line13 );
1958 lines.PushBack( line14 );
1959 lines.PushBack( line15 );
1960 lines.PushBack( line16 );
1961 lines.PushBack( line17 );
1962 lines.PushBack( line18 );
1963 lines.PushBack( line19 );
1965 LayoutTextData data =
1967 "Layout bidirectional text.",
1968 "Hello world demo שלום עולם.\n"
1969 "مرحبا بالعالم hello world שלום עולם\n"
1970 "שלום עולם hello world demo.\n"
1971 "hello world مرحبا بالعالم שלום עולם\n"
1972 "Hello world demo שלום עולם.\n"
1973 "שלום עולם hello world مرحبا بالعالم\n",
1976 fontDescriptionRuns.Begin(),
1982 Layout::Engine::MULTI_LINE_BOX,
1989 if( !LayoutTextTest( data ) )
1991 tet_result(TET_FAIL);
1994 tet_result(TET_PASS);
1998 int UtcDaliTextUpdateLayout02(void)
2000 ToolkitTestApplication application;
2001 tet_infoline(" UtcDaliTextUpdateLayout02");
2003 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2005 const std::string fontLatin( "TizenSans" );
2006 const std::string fontHebrew( "TizenSansHebrew" );
2007 const std::string fontArabic( "TizenSansArabic" );
2009 // Set a known font description
2010 FontDescriptionRun fontDescriptionRun01;
2011 fontDescriptionRun01.characterRun.characterIndex = 0u;
2012 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2013 fontDescriptionRun01.familyLength = fontLatin.size();
2014 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2015 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2016 fontDescriptionRun01.familyDefined = true;
2017 fontDescriptionRun01.weightDefined = false;
2018 fontDescriptionRun01.widthDefined = false;
2019 fontDescriptionRun01.slantDefined = false;
2020 fontDescriptionRun01.sizeDefined = false;
2022 // Set a known font description
2023 FontDescriptionRun fontDescriptionRun02;
2024 fontDescriptionRun02.characterRun.characterIndex = 17u;
2025 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2026 fontDescriptionRun02.familyLength = fontHebrew.size();
2027 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2028 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2029 fontDescriptionRun02.familyDefined = true;
2030 fontDescriptionRun02.weightDefined = false;
2031 fontDescriptionRun02.widthDefined = false;
2032 fontDescriptionRun02.slantDefined = false;
2033 fontDescriptionRun02.sizeDefined = false;
2035 // Set a known font description
2036 FontDescriptionRun fontDescriptionRun03;
2037 fontDescriptionRun03.characterRun.characterIndex = 26u;
2038 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2039 fontDescriptionRun03.familyLength = fontLatin.size();
2040 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2041 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2042 fontDescriptionRun03.familyDefined = true;
2043 fontDescriptionRun03.weightDefined = false;
2044 fontDescriptionRun03.widthDefined = false;
2045 fontDescriptionRun03.slantDefined = false;
2046 fontDescriptionRun03.sizeDefined = false;
2048 // Set a known font description
2049 FontDescriptionRun fontDescriptionRun04;
2050 fontDescriptionRun04.characterRun.characterIndex = 28u;
2051 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2052 fontDescriptionRun04.familyLength = fontArabic.size();
2053 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2054 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2055 fontDescriptionRun04.familyDefined = true;
2056 fontDescriptionRun04.weightDefined = false;
2057 fontDescriptionRun04.widthDefined = false;
2058 fontDescriptionRun04.slantDefined = false;
2059 fontDescriptionRun04.sizeDefined = false;
2061 // Set a known font description
2062 FontDescriptionRun fontDescriptionRun05;
2063 fontDescriptionRun05.characterRun.characterIndex = 42u;
2064 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2065 fontDescriptionRun05.familyLength = fontLatin.size();
2066 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2067 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2068 fontDescriptionRun05.familyDefined = true;
2069 fontDescriptionRun05.weightDefined = false;
2070 fontDescriptionRun05.widthDefined = false;
2071 fontDescriptionRun05.slantDefined = false;
2072 fontDescriptionRun05.sizeDefined = false;
2074 // Set a known font description
2075 FontDescriptionRun fontDescriptionRun06;
2076 fontDescriptionRun06.characterRun.characterIndex = 54u;
2077 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2078 fontDescriptionRun06.familyLength = fontHebrew.size();
2079 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2080 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2081 fontDescriptionRun06.familyDefined = true;
2082 fontDescriptionRun06.weightDefined = false;
2083 fontDescriptionRun06.widthDefined = false;
2084 fontDescriptionRun06.slantDefined = false;
2085 fontDescriptionRun06.sizeDefined = false;
2087 // Set a known font description
2088 FontDescriptionRun fontDescriptionRun07;
2089 fontDescriptionRun07.characterRun.characterIndex = 64u;
2090 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2091 fontDescriptionRun07.familyLength = fontHebrew.size();
2092 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2093 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2094 fontDescriptionRun07.familyDefined = true;
2095 fontDescriptionRun07.weightDefined = false;
2096 fontDescriptionRun07.widthDefined = false;
2097 fontDescriptionRun07.slantDefined = false;
2098 fontDescriptionRun07.sizeDefined = false;
2100 // Set a known font description
2101 FontDescriptionRun fontDescriptionRun08;
2102 fontDescriptionRun08.characterRun.characterIndex = 74u;
2103 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2104 fontDescriptionRun08.familyLength = fontLatin.size();
2105 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2106 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2107 fontDescriptionRun08.familyDefined = true;
2108 fontDescriptionRun08.weightDefined = false;
2109 fontDescriptionRun08.widthDefined = false;
2110 fontDescriptionRun08.slantDefined = false;
2111 fontDescriptionRun08.sizeDefined = false;
2113 // Set a known font description
2114 FontDescriptionRun fontDescriptionRun09;
2115 fontDescriptionRun09.characterRun.characterIndex = 92u;
2116 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2117 fontDescriptionRun09.familyLength = fontLatin.size();
2118 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2119 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2120 fontDescriptionRun09.familyDefined = true;
2121 fontDescriptionRun09.weightDefined = false;
2122 fontDescriptionRun09.widthDefined = false;
2123 fontDescriptionRun09.slantDefined = false;
2124 fontDescriptionRun09.sizeDefined = false;
2126 // Set a known font description
2127 FontDescriptionRun fontDescriptionRun10;
2128 fontDescriptionRun10.characterRun.characterIndex = 104u;
2129 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2130 fontDescriptionRun10.familyLength = fontArabic.size();
2131 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2132 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2133 fontDescriptionRun10.familyDefined = true;
2134 fontDescriptionRun10.weightDefined = false;
2135 fontDescriptionRun10.widthDefined = false;
2136 fontDescriptionRun10.slantDefined = false;
2137 fontDescriptionRun10.sizeDefined = false;
2139 // Set a known font description
2140 FontDescriptionRun fontDescriptionRun11;
2141 fontDescriptionRun11.characterRun.characterIndex = 118u;
2142 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2143 fontDescriptionRun11.familyLength = fontHebrew.size();
2144 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2145 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2146 fontDescriptionRun11.familyDefined = true;
2147 fontDescriptionRun11.weightDefined = false;
2148 fontDescriptionRun11.widthDefined = false;
2149 fontDescriptionRun11.slantDefined = false;
2150 fontDescriptionRun11.sizeDefined = false;
2152 // Set a known font description
2153 FontDescriptionRun fontDescriptionRun12;
2154 fontDescriptionRun12.characterRun.characterIndex = 128u;
2155 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2156 fontDescriptionRun12.familyLength = fontLatin.size();
2157 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2158 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2159 fontDescriptionRun12.familyDefined = true;
2160 fontDescriptionRun12.weightDefined = false;
2161 fontDescriptionRun12.widthDefined = false;
2162 fontDescriptionRun12.slantDefined = false;
2163 fontDescriptionRun12.sizeDefined = false;
2165 // Set a known font description
2166 FontDescriptionRun fontDescriptionRun13;
2167 fontDescriptionRun13.characterRun.characterIndex = 145u;
2168 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2169 fontDescriptionRun13.familyLength = fontHebrew.size();
2170 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2171 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2172 fontDescriptionRun13.familyDefined = true;
2173 fontDescriptionRun13.weightDefined = false;
2174 fontDescriptionRun13.widthDefined = false;
2175 fontDescriptionRun13.slantDefined = false;
2176 fontDescriptionRun13.sizeDefined = false;
2178 // Set a known font description
2179 FontDescriptionRun fontDescriptionRun14;
2180 fontDescriptionRun14.characterRun.characterIndex = 154u;
2181 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2182 fontDescriptionRun14.familyLength = fontLatin.size();
2183 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2184 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2185 fontDescriptionRun14.familyDefined = true;
2186 fontDescriptionRun14.weightDefined = false;
2187 fontDescriptionRun14.widthDefined = false;
2188 fontDescriptionRun14.slantDefined = false;
2189 fontDescriptionRun14.sizeDefined = false;
2191 // Set a known font description
2192 FontDescriptionRun fontDescriptionRun15;
2193 fontDescriptionRun15.characterRun.characterIndex = 156u;
2194 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2195 fontDescriptionRun15.familyLength = fontHebrew.size();
2196 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2197 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2198 fontDescriptionRun15.familyDefined = true;
2199 fontDescriptionRun15.weightDefined = false;
2200 fontDescriptionRun15.widthDefined = false;
2201 fontDescriptionRun15.slantDefined = false;
2202 fontDescriptionRun15.sizeDefined = false;
2204 // Set a known font description
2205 FontDescriptionRun fontDescriptionRun16;
2206 fontDescriptionRun16.characterRun.characterIndex = 166u;
2207 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2208 fontDescriptionRun16.familyLength = fontLatin.size();
2209 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2210 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2211 fontDescriptionRun16.familyDefined = true;
2212 fontDescriptionRun16.weightDefined = false;
2213 fontDescriptionRun16.widthDefined = false;
2214 fontDescriptionRun16.slantDefined = false;
2215 fontDescriptionRun16.sizeDefined = false;
2217 // Set a known font description
2218 FontDescriptionRun fontDescriptionRun17;
2219 fontDescriptionRun17.characterRun.characterIndex = 178u;
2220 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2221 fontDescriptionRun17.familyLength = fontArabic.size();
2222 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2223 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2224 fontDescriptionRun17.familyDefined = true;
2225 fontDescriptionRun17.weightDefined = false;
2226 fontDescriptionRun17.widthDefined = false;
2227 fontDescriptionRun17.slantDefined = false;
2228 fontDescriptionRun17.sizeDefined = false;
2230 Vector<FontDescriptionRun> fontDescriptionRuns;
2231 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2232 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2233 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2234 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2235 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2236 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2240 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2241 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2248 Size textArea(100.f, 300.f);
2249 Size layoutSize(92.f, 380.f);
2252 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2253 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,
2254 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2255 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,
2256 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,
2257 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2258 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2259 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2260 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2261 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2262 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,
2263 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2264 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2265 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2266 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2267 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2268 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2269 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,
2272 struct LineRun line01 =
2285 struct LineRun line02 =
2298 struct LineRun line03 =
2311 struct LineRun line04 =
2324 struct LineRun line05 =
2337 struct LineRun line06 =
2350 struct LineRun line07 =
2363 struct LineRun line08 =
2376 struct LineRun line09 =
2389 struct LineRun line10 =
2402 struct LineRun line11 =
2415 struct LineRun line12 =
2428 struct LineRun line13 =
2441 struct LineRun line14 =
2454 struct LineRun line15 =
2467 struct LineRun line16 =
2480 struct LineRun line17 =
2493 struct LineRun line18 =
2506 struct LineRun line19 =
2519 Vector<LineRun> lines;
2520 lines.PushBack( line01 );
2521 lines.PushBack( line02 );
2522 lines.PushBack( line03 );
2523 lines.PushBack( line04 );
2524 lines.PushBack( line05 );
2525 lines.PushBack( line06 );
2526 lines.PushBack( line07 );
2527 lines.PushBack( line08 );
2528 lines.PushBack( line09 );
2529 lines.PushBack( line10 );
2530 lines.PushBack( line11 );
2531 lines.PushBack( line12 );
2532 lines.PushBack( line13 );
2533 lines.PushBack( line14 );
2534 lines.PushBack( line15 );
2535 lines.PushBack( line16 );
2536 lines.PushBack( line17 );
2537 lines.PushBack( line18 );
2538 lines.PushBack( line19 );
2540 LayoutTextData data =
2542 "Layout bidirectional text.",
2543 "Hello world demo שלום עולם.\n"
2544 "مرحبا بالعالم hello world שלום עולם\n"
2545 "שלום עולם hello world demo.\n"
2546 "hello world مرحبا بالعالم שלום עולם\n"
2547 "Hello world demo שלום עולם.\n"
2548 "שלום עולם hello world مرحبا بالعالم\n",
2551 fontDescriptionRuns.Begin(),
2557 Layout::Engine::MULTI_LINE_BOX,
2564 if( !LayoutTextTest( data ) )
2566 tet_result(TET_FAIL);
2569 tet_result(TET_PASS);
2573 int UtcDaliTextUpdateLayout03(void)
2575 ToolkitTestApplication application;
2576 tet_infoline(" UtcDaliTextUpdateLayout03");
2578 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2580 const std::string fontLatin( "TizenSans" );
2581 const std::string fontHebrew( "TizenSansHebrew" );
2582 const std::string fontArabic( "TizenSansArabic" );
2584 // Set a known font description
2585 FontDescriptionRun fontDescriptionRun01;
2586 fontDescriptionRun01.characterRun.characterIndex = 0u;
2587 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2588 fontDescriptionRun01.familyLength = fontLatin.size();
2589 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2590 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2591 fontDescriptionRun01.familyDefined = true;
2592 fontDescriptionRun01.weightDefined = false;
2593 fontDescriptionRun01.widthDefined = false;
2594 fontDescriptionRun01.slantDefined = false;
2595 fontDescriptionRun01.sizeDefined = false;
2597 // Set a known font description
2598 FontDescriptionRun fontDescriptionRun02;
2599 fontDescriptionRun02.characterRun.characterIndex = 17u;
2600 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2601 fontDescriptionRun02.familyLength = fontHebrew.size();
2602 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2603 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2604 fontDescriptionRun02.familyDefined = true;
2605 fontDescriptionRun02.weightDefined = false;
2606 fontDescriptionRun02.widthDefined = false;
2607 fontDescriptionRun02.slantDefined = false;
2608 fontDescriptionRun02.sizeDefined = false;
2610 // Set a known font description
2611 FontDescriptionRun fontDescriptionRun03;
2612 fontDescriptionRun03.characterRun.characterIndex = 26u;
2613 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2614 fontDescriptionRun03.familyLength = fontLatin.size();
2615 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2616 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2617 fontDescriptionRun03.familyDefined = true;
2618 fontDescriptionRun03.weightDefined = false;
2619 fontDescriptionRun03.widthDefined = false;
2620 fontDescriptionRun03.slantDefined = false;
2621 fontDescriptionRun03.sizeDefined = false;
2623 // Set a known font description
2624 FontDescriptionRun fontDescriptionRun04;
2625 fontDescriptionRun04.characterRun.characterIndex = 28u;
2626 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2627 fontDescriptionRun04.familyLength = fontArabic.size();
2628 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2629 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2630 fontDescriptionRun04.familyDefined = true;
2631 fontDescriptionRun04.weightDefined = false;
2632 fontDescriptionRun04.widthDefined = false;
2633 fontDescriptionRun04.slantDefined = false;
2634 fontDescriptionRun04.sizeDefined = false;
2636 // Set a known font description
2637 FontDescriptionRun fontDescriptionRun05;
2638 fontDescriptionRun05.characterRun.characterIndex = 42u;
2639 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2640 fontDescriptionRun05.familyLength = fontLatin.size();
2641 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2642 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2643 fontDescriptionRun05.familyDefined = true;
2644 fontDescriptionRun05.weightDefined = false;
2645 fontDescriptionRun05.widthDefined = false;
2646 fontDescriptionRun05.slantDefined = false;
2647 fontDescriptionRun05.sizeDefined = false;
2649 // Set a known font description
2650 FontDescriptionRun fontDescriptionRun06;
2651 fontDescriptionRun06.characterRun.characterIndex = 54u;
2652 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2653 fontDescriptionRun06.familyLength = fontHebrew.size();
2654 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2655 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2656 fontDescriptionRun06.familyDefined = true;
2657 fontDescriptionRun06.weightDefined = false;
2658 fontDescriptionRun06.widthDefined = false;
2659 fontDescriptionRun06.slantDefined = false;
2660 fontDescriptionRun06.sizeDefined = false;
2662 // Set a known font description
2663 FontDescriptionRun fontDescriptionRun07;
2664 fontDescriptionRun07.characterRun.characterIndex = 64u;
2665 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2666 fontDescriptionRun07.familyLength = fontHebrew.size();
2667 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2668 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2669 fontDescriptionRun07.familyDefined = true;
2670 fontDescriptionRun07.weightDefined = false;
2671 fontDescriptionRun07.widthDefined = false;
2672 fontDescriptionRun07.slantDefined = false;
2673 fontDescriptionRun07.sizeDefined = false;
2675 // Set a known font description
2676 FontDescriptionRun fontDescriptionRun08;
2677 fontDescriptionRun08.characterRun.characterIndex = 74u;
2678 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2679 fontDescriptionRun08.familyLength = fontLatin.size();
2680 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2681 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2682 fontDescriptionRun08.familyDefined = true;
2683 fontDescriptionRun08.weightDefined = false;
2684 fontDescriptionRun08.widthDefined = false;
2685 fontDescriptionRun08.slantDefined = false;
2686 fontDescriptionRun08.sizeDefined = false;
2688 // Set a known font description
2689 FontDescriptionRun fontDescriptionRun09;
2690 fontDescriptionRun09.characterRun.characterIndex = 92u;
2691 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2692 fontDescriptionRun09.familyLength = fontLatin.size();
2693 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2694 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2695 fontDescriptionRun09.familyDefined = true;
2696 fontDescriptionRun09.weightDefined = false;
2697 fontDescriptionRun09.widthDefined = false;
2698 fontDescriptionRun09.slantDefined = false;
2699 fontDescriptionRun09.sizeDefined = false;
2701 // Set a known font description
2702 FontDescriptionRun fontDescriptionRun10;
2703 fontDescriptionRun10.characterRun.characterIndex = 104u;
2704 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2705 fontDescriptionRun10.familyLength = fontArabic.size();
2706 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2707 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2708 fontDescriptionRun10.familyDefined = true;
2709 fontDescriptionRun10.weightDefined = false;
2710 fontDescriptionRun10.widthDefined = false;
2711 fontDescriptionRun10.slantDefined = false;
2712 fontDescriptionRun10.sizeDefined = false;
2714 // Set a known font description
2715 FontDescriptionRun fontDescriptionRun11;
2716 fontDescriptionRun11.characterRun.characterIndex = 118u;
2717 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2718 fontDescriptionRun11.familyLength = fontHebrew.size();
2719 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2720 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2721 fontDescriptionRun11.familyDefined = true;
2722 fontDescriptionRun11.weightDefined = false;
2723 fontDescriptionRun11.widthDefined = false;
2724 fontDescriptionRun11.slantDefined = false;
2725 fontDescriptionRun11.sizeDefined = false;
2727 // Set a known font description
2728 FontDescriptionRun fontDescriptionRun12;
2729 fontDescriptionRun12.characterRun.characterIndex = 128u;
2730 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2731 fontDescriptionRun12.familyLength = fontLatin.size();
2732 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2733 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2734 fontDescriptionRun12.familyDefined = true;
2735 fontDescriptionRun12.weightDefined = false;
2736 fontDescriptionRun12.widthDefined = false;
2737 fontDescriptionRun12.slantDefined = false;
2738 fontDescriptionRun12.sizeDefined = false;
2740 // Set a known font description
2741 FontDescriptionRun fontDescriptionRun13;
2742 fontDescriptionRun13.characterRun.characterIndex = 145u;
2743 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2744 fontDescriptionRun13.familyLength = fontHebrew.size();
2745 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2746 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2747 fontDescriptionRun13.familyDefined = true;
2748 fontDescriptionRun13.weightDefined = false;
2749 fontDescriptionRun13.widthDefined = false;
2750 fontDescriptionRun13.slantDefined = false;
2751 fontDescriptionRun13.sizeDefined = false;
2753 // Set a known font description
2754 FontDescriptionRun fontDescriptionRun14;
2755 fontDescriptionRun14.characterRun.characterIndex = 154u;
2756 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2757 fontDescriptionRun14.familyLength = fontLatin.size();
2758 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2759 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2760 fontDescriptionRun14.familyDefined = true;
2761 fontDescriptionRun14.weightDefined = false;
2762 fontDescriptionRun14.widthDefined = false;
2763 fontDescriptionRun14.slantDefined = false;
2764 fontDescriptionRun14.sizeDefined = false;
2766 // Set a known font description
2767 FontDescriptionRun fontDescriptionRun15;
2768 fontDescriptionRun15.characterRun.characterIndex = 156u;
2769 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2770 fontDescriptionRun15.familyLength = fontHebrew.size();
2771 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2772 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2773 fontDescriptionRun15.familyDefined = true;
2774 fontDescriptionRun15.weightDefined = false;
2775 fontDescriptionRun15.widthDefined = false;
2776 fontDescriptionRun15.slantDefined = false;
2777 fontDescriptionRun15.sizeDefined = false;
2779 // Set a known font description
2780 FontDescriptionRun fontDescriptionRun16;
2781 fontDescriptionRun16.characterRun.characterIndex = 166u;
2782 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2783 fontDescriptionRun16.familyLength = fontLatin.size();
2784 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2785 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2786 fontDescriptionRun16.familyDefined = true;
2787 fontDescriptionRun16.weightDefined = false;
2788 fontDescriptionRun16.widthDefined = false;
2789 fontDescriptionRun16.slantDefined = false;
2790 fontDescriptionRun16.sizeDefined = false;
2792 // Set a known font description
2793 FontDescriptionRun fontDescriptionRun17;
2794 fontDescriptionRun17.characterRun.characterIndex = 178u;
2795 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2796 fontDescriptionRun17.familyLength = fontArabic.size();
2797 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2798 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2799 fontDescriptionRun17.familyDefined = true;
2800 fontDescriptionRun17.weightDefined = false;
2801 fontDescriptionRun17.widthDefined = false;
2802 fontDescriptionRun17.slantDefined = false;
2803 fontDescriptionRun17.sizeDefined = false;
2805 Vector<FontDescriptionRun> fontDescriptionRuns;
2806 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2807 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2808 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2809 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2810 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2811 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2812 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2813 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2814 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2815 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2816 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2817 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2818 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2823 Size textArea(100.f, 300.f);
2824 Size layoutSize(92.f, 380.f);
2827 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2828 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,
2829 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2830 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,
2831 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,
2832 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2833 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2834 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2835 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2836 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2837 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,
2838 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2839 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2840 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2841 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2842 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2843 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2844 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,
2847 struct LineRun line01 =
2860 struct LineRun line02 =
2873 struct LineRun line03 =
2886 struct LineRun line04 =
2899 struct LineRun line05 =
2912 struct LineRun line06 =
2925 struct LineRun line07 =
2938 struct LineRun line08 =
2951 struct LineRun line09 =
2964 struct LineRun line10 =
2977 struct LineRun line11 =
2990 struct LineRun line12 =
3003 struct LineRun line13 =
3016 struct LineRun line14 =
3029 struct LineRun line15 =
3042 struct LineRun line16 =
3055 struct LineRun line17 =
3068 struct LineRun line18 =
3081 struct LineRun line19 =
3094 Vector<LineRun> lines;
3095 lines.PushBack( line01 );
3096 lines.PushBack( line02 );
3097 lines.PushBack( line03 );
3098 lines.PushBack( line04 );
3099 lines.PushBack( line05 );
3100 lines.PushBack( line06 );
3101 lines.PushBack( line07 );
3102 lines.PushBack( line08 );
3103 lines.PushBack( line09 );
3104 lines.PushBack( line10 );
3105 lines.PushBack( line11 );
3106 lines.PushBack( line12 );
3107 lines.PushBack( line13 );
3108 lines.PushBack( line14 );
3109 lines.PushBack( line15 );
3110 lines.PushBack( line16 );
3111 lines.PushBack( line17 );
3112 lines.PushBack( line18 );
3113 lines.PushBack( line19 );
3115 LayoutTextData data =
3117 "Layout bidirectional text.",
3118 "Hello world demo שלום עולם.\n"
3119 "مرحبا بالعالم hello world שלום עולם\n"
3120 "שלום עולם hello world demo.\n"
3121 "hello world مرحبا بالعالم שלום עולם\n"
3122 "Hello world demo שלום עולם.\n"
3123 "שלום עולם hello world مرحبا بالعالم\n",
3126 fontDescriptionRuns.Begin(),
3132 Layout::Engine::MULTI_LINE_BOX,
3139 if( !LayoutTextTest( data ) )
3141 tet_result(TET_FAIL);
3144 tet_result(TET_PASS);
3148 int UtcDaliTextLayoutEllipsis01(void)
3150 ToolkitTestApplication application;
3151 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3153 // Layout single-line LTR text with ellipsis.
3155 const std::string fontLatin( "TizenSans" );
3157 // Set a known font description
3158 FontDescriptionRun fontDescriptionRun01;
3159 fontDescriptionRun01.characterRun.characterIndex = 0u;
3160 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3161 fontDescriptionRun01.familyLength = fontLatin.size();
3162 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3163 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3164 fontDescriptionRun01.familyDefined = true;
3165 fontDescriptionRun01.weightDefined = false;
3166 fontDescriptionRun01.widthDefined = false;
3167 fontDescriptionRun01.slantDefined = false;
3168 fontDescriptionRun01.sizeDefined = false;
3170 Vector<FontDescriptionRun> fontDescriptionRuns;
3171 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3173 struct LineRun line01 =
3186 Vector<LineRun> lines;
3187 lines.PushBack( line01 );
3191 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
3194 Size textArea( 100.f, 50.f );
3195 Size layoutSize( 100.f, 20.f );
3197 LayoutTextData data =
3199 "Layout single-line LTR text with ellipsis.",
3200 "Hello world demo hello world demo hello world demo.",
3203 fontDescriptionRuns.Begin(),
3209 Layout::Engine::SINGLE_LINE_BOX,
3216 if( !LayoutTextTest( data ) )
3218 tet_result(TET_FAIL);
3221 tet_result(TET_PASS);
3225 int UtcDaliTextLayoutEllipsis02(void)
3227 ToolkitTestApplication application;
3228 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3230 // Layout multi-line LTR text with ellipsis.
3232 const std::string fontLatin( "TizenSans" );
3234 // Set a known font description
3235 FontDescriptionRun fontDescriptionRun01;
3236 fontDescriptionRun01.characterRun.characterIndex = 0u;
3237 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3238 fontDescriptionRun01.familyLength = fontLatin.size();
3239 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3240 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3241 fontDescriptionRun01.familyDefined = true;
3242 fontDescriptionRun01.weightDefined = false;
3243 fontDescriptionRun01.widthDefined = false;
3244 fontDescriptionRun01.slantDefined = false;
3245 fontDescriptionRun01.sizeDefined = false;
3247 Vector<FontDescriptionRun> fontDescriptionRuns;
3248 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3250 struct LineRun line01 =
3263 struct LineRun line02 =
3276 Vector<LineRun> lines;
3277 lines.PushBack( line01 );
3278 lines.PushBack( line02 );
3282 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
3283 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,
3286 Size textArea( 100.f, 50.f );
3287 Size layoutSize( 100.f, 40.f );
3289 LayoutTextData data =
3291 "Layout multi-line LTR text with ellipsis.",
3292 "Hello world demo hello world demo hello world demo.",
3295 fontDescriptionRuns.Begin(),
3301 Layout::Engine::MULTI_LINE_BOX,
3308 if( !LayoutTextTest( data ) )
3310 tet_result(TET_FAIL);
3313 tet_result(TET_PASS);
3317 int UtcDaliTextLayoutEllipsis03(void)
3319 ToolkitTestApplication application;
3320 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3322 // Layout single-line RTL text with ellipsis.
3324 const std::string fontHebrew( "TizenSansHebrew" );
3325 const std::string fontArabic( "TizenSansArabic" );
3327 // Set a known font description
3328 FontDescriptionRun fontDescriptionRun01;
3329 fontDescriptionRun01.characterRun.characterIndex = 0u;
3330 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3331 fontDescriptionRun01.familyLength = fontHebrew.size();
3332 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3333 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3334 fontDescriptionRun01.familyDefined = true;
3335 fontDescriptionRun01.weightDefined = false;
3336 fontDescriptionRun01.widthDefined = false;
3337 fontDescriptionRun01.slantDefined = false;
3338 fontDescriptionRun01.sizeDefined = false;
3340 FontDescriptionRun fontDescriptionRun02;
3341 fontDescriptionRun02.characterRun.characterIndex = 10u;
3342 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3343 fontDescriptionRun02.familyLength = fontArabic.size();
3344 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3345 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3346 fontDescriptionRun02.familyDefined = true;
3347 fontDescriptionRun02.weightDefined = false;
3348 fontDescriptionRun02.widthDefined = false;
3349 fontDescriptionRun02.slantDefined = false;
3350 fontDescriptionRun02.sizeDefined = false;
3352 FontDescriptionRun fontDescriptionRun03;
3353 fontDescriptionRun03.characterRun.characterIndex = 24u;
3354 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3355 fontDescriptionRun03.familyLength = fontHebrew.size();
3356 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3357 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3358 fontDescriptionRun03.familyDefined = true;
3359 fontDescriptionRun03.weightDefined = false;
3360 fontDescriptionRun03.widthDefined = false;
3361 fontDescriptionRun03.slantDefined = false;
3362 fontDescriptionRun03.sizeDefined = false;
3364 FontDescriptionRun fontDescriptionRun04;
3365 fontDescriptionRun04.characterRun.characterIndex = 34u;
3366 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3367 fontDescriptionRun04.familyLength = fontArabic.size();
3368 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3369 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3370 fontDescriptionRun04.familyDefined = true;
3371 fontDescriptionRun04.weightDefined = false;
3372 fontDescriptionRun04.widthDefined = false;
3373 fontDescriptionRun04.slantDefined = false;
3374 fontDescriptionRun04.sizeDefined = false;
3376 FontDescriptionRun fontDescriptionRun05;
3377 fontDescriptionRun05.characterRun.characterIndex = 48u;
3378 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3379 fontDescriptionRun05.familyLength = fontHebrew.size();
3380 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3381 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3382 fontDescriptionRun05.familyDefined = true;
3383 fontDescriptionRun05.weightDefined = false;
3384 fontDescriptionRun05.widthDefined = false;
3385 fontDescriptionRun05.slantDefined = false;
3386 fontDescriptionRun05.sizeDefined = false;
3388 FontDescriptionRun fontDescriptionRun06;
3389 fontDescriptionRun06.characterRun.characterIndex = 58u;
3390 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3391 fontDescriptionRun06.familyLength = fontArabic.size();
3392 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3393 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3394 fontDescriptionRun06.familyDefined = true;
3395 fontDescriptionRun06.weightDefined = false;
3396 fontDescriptionRun06.widthDefined = false;
3397 fontDescriptionRun06.slantDefined = false;
3398 fontDescriptionRun06.sizeDefined = false;
3400 Vector<FontDescriptionRun> fontDescriptionRuns;
3401 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3402 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3403 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3404 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3405 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3406 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3408 struct LineRun line01 =
3421 Vector<LineRun> lines;
3422 lines.PushBack( line01 );
3426 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3429 Size textArea( 100.f, 50.f );
3430 Size layoutSize( 100.f, 20.f );
3432 LayoutTextData data =
3434 "Layout single-line RTL text with ellipsis.",
3435 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3438 fontDescriptionRuns.Begin(),
3444 Layout::Engine::SINGLE_LINE_BOX,
3451 if( !LayoutTextTest( data ) )
3453 tet_result(TET_FAIL);
3456 tet_result(TET_PASS);
3460 int UtcDaliTextLayoutEllipsis04(void)
3462 ToolkitTestApplication application;
3463 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3465 // Layout multi-line RTL text with ellipsis.
3467 const std::string fontHebrew( "TizenSansHebrew" );
3468 const std::string fontArabic( "TizenSansArabic" );
3470 // Set a known font description
3471 FontDescriptionRun fontDescriptionRun01;
3472 fontDescriptionRun01.characterRun.characterIndex = 0u;
3473 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3474 fontDescriptionRun01.familyLength = fontHebrew.size();
3475 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3476 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3477 fontDescriptionRun01.familyDefined = true;
3478 fontDescriptionRun01.weightDefined = false;
3479 fontDescriptionRun01.widthDefined = false;
3480 fontDescriptionRun01.slantDefined = false;
3481 fontDescriptionRun01.sizeDefined = false;
3483 FontDescriptionRun fontDescriptionRun02;
3484 fontDescriptionRun02.characterRun.characterIndex = 10u;
3485 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3486 fontDescriptionRun02.familyLength = fontArabic.size();
3487 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3488 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3489 fontDescriptionRun02.familyDefined = true;
3490 fontDescriptionRun02.weightDefined = false;
3491 fontDescriptionRun02.widthDefined = false;
3492 fontDescriptionRun02.slantDefined = false;
3493 fontDescriptionRun02.sizeDefined = false;
3495 FontDescriptionRun fontDescriptionRun03;
3496 fontDescriptionRun03.characterRun.characterIndex = 24u;
3497 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3498 fontDescriptionRun03.familyLength = fontHebrew.size();
3499 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3500 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3501 fontDescriptionRun03.familyDefined = true;
3502 fontDescriptionRun03.weightDefined = false;
3503 fontDescriptionRun03.widthDefined = false;
3504 fontDescriptionRun03.slantDefined = false;
3505 fontDescriptionRun03.sizeDefined = false;
3507 FontDescriptionRun fontDescriptionRun04;
3508 fontDescriptionRun04.characterRun.characterIndex = 34u;
3509 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3510 fontDescriptionRun04.familyLength = fontArabic.size();
3511 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3512 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3513 fontDescriptionRun04.familyDefined = true;
3514 fontDescriptionRun04.weightDefined = false;
3515 fontDescriptionRun04.widthDefined = false;
3516 fontDescriptionRun04.slantDefined = false;
3517 fontDescriptionRun04.sizeDefined = false;
3519 FontDescriptionRun fontDescriptionRun05;
3520 fontDescriptionRun05.characterRun.characterIndex = 48u;
3521 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3522 fontDescriptionRun05.familyLength = fontHebrew.size();
3523 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3524 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3525 fontDescriptionRun05.familyDefined = true;
3526 fontDescriptionRun05.weightDefined = false;
3527 fontDescriptionRun05.widthDefined = false;
3528 fontDescriptionRun05.slantDefined = false;
3529 fontDescriptionRun05.sizeDefined = false;
3531 FontDescriptionRun fontDescriptionRun06;
3532 fontDescriptionRun06.characterRun.characterIndex = 58u;
3533 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3534 fontDescriptionRun06.familyLength = fontArabic.size();
3535 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3536 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3537 fontDescriptionRun06.familyDefined = true;
3538 fontDescriptionRun06.weightDefined = false;
3539 fontDescriptionRun06.widthDefined = false;
3540 fontDescriptionRun06.slantDefined = false;
3541 fontDescriptionRun06.sizeDefined = false;
3543 Vector<FontDescriptionRun> fontDescriptionRuns;
3544 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3545 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3546 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3547 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3548 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3549 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3551 struct LineRun line01 =
3564 struct LineRun line02 =
3577 Vector<LineRun> lines;
3578 lines.PushBack( line01 );
3579 lines.PushBack( line02 );
3583 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3584 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,
3587 Size textArea( 100.f, 50.f );
3588 Size layoutSize( 100.f, 40.f );
3590 LayoutTextData data =
3592 "Layout single-line RTL text with ellipsis.",
3593 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3596 fontDescriptionRuns.Begin(),
3602 Layout::Engine::MULTI_LINE_BOX,
3609 if( !LayoutTextTest( data ) )
3611 tet_result(TET_FAIL);
3614 tet_result(TET_PASS);
3618 int UtcDaliTextLayoutEllipsis05(void)
3620 ToolkitTestApplication application;
3621 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3623 const std::string fontLatin( "TizenSans" );
3625 // Set a known font description
3626 FontDescriptionRun fontDescriptionRun01;
3627 fontDescriptionRun01.characterRun.characterIndex = 0u;
3628 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3629 fontDescriptionRun01.familyLength = fontLatin.size();
3630 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3631 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3632 fontDescriptionRun01.familyDefined = true;
3633 fontDescriptionRun01.weightDefined = false;
3634 fontDescriptionRun01.widthDefined = false;
3635 fontDescriptionRun01.slantDefined = false;
3636 fontDescriptionRun01.sizeDefined = false;
3638 Vector<FontDescriptionRun> fontDescriptionRuns;
3639 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3641 struct LineRun line01 =
3654 Vector<LineRun> lines;
3655 lines.PushBack( line01 );
3662 Size textArea( 100.f, 19.f );
3663 Size layoutSize( 100.f, 20.f );
3665 LayoutTextData data =
3667 "Not enough height.",
3671 fontDescriptionRuns.Begin(),
3677 Layout::Engine::MULTI_LINE_BOX,
3684 if( !LayoutTextTest( data ) )
3686 tet_result(TET_FAIL);
3689 tet_result(TET_PASS);
3693 int UtcDaliTextReorderLayout01(void)
3695 ToolkitTestApplication application;
3696 tet_infoline(" UtcDaliTextReorderLayout01");
3698 // Reorder lines. No right to left characters.
3700 const std::string fontLatin( "TizenSans" );
3702 // Set a known font description
3703 FontDescriptionRun fontDescriptionRun01;
3704 fontDescriptionRun01.characterRun.characterIndex = 0u;
3705 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3706 fontDescriptionRun01.familyLength = fontLatin.size();
3707 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3708 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3709 fontDescriptionRun01.familyDefined = true;
3710 fontDescriptionRun01.weightDefined = false;
3711 fontDescriptionRun01.widthDefined = false;
3712 fontDescriptionRun01.slantDefined = false;
3713 fontDescriptionRun01.sizeDefined = false;
3715 Vector<FontDescriptionRun> fontDescriptionRuns;
3716 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3720 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
3723 Size textArea( 100.f, 300.f );
3725 ReLayoutRightToLeftLinesData data =
3727 "Text with no right to left text.",
3731 fontDescriptionRuns.Begin(),
3738 if( !ReLayoutRightToLeftLinesTest( data ) )
3740 tet_result(TET_FAIL);
3743 tet_result(TET_PASS);
3747 int UtcDaliTextReorderLayout02(void)
3749 ToolkitTestApplication application;
3750 tet_infoline(" UtcDaliTextReorderLayout02");
3752 // Reorder lines of the first paragraph.
3754 const std::string fontHebrew( "TizenSansHebrew" );
3755 const std::string fontArabic( "TizenSansArabic" );
3757 // Set a known font description
3758 FontDescriptionRun fontDescriptionRun01;
3759 fontDescriptionRun01.characterRun.characterIndex = 0u;
3760 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3761 fontDescriptionRun01.familyLength = fontHebrew.size();
3762 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3763 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3764 fontDescriptionRun01.familyDefined = true;
3765 fontDescriptionRun01.weightDefined = false;
3766 fontDescriptionRun01.widthDefined = false;
3767 fontDescriptionRun01.slantDefined = false;
3768 fontDescriptionRun01.sizeDefined = false;
3770 FontDescriptionRun fontDescriptionRun02;
3771 fontDescriptionRun02.characterRun.characterIndex = 10u;
3772 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3773 fontDescriptionRun02.familyLength = fontArabic.size();
3774 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3775 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3776 fontDescriptionRun02.familyDefined = true;
3777 fontDescriptionRun02.weightDefined = false;
3778 fontDescriptionRun02.widthDefined = false;
3779 fontDescriptionRun02.slantDefined = false;
3780 fontDescriptionRun02.sizeDefined = false;
3782 FontDescriptionRun fontDescriptionRun03;
3783 fontDescriptionRun03.characterRun.characterIndex = 24u;
3784 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3785 fontDescriptionRun03.familyLength = fontArabic.size();
3786 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3787 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3788 fontDescriptionRun03.familyDefined = true;
3789 fontDescriptionRun03.weightDefined = false;
3790 fontDescriptionRun03.widthDefined = false;
3791 fontDescriptionRun03.slantDefined = false;
3792 fontDescriptionRun03.sizeDefined = false;
3794 FontDescriptionRun fontDescriptionRun04;
3795 fontDescriptionRun04.characterRun.characterIndex = 38u;
3796 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3797 fontDescriptionRun04.familyLength = fontHebrew.size();
3798 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3799 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3800 fontDescriptionRun04.familyDefined = true;
3801 fontDescriptionRun04.weightDefined = false;
3802 fontDescriptionRun04.widthDefined = false;
3803 fontDescriptionRun04.slantDefined = false;
3804 fontDescriptionRun04.sizeDefined = false;
3806 FontDescriptionRun fontDescriptionRun05;
3807 fontDescriptionRun05.characterRun.characterIndex = 48u;
3808 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3809 fontDescriptionRun05.familyLength = fontHebrew.size();
3810 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3811 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3812 fontDescriptionRun05.familyDefined = true;
3813 fontDescriptionRun05.weightDefined = false;
3814 fontDescriptionRun05.widthDefined = false;
3815 fontDescriptionRun05.slantDefined = false;
3816 fontDescriptionRun05.sizeDefined = false;
3818 FontDescriptionRun fontDescriptionRun06;
3819 fontDescriptionRun06.characterRun.characterIndex = 58u;
3820 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3821 fontDescriptionRun06.familyLength = fontArabic.size();
3822 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3823 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3824 fontDescriptionRun06.familyDefined = true;
3825 fontDescriptionRun06.weightDefined = false;
3826 fontDescriptionRun06.widthDefined = false;
3827 fontDescriptionRun06.slantDefined = false;
3828 fontDescriptionRun06.sizeDefined = false;
3830 Vector<FontDescriptionRun> fontDescriptionRuns;
3831 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3832 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3833 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3834 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3835 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3836 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3840 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,
3841 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,
3842 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,
3843 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3844 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3845 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,
3848 Size textArea( 100.f, 300.f );
3850 ReLayoutRightToLeftLinesData data =
3852 "Paragraphs with right to left text.",
3853 "שלום עולם مرحبا بالعالم\n"
3854 "مرحبا بالعالم שלום עולם\n"
3855 "שלום עולם مرحبا بالعالم.",
3858 fontDescriptionRuns.Begin(),
3865 if( !ReLayoutRightToLeftLinesTest( data ) )
3867 tet_result(TET_FAIL);
3870 tet_result(TET_PASS);
3874 int UtcDaliTextReorderLayout03(void)
3876 ToolkitTestApplication application;
3877 tet_infoline(" UtcDaliTextReorderLayout03");
3879 // Reorder lines of the mid paragraph.
3881 const std::string fontHebrew( "TizenSansHebrew" );
3882 const std::string fontArabic( "TizenSansArabic" );
3884 // Set a known font description
3885 FontDescriptionRun fontDescriptionRun01;
3886 fontDescriptionRun01.characterRun.characterIndex = 0u;
3887 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3888 fontDescriptionRun01.familyLength = fontHebrew.size();
3889 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3890 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3891 fontDescriptionRun01.familyDefined = true;
3892 fontDescriptionRun01.weightDefined = false;
3893 fontDescriptionRun01.widthDefined = false;
3894 fontDescriptionRun01.slantDefined = false;
3895 fontDescriptionRun01.sizeDefined = false;
3897 FontDescriptionRun fontDescriptionRun02;
3898 fontDescriptionRun02.characterRun.characterIndex = 10u;
3899 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3900 fontDescriptionRun02.familyLength = fontArabic.size();
3901 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3902 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3903 fontDescriptionRun02.familyDefined = true;
3904 fontDescriptionRun02.weightDefined = false;
3905 fontDescriptionRun02.widthDefined = false;
3906 fontDescriptionRun02.slantDefined = false;
3907 fontDescriptionRun02.sizeDefined = false;
3909 FontDescriptionRun fontDescriptionRun03;
3910 fontDescriptionRun03.characterRun.characterIndex = 24u;
3911 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3912 fontDescriptionRun03.familyLength = fontArabic.size();
3913 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3914 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3915 fontDescriptionRun03.familyDefined = true;
3916 fontDescriptionRun03.weightDefined = false;
3917 fontDescriptionRun03.widthDefined = false;
3918 fontDescriptionRun03.slantDefined = false;
3919 fontDescriptionRun03.sizeDefined = false;
3921 FontDescriptionRun fontDescriptionRun04;
3922 fontDescriptionRun04.characterRun.characterIndex = 38u;
3923 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3924 fontDescriptionRun04.familyLength = fontHebrew.size();
3925 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3926 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3927 fontDescriptionRun04.familyDefined = true;
3928 fontDescriptionRun04.weightDefined = false;
3929 fontDescriptionRun04.widthDefined = false;
3930 fontDescriptionRun04.slantDefined = false;
3931 fontDescriptionRun04.sizeDefined = false;
3933 FontDescriptionRun fontDescriptionRun05;
3934 fontDescriptionRun05.characterRun.characterIndex = 48u;
3935 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3936 fontDescriptionRun05.familyLength = fontHebrew.size();
3937 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3938 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3939 fontDescriptionRun05.familyDefined = true;
3940 fontDescriptionRun05.weightDefined = false;
3941 fontDescriptionRun05.widthDefined = false;
3942 fontDescriptionRun05.slantDefined = false;
3943 fontDescriptionRun05.sizeDefined = false;
3945 FontDescriptionRun fontDescriptionRun06;
3946 fontDescriptionRun06.characterRun.characterIndex = 58u;
3947 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3948 fontDescriptionRun06.familyLength = fontArabic.size();
3949 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3950 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3951 fontDescriptionRun06.familyDefined = true;
3952 fontDescriptionRun06.weightDefined = false;
3953 fontDescriptionRun06.widthDefined = false;
3954 fontDescriptionRun06.slantDefined = false;
3955 fontDescriptionRun06.sizeDefined = false;
3957 Vector<FontDescriptionRun> fontDescriptionRuns;
3958 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3959 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3960 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3961 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3962 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3963 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3967 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3968 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,
3969 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,
3970 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3971 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3972 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,
3975 Size textArea( 100.f, 300.f );
3977 ReLayoutRightToLeftLinesData data =
3979 "Paragraphs with right to left text.",
3980 "שלום עולם مرحبا بالعالم\n"
3981 "مرحبا بالعالم שלום עולם\n"
3982 "שלום עולם مرحبا بالعالم.",
3985 fontDescriptionRuns.Begin(),
3992 if( !ReLayoutRightToLeftLinesTest( data ) )
3994 tet_result(TET_FAIL);
3997 tet_result(TET_PASS);
4001 int UtcDaliTextReorderLayout04(void)
4003 ToolkitTestApplication application;
4004 tet_infoline(" UtcDaliTextReorderLayout04");
4006 // Reorder lines of the last paragraph.
4008 const std::string fontHebrew( "TizenSansHebrew" );
4009 const std::string fontArabic( "TizenSansArabic" );
4011 // Set a known font description
4012 FontDescriptionRun fontDescriptionRun01;
4013 fontDescriptionRun01.characterRun.characterIndex = 0u;
4014 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4015 fontDescriptionRun01.familyLength = fontHebrew.size();
4016 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4017 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4018 fontDescriptionRun01.familyDefined = true;
4019 fontDescriptionRun01.weightDefined = false;
4020 fontDescriptionRun01.widthDefined = false;
4021 fontDescriptionRun01.slantDefined = false;
4022 fontDescriptionRun01.sizeDefined = false;
4024 FontDescriptionRun fontDescriptionRun02;
4025 fontDescriptionRun02.characterRun.characterIndex = 10u;
4026 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4027 fontDescriptionRun02.familyLength = fontArabic.size();
4028 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4029 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4030 fontDescriptionRun02.familyDefined = true;
4031 fontDescriptionRun02.weightDefined = false;
4032 fontDescriptionRun02.widthDefined = false;
4033 fontDescriptionRun02.slantDefined = false;
4034 fontDescriptionRun02.sizeDefined = false;
4036 FontDescriptionRun fontDescriptionRun03;
4037 fontDescriptionRun03.characterRun.characterIndex = 24u;
4038 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4039 fontDescriptionRun03.familyLength = fontArabic.size();
4040 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4041 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4042 fontDescriptionRun03.familyDefined = true;
4043 fontDescriptionRun03.weightDefined = false;
4044 fontDescriptionRun03.widthDefined = false;
4045 fontDescriptionRun03.slantDefined = false;
4046 fontDescriptionRun03.sizeDefined = false;
4048 FontDescriptionRun fontDescriptionRun04;
4049 fontDescriptionRun04.characterRun.characterIndex = 38u;
4050 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4051 fontDescriptionRun04.familyLength = fontHebrew.size();
4052 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4053 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4054 fontDescriptionRun04.familyDefined = true;
4055 fontDescriptionRun04.weightDefined = false;
4056 fontDescriptionRun04.widthDefined = false;
4057 fontDescriptionRun04.slantDefined = false;
4058 fontDescriptionRun04.sizeDefined = false;
4060 FontDescriptionRun fontDescriptionRun05;
4061 fontDescriptionRun05.characterRun.characterIndex = 48u;
4062 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4063 fontDescriptionRun05.familyLength = fontHebrew.size();
4064 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4065 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4066 fontDescriptionRun05.familyDefined = true;
4067 fontDescriptionRun05.weightDefined = false;
4068 fontDescriptionRun05.widthDefined = false;
4069 fontDescriptionRun05.slantDefined = false;
4070 fontDescriptionRun05.sizeDefined = false;
4072 FontDescriptionRun fontDescriptionRun06;
4073 fontDescriptionRun06.characterRun.characterIndex = 58u;
4074 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4075 fontDescriptionRun06.familyLength = fontArabic.size();
4076 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4077 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4078 fontDescriptionRun06.familyDefined = true;
4079 fontDescriptionRun06.weightDefined = false;
4080 fontDescriptionRun06.widthDefined = false;
4081 fontDescriptionRun06.slantDefined = false;
4082 fontDescriptionRun06.sizeDefined = false;
4084 Vector<FontDescriptionRun> fontDescriptionRuns;
4085 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4086 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4087 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4088 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4089 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4090 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4094 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4095 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,
4096 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,
4097 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4098 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,
4099 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4102 Size textArea( 100.f, 300.f );
4104 ReLayoutRightToLeftLinesData data =
4106 "Paragraphs with right to left text.",
4107 "שלום עולם مرحبا بالعالم\n"
4108 "مرحبا بالعالم שלום עולם\n"
4109 "שלום עולם مرحبا بالعالم.",
4112 fontDescriptionRuns.Begin(),
4119 if( !ReLayoutRightToLeftLinesTest( data ) )
4121 tet_result(TET_FAIL);
4124 tet_result(TET_PASS);
4128 int UtcDaliTextAlign01(void)
4130 ToolkitTestApplication application;
4131 tet_infoline(" UtcDaliTextAlign01");
4133 // Calculate text alignment.
4135 const std::string fontLatin( "TizenSans" );
4136 const std::string fontHebrew( "TizenSansHebrew" );
4137 const std::string fontArabic( "TizenSansArabic" );
4139 // Set a known font description
4140 FontDescriptionRun fontDescriptionRun01;
4141 fontDescriptionRun01.characterRun.characterIndex = 0u;
4142 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4143 fontDescriptionRun01.familyLength = fontLatin.size();
4144 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4145 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4146 fontDescriptionRun01.familyDefined = true;
4147 fontDescriptionRun01.weightDefined = false;
4148 fontDescriptionRun01.widthDefined = false;
4149 fontDescriptionRun01.slantDefined = false;
4150 fontDescriptionRun01.sizeDefined = false;
4152 FontDescriptionRun fontDescriptionRun02;
4153 fontDescriptionRun02.characterRun.characterIndex = 12u;
4154 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4155 fontDescriptionRun02.familyLength = fontHebrew.size();
4156 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4157 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4158 fontDescriptionRun02.familyDefined = true;
4159 fontDescriptionRun02.weightDefined = false;
4160 fontDescriptionRun02.widthDefined = false;
4161 fontDescriptionRun02.slantDefined = false;
4162 fontDescriptionRun02.sizeDefined = false;
4164 FontDescriptionRun fontDescriptionRun03;
4165 fontDescriptionRun03.characterRun.characterIndex = 22u;
4166 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4167 fontDescriptionRun03.familyLength = fontArabic.size();
4168 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4169 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4170 fontDescriptionRun03.familyDefined = true;
4171 fontDescriptionRun03.weightDefined = false;
4172 fontDescriptionRun03.widthDefined = false;
4173 fontDescriptionRun03.slantDefined = false;
4174 fontDescriptionRun03.sizeDefined = false;
4176 FontDescriptionRun fontDescriptionRun04;
4177 fontDescriptionRun04.characterRun.characterIndex = 36u;
4178 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4179 fontDescriptionRun04.familyLength = fontLatin.size();
4180 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4181 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4182 fontDescriptionRun04.familyDefined = true;
4183 fontDescriptionRun04.weightDefined = false;
4184 fontDescriptionRun04.widthDefined = false;
4185 fontDescriptionRun04.slantDefined = false;
4186 fontDescriptionRun04.sizeDefined = false;
4188 FontDescriptionRun fontDescriptionRun05;
4189 fontDescriptionRun05.characterRun.characterIndex = 48u;
4190 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4191 fontDescriptionRun05.familyLength = fontLatin.size();
4192 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4193 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4194 fontDescriptionRun05.familyDefined = true;
4195 fontDescriptionRun05.weightDefined = false;
4196 fontDescriptionRun05.widthDefined = false;
4197 fontDescriptionRun05.slantDefined = false;
4198 fontDescriptionRun05.sizeDefined = false;
4200 FontDescriptionRun fontDescriptionRun06;
4201 fontDescriptionRun06.characterRun.characterIndex = 60u;
4202 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4203 fontDescriptionRun06.familyLength = fontArabic.size();
4204 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4205 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4206 fontDescriptionRun06.familyDefined = true;
4207 fontDescriptionRun06.weightDefined = false;
4208 fontDescriptionRun06.widthDefined = false;
4209 fontDescriptionRun06.slantDefined = false;
4210 fontDescriptionRun06.sizeDefined = false;
4212 Vector<FontDescriptionRun> fontDescriptionRuns;
4213 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4214 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4215 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4216 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4217 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4218 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4220 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4222 Size textArea( 100.f, 300.f );
4225 "Begin alignment for the first paragraph.",
4226 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4229 fontDescriptionRuns.Begin(),
4230 Text::HorizontalAlignment::BEGIN,
4231 Text::VerticalAlignment::TOP,
4238 if( !AlignTest( data ) )
4240 tet_result(TET_FAIL);
4243 tet_result(TET_PASS);
4247 int UtcDaliTextAlign02(void)
4249 ToolkitTestApplication application;
4250 tet_infoline(" UtcDaliTextAlign02");
4252 // Calculate text alignment.
4254 const std::string fontLatin( "TizenSans" );
4255 const std::string fontHebrew( "TizenSansHebrew" );
4256 const std::string fontArabic( "TizenSansArabic" );
4258 // Set a known font description
4259 FontDescriptionRun fontDescriptionRun01;
4260 fontDescriptionRun01.characterRun.characterIndex = 0u;
4261 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4262 fontDescriptionRun01.familyLength = fontLatin.size();
4263 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4264 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4265 fontDescriptionRun01.familyDefined = true;
4266 fontDescriptionRun01.weightDefined = false;
4267 fontDescriptionRun01.widthDefined = false;
4268 fontDescriptionRun01.slantDefined = false;
4269 fontDescriptionRun01.sizeDefined = false;
4271 FontDescriptionRun fontDescriptionRun02;
4272 fontDescriptionRun02.characterRun.characterIndex = 12u;
4273 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4274 fontDescriptionRun02.familyLength = fontHebrew.size();
4275 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4276 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4277 fontDescriptionRun02.familyDefined = true;
4278 fontDescriptionRun02.weightDefined = false;
4279 fontDescriptionRun02.widthDefined = false;
4280 fontDescriptionRun02.slantDefined = false;
4281 fontDescriptionRun02.sizeDefined = false;
4283 FontDescriptionRun fontDescriptionRun03;
4284 fontDescriptionRun03.characterRun.characterIndex = 22u;
4285 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4286 fontDescriptionRun03.familyLength = fontArabic.size();
4287 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4288 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4289 fontDescriptionRun03.familyDefined = true;
4290 fontDescriptionRun03.weightDefined = false;
4291 fontDescriptionRun03.widthDefined = false;
4292 fontDescriptionRun03.slantDefined = false;
4293 fontDescriptionRun03.sizeDefined = false;
4295 FontDescriptionRun fontDescriptionRun04;
4296 fontDescriptionRun04.characterRun.characterIndex = 36u;
4297 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4298 fontDescriptionRun04.familyLength = fontLatin.size();
4299 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4300 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4301 fontDescriptionRun04.familyDefined = true;
4302 fontDescriptionRun04.weightDefined = false;
4303 fontDescriptionRun04.widthDefined = false;
4304 fontDescriptionRun04.slantDefined = false;
4305 fontDescriptionRun04.sizeDefined = false;
4307 FontDescriptionRun fontDescriptionRun05;
4308 fontDescriptionRun05.characterRun.characterIndex = 48u;
4309 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4310 fontDescriptionRun05.familyLength = fontLatin.size();
4311 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4312 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4313 fontDescriptionRun05.familyDefined = true;
4314 fontDescriptionRun05.weightDefined = false;
4315 fontDescriptionRun05.widthDefined = false;
4316 fontDescriptionRun05.slantDefined = false;
4317 fontDescriptionRun05.sizeDefined = false;
4319 FontDescriptionRun fontDescriptionRun06;
4320 fontDescriptionRun06.characterRun.characterIndex = 60u;
4321 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4322 fontDescriptionRun06.familyLength = fontArabic.size();
4323 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4324 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4325 fontDescriptionRun06.familyDefined = true;
4326 fontDescriptionRun06.weightDefined = false;
4327 fontDescriptionRun06.widthDefined = false;
4328 fontDescriptionRun06.slantDefined = false;
4329 fontDescriptionRun06.sizeDefined = false;
4331 Vector<FontDescriptionRun> fontDescriptionRuns;
4332 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4333 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4334 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4335 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4336 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4337 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4339 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4341 Size textArea( 100.f, 300.f );
4344 "Begin alignment for the mid paragraph.",
4345 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4348 fontDescriptionRuns.Begin(),
4349 Text::HorizontalAlignment::BEGIN,
4350 Text::VerticalAlignment::TOP,
4357 if( !AlignTest( data ) )
4359 tet_result(TET_FAIL);
4362 tet_result(TET_PASS);
4366 int UtcDaliTextAlign03(void)
4368 ToolkitTestApplication application;
4369 tet_infoline(" UtcDaliTextAlign03");
4371 // Calculate text alignment.
4373 const std::string fontLatin( "TizenSans" );
4374 const std::string fontHebrew( "TizenSansHebrew" );
4375 const std::string fontArabic( "TizenSansArabic" );
4377 // Set a known font description
4378 FontDescriptionRun fontDescriptionRun01;
4379 fontDescriptionRun01.characterRun.characterIndex = 0u;
4380 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4381 fontDescriptionRun01.familyLength = fontLatin.size();
4382 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4383 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4384 fontDescriptionRun01.familyDefined = true;
4385 fontDescriptionRun01.weightDefined = false;
4386 fontDescriptionRun01.widthDefined = false;
4387 fontDescriptionRun01.slantDefined = false;
4388 fontDescriptionRun01.sizeDefined = false;
4390 FontDescriptionRun fontDescriptionRun02;
4391 fontDescriptionRun02.characterRun.characterIndex = 12u;
4392 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4393 fontDescriptionRun02.familyLength = fontHebrew.size();
4394 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4395 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4396 fontDescriptionRun02.familyDefined = true;
4397 fontDescriptionRun02.weightDefined = false;
4398 fontDescriptionRun02.widthDefined = false;
4399 fontDescriptionRun02.slantDefined = false;
4400 fontDescriptionRun02.sizeDefined = false;
4402 FontDescriptionRun fontDescriptionRun03;
4403 fontDescriptionRun03.characterRun.characterIndex = 22u;
4404 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4405 fontDescriptionRun03.familyLength = fontArabic.size();
4406 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4407 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4408 fontDescriptionRun03.familyDefined = true;
4409 fontDescriptionRun03.weightDefined = false;
4410 fontDescriptionRun03.widthDefined = false;
4411 fontDescriptionRun03.slantDefined = false;
4412 fontDescriptionRun03.sizeDefined = false;
4414 FontDescriptionRun fontDescriptionRun04;
4415 fontDescriptionRun04.characterRun.characterIndex = 36u;
4416 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4417 fontDescriptionRun04.familyLength = fontLatin.size();
4418 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4419 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4420 fontDescriptionRun04.familyDefined = true;
4421 fontDescriptionRun04.weightDefined = false;
4422 fontDescriptionRun04.widthDefined = false;
4423 fontDescriptionRun04.slantDefined = false;
4424 fontDescriptionRun04.sizeDefined = false;
4426 FontDescriptionRun fontDescriptionRun05;
4427 fontDescriptionRun05.characterRun.characterIndex = 48u;
4428 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4429 fontDescriptionRun05.familyLength = fontLatin.size();
4430 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4431 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4432 fontDescriptionRun05.familyDefined = true;
4433 fontDescriptionRun05.weightDefined = false;
4434 fontDescriptionRun05.widthDefined = false;
4435 fontDescriptionRun05.slantDefined = false;
4436 fontDescriptionRun05.sizeDefined = false;
4438 FontDescriptionRun fontDescriptionRun06;
4439 fontDescriptionRun06.characterRun.characterIndex = 60u;
4440 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4441 fontDescriptionRun06.familyLength = fontArabic.size();
4442 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4443 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4444 fontDescriptionRun06.familyDefined = true;
4445 fontDescriptionRun06.weightDefined = false;
4446 fontDescriptionRun06.widthDefined = false;
4447 fontDescriptionRun06.slantDefined = false;
4448 fontDescriptionRun06.sizeDefined = false;
4450 Vector<FontDescriptionRun> fontDescriptionRuns;
4451 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4452 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4453 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4454 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4455 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4456 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4458 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4460 Size textArea( 100.f, 300.f );
4463 "Begin alignment for the last paragraph.",
4464 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4467 fontDescriptionRuns.Begin(),
4468 Text::HorizontalAlignment::BEGIN,
4469 Text::VerticalAlignment::TOP,
4476 if( !AlignTest( data ) )
4478 tet_result(TET_FAIL);
4481 tet_result(TET_PASS);
4485 int UtcDaliTextAlign04(void)
4487 ToolkitTestApplication application;
4488 tet_infoline(" UtcDaliTextAlign04");
4490 // Calculate text alignment.
4492 const std::string fontLatin( "TizenSans" );
4493 const std::string fontHebrew( "TizenSansHebrew" );
4494 const std::string fontArabic( "TizenSansArabic" );
4496 // Set a known font description
4497 FontDescriptionRun fontDescriptionRun01;
4498 fontDescriptionRun01.characterRun.characterIndex = 0u;
4499 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4500 fontDescriptionRun01.familyLength = fontLatin.size();
4501 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4502 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4503 fontDescriptionRun01.familyDefined = true;
4504 fontDescriptionRun01.weightDefined = false;
4505 fontDescriptionRun01.widthDefined = false;
4506 fontDescriptionRun01.slantDefined = false;
4507 fontDescriptionRun01.sizeDefined = false;
4509 FontDescriptionRun fontDescriptionRun02;
4510 fontDescriptionRun02.characterRun.characterIndex = 12u;
4511 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4512 fontDescriptionRun02.familyLength = fontHebrew.size();
4513 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4514 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4515 fontDescriptionRun02.familyDefined = true;
4516 fontDescriptionRun02.weightDefined = false;
4517 fontDescriptionRun02.widthDefined = false;
4518 fontDescriptionRun02.slantDefined = false;
4519 fontDescriptionRun02.sizeDefined = false;
4521 FontDescriptionRun fontDescriptionRun03;
4522 fontDescriptionRun03.characterRun.characterIndex = 22u;
4523 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4524 fontDescriptionRun03.familyLength = fontArabic.size();
4525 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4526 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4527 fontDescriptionRun03.familyDefined = true;
4528 fontDescriptionRun03.weightDefined = false;
4529 fontDescriptionRun03.widthDefined = false;
4530 fontDescriptionRun03.slantDefined = false;
4531 fontDescriptionRun03.sizeDefined = false;
4533 FontDescriptionRun fontDescriptionRun04;
4534 fontDescriptionRun04.characterRun.characterIndex = 36u;
4535 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4536 fontDescriptionRun04.familyLength = fontLatin.size();
4537 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4538 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4539 fontDescriptionRun04.familyDefined = true;
4540 fontDescriptionRun04.weightDefined = false;
4541 fontDescriptionRun04.widthDefined = false;
4542 fontDescriptionRun04.slantDefined = false;
4543 fontDescriptionRun04.sizeDefined = false;
4545 FontDescriptionRun fontDescriptionRun05;
4546 fontDescriptionRun05.characterRun.characterIndex = 48u;
4547 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4548 fontDescriptionRun05.familyLength = fontLatin.size();
4549 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4550 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4551 fontDescriptionRun05.familyDefined = true;
4552 fontDescriptionRun05.weightDefined = false;
4553 fontDescriptionRun05.widthDefined = false;
4554 fontDescriptionRun05.slantDefined = false;
4555 fontDescriptionRun05.sizeDefined = false;
4557 FontDescriptionRun fontDescriptionRun06;
4558 fontDescriptionRun06.characterRun.characterIndex = 60u;
4559 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4560 fontDescriptionRun06.familyLength = fontArabic.size();
4561 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4562 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4563 fontDescriptionRun06.familyDefined = true;
4564 fontDescriptionRun06.weightDefined = false;
4565 fontDescriptionRun06.widthDefined = false;
4566 fontDescriptionRun06.slantDefined = false;
4567 fontDescriptionRun06.sizeDefined = false;
4569 Vector<FontDescriptionRun> fontDescriptionRuns;
4570 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4571 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4572 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4573 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4574 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4575 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4577 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4579 Size textArea( 100.f, 300.f );
4582 "Center alignment for the first paragraph.",
4583 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4586 fontDescriptionRuns.Begin(),
4587 Text::HorizontalAlignment::CENTER,
4588 Text::VerticalAlignment::TOP,
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,
4714 if( !AlignTest( data ) )
4716 tet_result(TET_FAIL);
4719 tet_result(TET_PASS);
4723 int UtcDaliTextAlign06(void)
4725 ToolkitTestApplication application;
4726 tet_infoline(" UtcDaliTextAlign06");
4728 // Calculate text alignment.
4730 const std::string fontLatin( "TizenSans" );
4731 const std::string fontHebrew( "TizenSansHebrew" );
4732 const std::string fontArabic( "TizenSansArabic" );
4734 // Set a known font description
4735 FontDescriptionRun fontDescriptionRun01;
4736 fontDescriptionRun01.characterRun.characterIndex = 0u;
4737 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4738 fontDescriptionRun01.familyLength = fontLatin.size();
4739 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4740 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4741 fontDescriptionRun01.familyDefined = true;
4742 fontDescriptionRun01.weightDefined = false;
4743 fontDescriptionRun01.widthDefined = false;
4744 fontDescriptionRun01.slantDefined = false;
4745 fontDescriptionRun01.sizeDefined = false;
4747 FontDescriptionRun fontDescriptionRun02;
4748 fontDescriptionRun02.characterRun.characterIndex = 12u;
4749 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4750 fontDescriptionRun02.familyLength = fontHebrew.size();
4751 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4752 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4753 fontDescriptionRun02.familyDefined = true;
4754 fontDescriptionRun02.weightDefined = false;
4755 fontDescriptionRun02.widthDefined = false;
4756 fontDescriptionRun02.slantDefined = false;
4757 fontDescriptionRun02.sizeDefined = false;
4759 FontDescriptionRun fontDescriptionRun03;
4760 fontDescriptionRun03.characterRun.characterIndex = 22u;
4761 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4762 fontDescriptionRun03.familyLength = fontArabic.size();
4763 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4764 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4765 fontDescriptionRun03.familyDefined = true;
4766 fontDescriptionRun03.weightDefined = false;
4767 fontDescriptionRun03.widthDefined = false;
4768 fontDescriptionRun03.slantDefined = false;
4769 fontDescriptionRun03.sizeDefined = false;
4771 FontDescriptionRun fontDescriptionRun04;
4772 fontDescriptionRun04.characterRun.characterIndex = 36u;
4773 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4774 fontDescriptionRun04.familyLength = fontLatin.size();
4775 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4776 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4777 fontDescriptionRun04.familyDefined = true;
4778 fontDescriptionRun04.weightDefined = false;
4779 fontDescriptionRun04.widthDefined = false;
4780 fontDescriptionRun04.slantDefined = false;
4781 fontDescriptionRun04.sizeDefined = false;
4783 FontDescriptionRun fontDescriptionRun05;
4784 fontDescriptionRun05.characterRun.characterIndex = 48u;
4785 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4786 fontDescriptionRun05.familyLength = fontLatin.size();
4787 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4788 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4789 fontDescriptionRun05.familyDefined = true;
4790 fontDescriptionRun05.weightDefined = false;
4791 fontDescriptionRun05.widthDefined = false;
4792 fontDescriptionRun05.slantDefined = false;
4793 fontDescriptionRun05.sizeDefined = false;
4795 FontDescriptionRun fontDescriptionRun06;
4796 fontDescriptionRun06.characterRun.characterIndex = 60u;
4797 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4798 fontDescriptionRun06.familyLength = fontArabic.size();
4799 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4800 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4801 fontDescriptionRun06.familyDefined = true;
4802 fontDescriptionRun06.weightDefined = false;
4803 fontDescriptionRun06.widthDefined = false;
4804 fontDescriptionRun06.slantDefined = false;
4805 fontDescriptionRun06.sizeDefined = false;
4807 Vector<FontDescriptionRun> fontDescriptionRuns;
4808 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4809 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4810 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4811 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4812 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4813 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4815 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4817 Size textArea( 100.f, 300.f );
4820 "Center alignment for the last paragraph.",
4821 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4824 fontDescriptionRuns.Begin(),
4825 Text::HorizontalAlignment::CENTER,
4826 Text::VerticalAlignment::TOP,
4833 if( !AlignTest( data ) )
4835 tet_result(TET_FAIL);
4838 tet_result(TET_PASS);
4842 int UtcDaliTextAlign07(void)
4844 ToolkitTestApplication application;
4845 tet_infoline(" UtcDaliTextAlign07");
4847 // Calculate text alignment.
4849 const std::string fontLatin( "TizenSans" );
4850 const std::string fontHebrew( "TizenSansHebrew" );
4851 const std::string fontArabic( "TizenSansArabic" );
4853 // Set a known font description
4854 FontDescriptionRun fontDescriptionRun01;
4855 fontDescriptionRun01.characterRun.characterIndex = 0u;
4856 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4857 fontDescriptionRun01.familyLength = fontLatin.size();
4858 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4859 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4860 fontDescriptionRun01.familyDefined = true;
4861 fontDescriptionRun01.weightDefined = false;
4862 fontDescriptionRun01.widthDefined = false;
4863 fontDescriptionRun01.slantDefined = false;
4864 fontDescriptionRun01.sizeDefined = false;
4866 FontDescriptionRun fontDescriptionRun02;
4867 fontDescriptionRun02.characterRun.characterIndex = 12u;
4868 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4869 fontDescriptionRun02.familyLength = fontHebrew.size();
4870 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4871 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4872 fontDescriptionRun02.familyDefined = true;
4873 fontDescriptionRun02.weightDefined = false;
4874 fontDescriptionRun02.widthDefined = false;
4875 fontDescriptionRun02.slantDefined = false;
4876 fontDescriptionRun02.sizeDefined = false;
4878 FontDescriptionRun fontDescriptionRun03;
4879 fontDescriptionRun03.characterRun.characterIndex = 22u;
4880 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4881 fontDescriptionRun03.familyLength = fontArabic.size();
4882 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4883 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4884 fontDescriptionRun03.familyDefined = true;
4885 fontDescriptionRun03.weightDefined = false;
4886 fontDescriptionRun03.widthDefined = false;
4887 fontDescriptionRun03.slantDefined = false;
4888 fontDescriptionRun03.sizeDefined = false;
4890 FontDescriptionRun fontDescriptionRun04;
4891 fontDescriptionRun04.characterRun.characterIndex = 36u;
4892 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4893 fontDescriptionRun04.familyLength = fontLatin.size();
4894 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4895 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4896 fontDescriptionRun04.familyDefined = true;
4897 fontDescriptionRun04.weightDefined = false;
4898 fontDescriptionRun04.widthDefined = false;
4899 fontDescriptionRun04.slantDefined = false;
4900 fontDescriptionRun04.sizeDefined = false;
4902 FontDescriptionRun fontDescriptionRun05;
4903 fontDescriptionRun05.characterRun.characterIndex = 48u;
4904 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4905 fontDescriptionRun05.familyLength = fontLatin.size();
4906 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4907 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4908 fontDescriptionRun05.familyDefined = true;
4909 fontDescriptionRun05.weightDefined = false;
4910 fontDescriptionRun05.widthDefined = false;
4911 fontDescriptionRun05.slantDefined = false;
4912 fontDescriptionRun05.sizeDefined = false;
4914 FontDescriptionRun fontDescriptionRun06;
4915 fontDescriptionRun06.characterRun.characterIndex = 60u;
4916 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4917 fontDescriptionRun06.familyLength = fontArabic.size();
4918 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4919 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4920 fontDescriptionRun06.familyDefined = true;
4921 fontDescriptionRun06.weightDefined = false;
4922 fontDescriptionRun06.widthDefined = false;
4923 fontDescriptionRun06.slantDefined = false;
4924 fontDescriptionRun06.sizeDefined = false;
4926 Vector<FontDescriptionRun> fontDescriptionRuns;
4927 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4928 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4929 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4930 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4931 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4932 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4934 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4936 Size textArea( 100.f, 300.f );
4939 "End alignment for the first paragraph.",
4940 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4943 fontDescriptionRuns.Begin(),
4944 Text::HorizontalAlignment::END,
4945 Text::VerticalAlignment::TOP,
4952 if( !AlignTest( data ) )
4954 tet_result(TET_FAIL);
4957 tet_result(TET_PASS);
4961 int UtcDaliTextAlign08(void)
4963 ToolkitTestApplication application;
4964 tet_infoline(" UtcDaliTextAlign08");
4966 // Calculate text alignment.
4968 const std::string fontLatin( "TizenSans" );
4969 const std::string fontHebrew( "TizenSansHebrew" );
4970 const std::string fontArabic( "TizenSansArabic" );
4972 // Set a known font description
4973 FontDescriptionRun fontDescriptionRun01;
4974 fontDescriptionRun01.characterRun.characterIndex = 0u;
4975 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4976 fontDescriptionRun01.familyLength = fontLatin.size();
4977 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4978 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4979 fontDescriptionRun01.familyDefined = true;
4980 fontDescriptionRun01.weightDefined = false;
4981 fontDescriptionRun01.widthDefined = false;
4982 fontDescriptionRun01.slantDefined = false;
4983 fontDescriptionRun01.sizeDefined = false;
4985 FontDescriptionRun fontDescriptionRun02;
4986 fontDescriptionRun02.characterRun.characterIndex = 12u;
4987 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4988 fontDescriptionRun02.familyLength = fontHebrew.size();
4989 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4990 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4991 fontDescriptionRun02.familyDefined = true;
4992 fontDescriptionRun02.weightDefined = false;
4993 fontDescriptionRun02.widthDefined = false;
4994 fontDescriptionRun02.slantDefined = false;
4995 fontDescriptionRun02.sizeDefined = false;
4997 FontDescriptionRun fontDescriptionRun03;
4998 fontDescriptionRun03.characterRun.characterIndex = 22u;
4999 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5000 fontDescriptionRun03.familyLength = fontArabic.size();
5001 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5002 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5003 fontDescriptionRun03.familyDefined = true;
5004 fontDescriptionRun03.weightDefined = false;
5005 fontDescriptionRun03.widthDefined = false;
5006 fontDescriptionRun03.slantDefined = false;
5007 fontDescriptionRun03.sizeDefined = false;
5009 FontDescriptionRun fontDescriptionRun04;
5010 fontDescriptionRun04.characterRun.characterIndex = 36u;
5011 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5012 fontDescriptionRun04.familyLength = fontLatin.size();
5013 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5014 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5015 fontDescriptionRun04.familyDefined = true;
5016 fontDescriptionRun04.weightDefined = false;
5017 fontDescriptionRun04.widthDefined = false;
5018 fontDescriptionRun04.slantDefined = false;
5019 fontDescriptionRun04.sizeDefined = false;
5021 FontDescriptionRun fontDescriptionRun05;
5022 fontDescriptionRun05.characterRun.characterIndex = 48u;
5023 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5024 fontDescriptionRun05.familyLength = fontLatin.size();
5025 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5026 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5027 fontDescriptionRun05.familyDefined = true;
5028 fontDescriptionRun05.weightDefined = false;
5029 fontDescriptionRun05.widthDefined = false;
5030 fontDescriptionRun05.slantDefined = false;
5031 fontDescriptionRun05.sizeDefined = false;
5033 FontDescriptionRun fontDescriptionRun06;
5034 fontDescriptionRun06.characterRun.characterIndex = 60u;
5035 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5036 fontDescriptionRun06.familyLength = fontArabic.size();
5037 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5038 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5039 fontDescriptionRun06.familyDefined = true;
5040 fontDescriptionRun06.weightDefined = false;
5041 fontDescriptionRun06.widthDefined = false;
5042 fontDescriptionRun06.slantDefined = false;
5043 fontDescriptionRun06.sizeDefined = false;
5045 Vector<FontDescriptionRun> fontDescriptionRuns;
5046 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5047 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5048 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5049 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5050 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5051 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5053 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5055 Size textArea( 100.f, 300.f );
5058 "End alignment for the mid paragraph.",
5059 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5062 fontDescriptionRuns.Begin(),
5063 Text::HorizontalAlignment::END,
5064 Text::VerticalAlignment::TOP,
5071 if( !AlignTest( data ) )
5073 tet_result(TET_FAIL);
5076 tet_result(TET_PASS);
5080 int UtcDaliTextAlign09(void)
5082 ToolkitTestApplication application;
5083 tet_infoline(" UtcDaliTextAlign09");
5085 // Calculate text alignment.
5087 const std::string fontLatin( "TizenSans" );
5088 const std::string fontHebrew( "TizenSansHebrew" );
5089 const std::string fontArabic( "TizenSansArabic" );
5091 // Set a known font description
5092 FontDescriptionRun fontDescriptionRun01;
5093 fontDescriptionRun01.characterRun.characterIndex = 0u;
5094 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5095 fontDescriptionRun01.familyLength = fontLatin.size();
5096 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5097 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5098 fontDescriptionRun01.familyDefined = true;
5099 fontDescriptionRun01.weightDefined = false;
5100 fontDescriptionRun01.widthDefined = false;
5101 fontDescriptionRun01.slantDefined = false;
5102 fontDescriptionRun01.sizeDefined = false;
5104 FontDescriptionRun fontDescriptionRun02;
5105 fontDescriptionRun02.characterRun.characterIndex = 12u;
5106 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5107 fontDescriptionRun02.familyLength = fontHebrew.size();
5108 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5109 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5110 fontDescriptionRun02.familyDefined = true;
5111 fontDescriptionRun02.weightDefined = false;
5112 fontDescriptionRun02.widthDefined = false;
5113 fontDescriptionRun02.slantDefined = false;
5114 fontDescriptionRun02.sizeDefined = false;
5116 FontDescriptionRun fontDescriptionRun03;
5117 fontDescriptionRun03.characterRun.characterIndex = 22u;
5118 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5119 fontDescriptionRun03.familyLength = fontArabic.size();
5120 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5121 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5122 fontDescriptionRun03.familyDefined = true;
5123 fontDescriptionRun03.weightDefined = false;
5124 fontDescriptionRun03.widthDefined = false;
5125 fontDescriptionRun03.slantDefined = false;
5126 fontDescriptionRun03.sizeDefined = false;
5128 FontDescriptionRun fontDescriptionRun04;
5129 fontDescriptionRun04.characterRun.characterIndex = 36u;
5130 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5131 fontDescriptionRun04.familyLength = fontLatin.size();
5132 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5133 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5134 fontDescriptionRun04.familyDefined = true;
5135 fontDescriptionRun04.weightDefined = false;
5136 fontDescriptionRun04.widthDefined = false;
5137 fontDescriptionRun04.slantDefined = false;
5138 fontDescriptionRun04.sizeDefined = false;
5140 FontDescriptionRun fontDescriptionRun05;
5141 fontDescriptionRun05.characterRun.characterIndex = 48u;
5142 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5143 fontDescriptionRun05.familyLength = fontLatin.size();
5144 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5145 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5146 fontDescriptionRun05.familyDefined = true;
5147 fontDescriptionRun05.weightDefined = false;
5148 fontDescriptionRun05.widthDefined = false;
5149 fontDescriptionRun05.slantDefined = false;
5150 fontDescriptionRun05.sizeDefined = false;
5152 FontDescriptionRun fontDescriptionRun06;
5153 fontDescriptionRun06.characterRun.characterIndex = 60u;
5154 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5155 fontDescriptionRun06.familyLength = fontArabic.size();
5156 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5157 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5158 fontDescriptionRun06.familyDefined = true;
5159 fontDescriptionRun06.weightDefined = false;
5160 fontDescriptionRun06.widthDefined = false;
5161 fontDescriptionRun06.slantDefined = false;
5162 fontDescriptionRun06.sizeDefined = false;
5164 Vector<FontDescriptionRun> fontDescriptionRuns;
5165 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5166 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5167 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5168 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5169 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5170 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5172 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5174 Size textArea( 100.f, 300.f );
5177 "End alignment for the last paragraph.",
5178 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5181 fontDescriptionRuns.Begin(),
5182 Text::HorizontalAlignment::END,
5183 Text::VerticalAlignment::TOP,
5190 if( !AlignTest( data ) )
5192 tet_result(TET_FAIL);
5195 tet_result(TET_PASS);
5199 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5201 ToolkitTestApplication application;
5202 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5204 Layout::Engine engine;
5205 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5207 engine.SetDefaultLineSpacing( 10.f );
5208 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5210 tet_result(TET_PASS);