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,
178 layoutParameters.isLastNewParagraph = isLastNewParagraph;
180 // The initial glyph and the number of glyphs to layout.
181 layoutParameters.startGlyphIndex = data.startIndex;
182 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
183 layoutParameters.startLineIndex = startRemoveIndex;
184 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
186 layoutSize = Vector2::ZERO;
188 const bool updated = engine.LayoutText( layoutParameters,
194 // 4) Compare the results.
196 if( updated != data.updated )
198 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
202 if( layoutSize != data.layoutSize )
204 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
208 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
210 const Vector2& position = *( glyphPositions.Begin() + index );
212 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
214 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
217 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
219 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
224 if( lines.Count() != data.numberOfLines )
226 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
230 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
232 const LineRun& line = *( lines.Begin() + index );
233 const LineRun& expectedLine = *( data.lines + index );
235 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
237 std::cout << " Different line info for line : " << index << std::endl;
239 std::cout << " expected" << std::endl;
240 Print( expectedLine );
243 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
245 std::cout << " Different line info for line : " << index << std::endl;
247 std::cout << " expected" << std::endl;
248 Print( expectedLine );
252 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
254 std::cout << " Different line info for line : " << index << std::endl;
256 std::cout << " expected" << std::endl;
257 Print( expectedLine );
260 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
262 std::cout << " Different line info for line : " << index << std::endl;
264 std::cout << " expected" << std::endl;
265 Print( expectedLine );
269 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
271 std::cout << " Different line info for line : " << index << std::endl;
273 std::cout << " expected" << std::endl;
274 Print( expectedLine );
278 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
280 std::cout << " Different line info for line : " << index << std::endl;
282 std::cout << " expected" << std::endl;
283 Print( expectedLine );
287 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
289 std::cout << " Different line info for line : " << index << std::endl;
291 std::cout << " expected" << std::endl;
292 Print( expectedLine );
296 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
298 std::cout << " Different line info for line : " << index << std::endl;
300 std::cout << " expected" << std::endl;
301 Print( expectedLine );
305 if( line.ellipsis != expectedLine.ellipsis )
307 std::cout << " Different line info for line : " << index << std::endl;
309 std::cout << " expected" << std::endl;
310 Print( expectedLine );
314 // Do not compare the alignment offset as it's not calculated in the layout.
315 // Do not compare the line direction as it's not set in the layout.
321 //////////////////////////////////////////////////////////
323 struct ReLayoutRightToLeftLinesData
325 std::string description;
328 unsigned int numberOfFonts;
329 FontDescriptionRun* fontDescriptions;
330 unsigned int totalNumberOfGlyphs;
332 unsigned int startIndex;
333 unsigned int numberOfCharacters;
336 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
339 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
340 fontClient.SetDpi( 96u, 96u );
342 char* pathNamePtr = get_current_dir_name();
343 const std::string pathName( pathNamePtr );
346 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
347 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
348 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
350 // 1) Create the model.
351 LogicalModelPtr logicalModel;
352 VisualModelPtr visualModel;
356 Vector<FontDescriptionRun> fontDescriptionRuns;
357 if( 0u != data.numberOfFonts )
359 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
360 data.fontDescriptions,
361 data.fontDescriptions + data.numberOfFonts );
364 LayoutOptions options;
365 options.reorder = false;
366 options.align = false;
367 CreateTextModel( data.text,
376 // 2) Call the ReLayoutRightToLeftLines() method.
377 Layout::Engine engine;
378 engine.SetMetrics( metrics );
380 float outlineWidth = visualModel->GetOutlineWidth();
381 Layout::Parameters layoutParameters( data.textArea,
382 logicalModel->mText.Begin(),
383 logicalModel->mLineBreakInfo.Begin(),
384 logicalModel->mWordBreakInfo.Begin(),
385 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
386 visualModel->mGlyphs.Begin(),
387 visualModel->mGlyphsToCharacters.Begin(),
388 visualModel->mCharactersPerGlyph.Begin(),
389 visualModel->mCharactersToGlyph.Begin(),
390 visualModel->mGlyphsPerCharacter.Begin(),
391 visualModel->mGlyphs.Count(),
392 Text::HorizontalAlignment::BEGIN,
393 Text::LineWrap::WORD,
397 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
398 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
400 engine.ReLayoutRightToLeftLines( layoutParameters,
402 data.numberOfCharacters,
403 visualModel->mGlyphPositions );
405 // 3) Compare the results.
406 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
408 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
410 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
414 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
416 const Vector2& position = *( glyphPositions.Begin() + index );
418 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
420 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
423 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
425 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
433 //////////////////////////////////////////////////////////
437 std::string description;
440 unsigned int numberOfFonts;
441 FontDescriptionRun* fontDescriptions;
442 Text::HorizontalAlignment::Type horizontalAlignment;
443 Text::VerticalAlignment::Type verticalAlignment;
444 unsigned int startIndex;
445 unsigned int numberOfCharacters;
446 unsigned int numberOfLines;
450 bool AlignTest( const AlignData& data )
453 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
454 fontClient.SetDpi( 96u, 96u );
456 char* pathNamePtr = get_current_dir_name();
457 const std::string pathName( pathNamePtr );
460 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
461 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
462 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
464 // 1) Create the model.
465 LogicalModelPtr logicalModel;
466 VisualModelPtr visualModel;
470 Vector<FontDescriptionRun> fontDescriptionRuns;
471 if( 0u != data.numberOfFonts )
473 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
474 data.fontDescriptions,
475 data.fontDescriptions + data.numberOfFonts );
478 LayoutOptions options;
479 options.align = false;
480 CreateTextModel( data.text,
489 // Call the Align method.
490 Layout::Engine engine;
491 engine.SetMetrics( metrics );
493 float alignmentOffset = 0.f;
494 engine.Align( data.textArea,
496 data.numberOfCharacters,
497 data.horizontalAlignment,
502 if( data.numberOfLines != visualModel->mLines.Count() )
504 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
508 const LineRun* const linesBuffer = visualModel->mLines.Begin();
509 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
511 const LineRun& line = *( linesBuffer + index );
513 if( line.alignmentOffset != *( data.lineOffsets + index ) )
515 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
525 //////////////////////////////////////////////////////////
527 // UtcDaliTextLayoutSetGetLayout
528 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
529 // UtcDaliTextLayoutSetGetHorizontalAlignment
530 // UtcDaliTextLayoutSetGetVerticalAlignment
531 // UtcDaliTextLayoutSetGetCursorWidth
532 // UtcDaliTextLayoutNoText
533 // UtcDaliTextLayoutSmallTextArea01
534 // UtcDaliTextLayoutSmallTextArea02
535 // UtcDaliTextLayoutMultilineText01
536 // UtcDaliTextLayoutMultilineText02
537 // UtcDaliTextLayoutMultilineText03
538 // UtcDaliTextLayoutMultilineText04
539 // UtcDaliTextLayoutMultilineText05
540 // UtcDaliTextUpdateLayout01
541 // UtcDaliTextUpdateLayout02
542 // UtcDaliTextUpdateLayout03
543 // UtcDaliTextLayoutEllipsis01
544 // UtcDaliTextLayoutEllipsis02
545 // UtcDaliTextLayoutEllipsis03
546 // UtcDaliTextLayoutEllipsis04
547 // UtcDaliTextLayoutEllipsis04
548 // UtcDaliTextReorderLayout01
549 // UtcDaliTextReorderLayout02
550 // UtcDaliTextReorderLayout03
551 // UtcDaliTextReorderLayout04
552 // UtcDaliTextAlign01
553 // UtcDaliTextAlign02
554 // UtcDaliTextAlign03
555 // UtcDaliTextAlign04
556 // UtcDaliTextAlign05
557 // UtcDaliTextAlign06
558 // UtcDaliTextAlign07
559 // UtcDaliTextAlign08
560 // UtcDaliTextAlign09
562 //////////////////////////////////////////////////////////
564 int UtcDaliTextLayoutSetGetLayout(void)
566 ToolkitTestApplication application;
567 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
569 Layout::Engine engine;
571 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
573 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
574 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
576 tet_result(TET_PASS);
580 int UtcDaliTextLayoutSetGetCursorWidth(void)
582 ToolkitTestApplication application;
585 Layout::Engine engine;
587 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
589 engine.SetCursorWidth( 2 );
590 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
592 tet_result(TET_PASS);
596 int UtcDaliTextLayoutNoText(void)
598 ToolkitTestApplication application;
599 tet_infoline(" UtcDaliTextLayoutNoText");
601 Size textArea(100.f, 60.f);
602 Size layoutSize = Vector2::ZERO;
603 LayoutTextData data =
615 Layout::Engine::MULTI_LINE_BOX,
622 if( !LayoutTextTest( data ) )
624 tet_result(TET_FAIL);
627 tet_result(TET_PASS);
631 int UtcDaliTextLayoutSmallTextArea01(void)
633 ToolkitTestApplication application;
634 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
636 // Won't layout the text in multi-line if the width is too small.
638 const std::string fontFamily( "TizenSans" );
640 // Set a known font description
641 FontDescriptionRun fontDescriptionRun;
642 fontDescriptionRun.characterRun.characterIndex = 0u;
643 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
644 fontDescriptionRun.familyLength = fontFamily.size();
645 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
646 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
647 fontDescriptionRun.familyDefined = true;
648 fontDescriptionRun.weightDefined = false;
649 fontDescriptionRun.widthDefined = false;
650 fontDescriptionRun.slantDefined = false;
651 fontDescriptionRun.sizeDefined = false;
653 Vector<FontDescriptionRun> fontDescriptionRuns;
654 fontDescriptionRuns.PushBack( fontDescriptionRun );
655 Size textArea(1.f, 1.f);
656 Size layoutSize = Vector2::ZERO;
657 LayoutTextData data =
659 "Layout text in a small area",
663 fontDescriptionRuns.Begin(),
669 Layout::Engine::MULTI_LINE_BOX,
676 if( !LayoutTextTest( data ) )
678 tet_result(TET_FAIL);
681 tet_result(TET_PASS);
685 int UtcDaliTextLayoutSmallTextArea02(void)
687 ToolkitTestApplication application;
688 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
690 // Will layout the text in single line as it can be scrolled.
692 const std::string fontFamily( "TizenSans" );
694 // Set a known font description
695 FontDescriptionRun fontDescriptionRun;
696 fontDescriptionRun.characterRun.characterIndex = 0u;
697 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
698 fontDescriptionRun.familyLength = fontFamily.size();
699 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
700 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
701 fontDescriptionRun.familyDefined = true;
702 fontDescriptionRun.weightDefined = false;
703 fontDescriptionRun.widthDefined = false;
704 fontDescriptionRun.slantDefined = false;
705 fontDescriptionRun.sizeDefined = false;
707 Vector<FontDescriptionRun> fontDescriptionRuns;
708 fontDescriptionRuns.PushBack( fontDescriptionRun );
709 Size textArea(1.f, 1.f);
710 Size layoutSize(80.f, 20.f);
711 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 };
712 struct LineRun line =
725 Vector<LineRun> lines;
726 lines.PushBack( line );
728 LayoutTextData data =
730 "Layout text in a small area",
734 fontDescriptionRuns.Begin(),
740 Layout::Engine::SINGLE_LINE_BOX,
747 if( !LayoutTextTest( data ) )
749 tet_result(TET_FAIL);
752 tet_result(TET_PASS);
756 int UtcDaliTextLayoutMultilineText01(void)
758 ToolkitTestApplication application;
759 tet_infoline(" UtcDaliTextLayoutMultilineText01");
761 // Layout some lines of left to right text.
763 const std::string fontFamily( "TizenSans" );
765 // Set a known font description
766 FontDescriptionRun fontDescriptionRun1;
767 fontDescriptionRun1.characterRun.characterIndex = 0u;
768 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
769 fontDescriptionRun1.familyLength = fontFamily.size();
770 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
771 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
772 fontDescriptionRun1.familyDefined = true;
773 fontDescriptionRun1.weightDefined = false;
774 fontDescriptionRun1.widthDefined = false;
775 fontDescriptionRun1.slantDefined = false;
776 fontDescriptionRun1.sizeDefined = false;
778 FontDescriptionRun fontDescriptionRun2;
779 fontDescriptionRun2.characterRun.characterIndex = 18u;
780 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
781 fontDescriptionRun2.familyLength = fontFamily.size();
782 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
783 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
784 fontDescriptionRun2.familyDefined = true;
785 fontDescriptionRun2.weightDefined = false;
786 fontDescriptionRun2.widthDefined = false;
787 fontDescriptionRun2.slantDefined = false;
788 fontDescriptionRun2.sizeDefined = false;
790 Vector<FontDescriptionRun> fontDescriptionRuns;
791 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
792 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
793 Size textArea(100.f, 300.f);
794 Size layoutSize(95.f, 97.f);
797 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,
798 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
799 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,
800 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,
801 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
803 struct LineRun line0 =
816 struct LineRun line1 =
829 struct LineRun line2 =
842 struct LineRun line3 =
855 struct LineRun line4 =
868 Vector<LineRun> lines;
869 lines.PushBack( line0 );
870 lines.PushBack( line1 );
871 lines.PushBack( line2 );
872 lines.PushBack( line3 );
873 lines.PushBack( line4 );
875 LayoutTextData data =
877 "Layout simple multi-line text",
878 "Hello world demo.\n"
879 "Layout different lines of text.",
882 fontDescriptionRuns.Begin(),
888 Layout::Engine::MULTI_LINE_BOX,
895 if( !LayoutTextTest( data ) )
897 tet_result(TET_FAIL);
900 tet_result(TET_PASS);
904 int UtcDaliTextLayoutMultilineText02(void)
906 ToolkitTestApplication application;
907 tet_infoline(" UtcDaliTextLayoutMultilineText02");
909 // Layout some lines of bidirectional text.
911 const std::string fontFamily1( "TizenSans" );
913 // Set a known font description
914 FontDescriptionRun fontDescriptionRun1;
915 fontDescriptionRun1.characterRun.characterIndex = 0u;
916 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
917 fontDescriptionRun1.familyLength = fontFamily1.size();
918 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
919 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
920 fontDescriptionRun1.familyDefined = true;
921 fontDescriptionRun1.weightDefined = false;
922 fontDescriptionRun1.widthDefined = false;
923 fontDescriptionRun1.slantDefined = false;
924 fontDescriptionRun1.sizeDefined = false;
926 const std::string fontFamily2( "TizenSansHebrew" );
928 // Set a known font description
929 FontDescriptionRun fontDescriptionRun2;
930 fontDescriptionRun2.characterRun.characterIndex = 17u;
931 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
932 fontDescriptionRun2.familyLength = fontFamily2.size();
933 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
934 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
935 fontDescriptionRun2.familyDefined = true;
936 fontDescriptionRun2.weightDefined = false;
937 fontDescriptionRun2.widthDefined = false;
938 fontDescriptionRun2.slantDefined = false;
939 fontDescriptionRun2.sizeDefined = false;
941 const std::string fontFamily3( "TizenSans" );
943 // Set a known font description
944 FontDescriptionRun fontDescriptionRun3;
945 fontDescriptionRun3.characterRun.characterIndex = 26u;
946 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
947 fontDescriptionRun3.familyLength = fontFamily3.size();
948 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
949 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
950 fontDescriptionRun3.familyDefined = true;
951 fontDescriptionRun3.weightDefined = false;
952 fontDescriptionRun3.widthDefined = false;
953 fontDescriptionRun3.slantDefined = false;
954 fontDescriptionRun3.sizeDefined = false;
956 const std::string fontFamily4( "TizenSansHebrew" );
958 // Set a known font description
959 FontDescriptionRun fontDescriptionRun4;
960 fontDescriptionRun4.characterRun.characterIndex = 28u;
961 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
962 fontDescriptionRun4.familyLength = fontFamily4.size();
963 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
964 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
965 fontDescriptionRun4.familyDefined = true;
966 fontDescriptionRun4.weightDefined = false;
967 fontDescriptionRun4.widthDefined = false;
968 fontDescriptionRun4.slantDefined = false;
969 fontDescriptionRun4.sizeDefined = false;
971 const std::string fontFamily5( "TizenSans" );
973 // Set a known font description
974 FontDescriptionRun fontDescriptionRun5;
975 fontDescriptionRun5.characterRun.characterIndex = 38u;
976 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
977 fontDescriptionRun5.familyLength = fontFamily5.size();
978 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
979 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
980 fontDescriptionRun5.familyDefined = true;
981 fontDescriptionRun5.weightDefined = false;
982 fontDescriptionRun5.widthDefined = false;
983 fontDescriptionRun5.slantDefined = false;
984 fontDescriptionRun5.sizeDefined = false;
986 Vector<FontDescriptionRun> fontDescriptionRuns;
987 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
988 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
989 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
990 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
991 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
992 Size textArea(100.f, 300.f);
993 Size layoutSize(80.f, 120.f);
996 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,
997 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,
998 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
999 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,
1000 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,
1001 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1003 struct LineRun line0 =
1016 struct LineRun line1 =
1029 struct LineRun line2 =
1042 struct LineRun line3 =
1055 struct LineRun line4 =
1068 struct LineRun line5 =
1081 Vector<LineRun> lines;
1082 lines.PushBack( line0 );
1083 lines.PushBack( line1 );
1084 lines.PushBack( line2 );
1085 lines.PushBack( line3 );
1086 lines.PushBack( line4 );
1087 lines.PushBack( line5 );
1089 LayoutTextData data =
1091 "Layout bidirectional text.",
1092 "Hello world demo שלום עולם.\n"
1093 "שלום עולם hello world demo.",
1096 fontDescriptionRuns.Begin(),
1102 Layout::Engine::MULTI_LINE_BOX,
1109 if( !LayoutTextTest( data ) )
1111 tet_result(TET_FAIL);
1114 tet_result(TET_PASS);
1118 int UtcDaliTextLayoutMultilineText03(void)
1120 ToolkitTestApplication application;
1121 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1123 // Layout a long word which doesn't fit in the width of the text area.
1125 const std::string fontFamily( "TizenSans" );
1127 // Set a known font description
1128 FontDescriptionRun fontDescriptionRun;
1129 fontDescriptionRun.characterRun.characterIndex = 0u;
1130 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1131 fontDescriptionRun.familyLength = fontFamily.size();
1132 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1133 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1134 fontDescriptionRun.familyDefined = true;
1135 fontDescriptionRun.weightDefined = false;
1136 fontDescriptionRun.widthDefined = false;
1137 fontDescriptionRun.slantDefined = false;
1138 fontDescriptionRun.sizeDefined = false;
1140 Vector<FontDescriptionRun> fontDescriptionRuns;
1141 fontDescriptionRuns.PushBack( fontDescriptionRun );
1142 Size textArea(100.f, 300.f);
1143 Size layoutSize(96.f, 60.f);
1146 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,
1147 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,
1148 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1150 struct LineRun line0 =
1163 struct LineRun line1 =
1176 struct LineRun line2 =
1189 Vector<LineRun> lines;
1190 lines.PushBack( line0 );
1191 lines.PushBack( line1 );
1192 lines.PushBack( line2 );
1194 LayoutTextData data =
1196 "Layout a long word which doesn't fit in the width of the text area.",
1197 "Helloworlddemohelloworlddemo.",
1200 fontDescriptionRuns.Begin(),
1206 Layout::Engine::MULTI_LINE_BOX,
1213 if( !LayoutTextTest( data ) )
1215 tet_result(TET_FAIL);
1218 tet_result(TET_PASS);
1222 int UtcDaliTextLayoutMultilineText04(void)
1224 ToolkitTestApplication application;
1225 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1227 // Layout simple text ending with a \n. It has to add a void line at the end.
1229 const std::string fontFamily( "TizenSans" );
1231 // Set a known font description
1232 FontDescriptionRun fontDescriptionRun;
1233 fontDescriptionRun.characterRun.characterIndex = 0u;
1234 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1235 fontDescriptionRun.familyLength = fontFamily.size();
1236 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1237 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1238 fontDescriptionRun.familyDefined = true;
1239 fontDescriptionRun.weightDefined = false;
1240 fontDescriptionRun.widthDefined = false;
1241 fontDescriptionRun.slantDefined = false;
1242 fontDescriptionRun.sizeDefined = false;
1244 Vector<FontDescriptionRun> fontDescriptionRuns;
1245 fontDescriptionRuns.PushBack( fontDescriptionRun );
1246 Size textArea(100.f, 300.f);
1247 Size layoutSize(83.f, 40.f);
1250 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
1252 struct LineRun line0 =
1264 struct LineRun line1 =
1277 Vector<LineRun> lines;
1278 lines.PushBack( line0 );
1279 lines.PushBack( line1 );
1281 LayoutTextData data =
1283 "Layout simple text ending with a \n.",
1287 fontDescriptionRuns.Begin(),
1293 Layout::Engine::MULTI_LINE_BOX,
1300 if( !LayoutTextTest( data ) )
1302 tet_result(TET_FAIL);
1305 tet_result(TET_PASS);
1309 int UtcDaliTextLayoutMultilineText05(void)
1311 ToolkitTestApplication application;
1312 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1314 // Layout simple text with one character with a different font size.
1316 const std::string fontFamily( "TizenSans" );
1318 // Set a known font description
1319 FontDescriptionRun fontDescriptionRun1;
1320 fontDescriptionRun1.characterRun.characterIndex = 0u;
1321 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1322 fontDescriptionRun1.familyLength = fontFamily.size();
1323 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1324 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1325 fontDescriptionRun1.familyDefined = true;
1326 fontDescriptionRun1.weightDefined = false;
1327 fontDescriptionRun1.widthDefined = false;
1328 fontDescriptionRun1.slantDefined = false;
1329 fontDescriptionRun1.sizeDefined = false;
1331 FontDescriptionRun fontDescriptionRun2;
1332 fontDescriptionRun2.characterRun.characterIndex = 6u;
1333 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1334 fontDescriptionRun2.familyLength = fontFamily.size();
1335 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1336 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1337 fontDescriptionRun2.size = 1280u;
1338 fontDescriptionRun2.familyDefined = true;
1339 fontDescriptionRun2.weightDefined = false;
1340 fontDescriptionRun2.widthDefined = false;
1341 fontDescriptionRun2.slantDefined = false;
1342 fontDescriptionRun2.sizeDefined = true;
1344 FontDescriptionRun fontDescriptionRun3;
1345 fontDescriptionRun3.characterRun.characterIndex = 7u;
1346 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1347 fontDescriptionRun3.familyLength = fontFamily.size();
1348 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1349 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1350 fontDescriptionRun3.familyDefined = true;
1351 fontDescriptionRun3.weightDefined = false;
1352 fontDescriptionRun3.widthDefined = false;
1353 fontDescriptionRun3.slantDefined = false;
1354 fontDescriptionRun3.sizeDefined = false;
1356 Vector<FontDescriptionRun> fontDescriptionRuns;
1357 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1358 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1359 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1360 Size textArea(100.f, 300.f);
1361 Size layoutSize(88.f, 53.f);
1364 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,
1365 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1367 struct LineRun line0 =
1380 struct LineRun line1 =
1393 Vector<LineRun> lines;
1394 lines.PushBack( line0 );
1395 lines.PushBack( line1 );
1397 LayoutTextData data =
1399 "Layout simple text with one character with a different font size.",
1400 "Hello world demo.",
1403 fontDescriptionRuns.Begin(),
1409 Layout::Engine::MULTI_LINE_BOX,
1416 if( !LayoutTextTest( data ) )
1418 tet_result(TET_FAIL);
1421 tet_result(TET_PASS);
1425 int UtcDaliTextUpdateLayout01(void)
1427 ToolkitTestApplication application;
1428 tet_infoline(" UtcDaliTextUpdateLayout01");
1430 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1432 const std::string fontLatin( "TizenSans" );
1433 const std::string fontHebrew( "TizenSansHebrew" );
1434 const std::string fontArabic( "TizenSansArabic" );
1436 // Set a known font description
1437 FontDescriptionRun fontDescriptionRun01;
1438 fontDescriptionRun01.characterRun.characterIndex = 0u;
1439 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1440 fontDescriptionRun01.familyLength = fontLatin.size();
1441 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1442 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1443 fontDescriptionRun01.familyDefined = true;
1444 fontDescriptionRun01.weightDefined = false;
1445 fontDescriptionRun01.widthDefined = false;
1446 fontDescriptionRun01.slantDefined = false;
1447 fontDescriptionRun01.sizeDefined = false;
1449 // Set a known font description
1450 FontDescriptionRun fontDescriptionRun02;
1451 fontDescriptionRun02.characterRun.characterIndex = 17u;
1452 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1453 fontDescriptionRun02.familyLength = fontHebrew.size();
1454 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1455 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1456 fontDescriptionRun02.familyDefined = true;
1457 fontDescriptionRun02.weightDefined = false;
1458 fontDescriptionRun02.widthDefined = false;
1459 fontDescriptionRun02.slantDefined = false;
1460 fontDescriptionRun02.sizeDefined = false;
1462 // Set a known font description
1463 FontDescriptionRun fontDescriptionRun03;
1464 fontDescriptionRun03.characterRun.characterIndex = 26u;
1465 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1466 fontDescriptionRun03.familyLength = fontLatin.size();
1467 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1468 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1469 fontDescriptionRun03.familyDefined = true;
1470 fontDescriptionRun03.weightDefined = false;
1471 fontDescriptionRun03.widthDefined = false;
1472 fontDescriptionRun03.slantDefined = false;
1473 fontDescriptionRun03.sizeDefined = false;
1475 // Set a known font description
1476 FontDescriptionRun fontDescriptionRun04;
1477 fontDescriptionRun04.characterRun.characterIndex = 28u;
1478 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1479 fontDescriptionRun04.familyLength = fontArabic.size();
1480 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1481 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1482 fontDescriptionRun04.familyDefined = true;
1483 fontDescriptionRun04.weightDefined = false;
1484 fontDescriptionRun04.widthDefined = false;
1485 fontDescriptionRun04.slantDefined = false;
1486 fontDescriptionRun04.sizeDefined = false;
1488 // Set a known font description
1489 FontDescriptionRun fontDescriptionRun05;
1490 fontDescriptionRun05.characterRun.characterIndex = 42u;
1491 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1492 fontDescriptionRun05.familyLength = fontLatin.size();
1493 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1494 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1495 fontDescriptionRun05.familyDefined = true;
1496 fontDescriptionRun05.weightDefined = false;
1497 fontDescriptionRun05.widthDefined = false;
1498 fontDescriptionRun05.slantDefined = false;
1499 fontDescriptionRun05.sizeDefined = false;
1501 // Set a known font description
1502 FontDescriptionRun fontDescriptionRun06;
1503 fontDescriptionRun06.characterRun.characterIndex = 54u;
1504 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1505 fontDescriptionRun06.familyLength = fontHebrew.size();
1506 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1507 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1508 fontDescriptionRun06.familyDefined = true;
1509 fontDescriptionRun06.weightDefined = false;
1510 fontDescriptionRun06.widthDefined = false;
1511 fontDescriptionRun06.slantDefined = false;
1512 fontDescriptionRun06.sizeDefined = false;
1514 // Set a known font description
1515 FontDescriptionRun fontDescriptionRun07;
1516 fontDescriptionRun07.characterRun.characterIndex = 64u;
1517 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1518 fontDescriptionRun07.familyLength = fontHebrew.size();
1519 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1520 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1521 fontDescriptionRun07.familyDefined = true;
1522 fontDescriptionRun07.weightDefined = false;
1523 fontDescriptionRun07.widthDefined = false;
1524 fontDescriptionRun07.slantDefined = false;
1525 fontDescriptionRun07.sizeDefined = false;
1527 // Set a known font description
1528 FontDescriptionRun fontDescriptionRun08;
1529 fontDescriptionRun08.characterRun.characterIndex = 74u;
1530 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1531 fontDescriptionRun08.familyLength = fontLatin.size();
1532 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1533 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1534 fontDescriptionRun08.familyDefined = true;
1535 fontDescriptionRun08.weightDefined = false;
1536 fontDescriptionRun08.widthDefined = false;
1537 fontDescriptionRun08.slantDefined = false;
1538 fontDescriptionRun08.sizeDefined = false;
1540 // Set a known font description
1541 FontDescriptionRun fontDescriptionRun09;
1542 fontDescriptionRun09.characterRun.characterIndex = 92u;
1543 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1544 fontDescriptionRun09.familyLength = fontLatin.size();
1545 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1546 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1547 fontDescriptionRun09.familyDefined = true;
1548 fontDescriptionRun09.weightDefined = false;
1549 fontDescriptionRun09.widthDefined = false;
1550 fontDescriptionRun09.slantDefined = false;
1551 fontDescriptionRun09.sizeDefined = false;
1553 // Set a known font description
1554 FontDescriptionRun fontDescriptionRun10;
1555 fontDescriptionRun10.characterRun.characterIndex = 104u;
1556 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1557 fontDescriptionRun10.familyLength = fontArabic.size();
1558 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1559 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1560 fontDescriptionRun10.familyDefined = true;
1561 fontDescriptionRun10.weightDefined = false;
1562 fontDescriptionRun10.widthDefined = false;
1563 fontDescriptionRun10.slantDefined = false;
1564 fontDescriptionRun10.sizeDefined = false;
1566 // Set a known font description
1567 FontDescriptionRun fontDescriptionRun11;
1568 fontDescriptionRun11.characterRun.characterIndex = 118u;
1569 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1570 fontDescriptionRun11.familyLength = fontHebrew.size();
1571 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1572 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1573 fontDescriptionRun11.familyDefined = true;
1574 fontDescriptionRun11.weightDefined = false;
1575 fontDescriptionRun11.widthDefined = false;
1576 fontDescriptionRun11.slantDefined = false;
1577 fontDescriptionRun11.sizeDefined = false;
1579 // Set a known font description
1580 FontDescriptionRun fontDescriptionRun12;
1581 fontDescriptionRun12.characterRun.characterIndex = 128u;
1582 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1583 fontDescriptionRun12.familyLength = fontLatin.size();
1584 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1585 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1586 fontDescriptionRun12.familyDefined = true;
1587 fontDescriptionRun12.weightDefined = false;
1588 fontDescriptionRun12.widthDefined = false;
1589 fontDescriptionRun12.slantDefined = false;
1590 fontDescriptionRun12.sizeDefined = false;
1592 // Set a known font description
1593 FontDescriptionRun fontDescriptionRun13;
1594 fontDescriptionRun13.characterRun.characterIndex = 145u;
1595 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1596 fontDescriptionRun13.familyLength = fontHebrew.size();
1597 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1598 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1599 fontDescriptionRun13.familyDefined = true;
1600 fontDescriptionRun13.weightDefined = false;
1601 fontDescriptionRun13.widthDefined = false;
1602 fontDescriptionRun13.slantDefined = false;
1603 fontDescriptionRun13.sizeDefined = false;
1605 // Set a known font description
1606 FontDescriptionRun fontDescriptionRun14;
1607 fontDescriptionRun14.characterRun.characterIndex = 154u;
1608 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1609 fontDescriptionRun14.familyLength = fontLatin.size();
1610 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1611 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1612 fontDescriptionRun14.familyDefined = true;
1613 fontDescriptionRun14.weightDefined = false;
1614 fontDescriptionRun14.widthDefined = false;
1615 fontDescriptionRun14.slantDefined = false;
1616 fontDescriptionRun14.sizeDefined = false;
1618 // Set a known font description
1619 FontDescriptionRun fontDescriptionRun15;
1620 fontDescriptionRun15.characterRun.characterIndex = 156u;
1621 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1622 fontDescriptionRun15.familyLength = fontHebrew.size();
1623 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1624 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1625 fontDescriptionRun15.familyDefined = true;
1626 fontDescriptionRun15.weightDefined = false;
1627 fontDescriptionRun15.widthDefined = false;
1628 fontDescriptionRun15.slantDefined = false;
1629 fontDescriptionRun15.sizeDefined = false;
1631 // Set a known font description
1632 FontDescriptionRun fontDescriptionRun16;
1633 fontDescriptionRun16.characterRun.characterIndex = 166u;
1634 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1635 fontDescriptionRun16.familyLength = fontLatin.size();
1636 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1637 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1638 fontDescriptionRun16.familyDefined = true;
1639 fontDescriptionRun16.weightDefined = false;
1640 fontDescriptionRun16.widthDefined = false;
1641 fontDescriptionRun16.slantDefined = false;
1642 fontDescriptionRun16.sizeDefined = false;
1644 // Set a known font description
1645 FontDescriptionRun fontDescriptionRun17;
1646 fontDescriptionRun17.characterRun.characterIndex = 178u;
1647 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1648 fontDescriptionRun17.familyLength = fontArabic.size();
1649 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1650 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1651 fontDescriptionRun17.familyDefined = true;
1652 fontDescriptionRun17.weightDefined = false;
1653 fontDescriptionRun17.widthDefined = false;
1654 fontDescriptionRun17.slantDefined = false;
1655 fontDescriptionRun17.sizeDefined = false;
1657 Vector<FontDescriptionRun> fontDescriptionRuns;
1658 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1659 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1660 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1661 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1662 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1663 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1664 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1665 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1666 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1667 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1668 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1675 Size textArea(100.f, 300.f);
1676 Size layoutSize(92.f, 380.f);
1679 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,
1680 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,
1681 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1682 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,
1683 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,
1684 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1685 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,
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, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1688 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,
1689 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,
1690 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1691 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,
1692 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,
1693 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1694 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,
1695 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,
1696 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,
1699 struct LineRun line01 =
1712 struct LineRun line02 =
1725 struct LineRun line03 =
1738 struct LineRun line04 =
1751 struct LineRun line05 =
1764 struct LineRun line06 =
1777 struct LineRun line07 =
1790 struct LineRun line08 =
1803 struct LineRun line09 =
1816 struct LineRun line10 =
1829 struct LineRun line11 =
1842 struct LineRun line12 =
1855 struct LineRun line13 =
1868 struct LineRun line14 =
1881 struct LineRun line15 =
1894 struct LineRun line16 =
1907 struct LineRun line17 =
1920 struct LineRun line18 =
1933 struct LineRun line19 =
1946 Vector<LineRun> lines;
1947 lines.PushBack( line01 );
1948 lines.PushBack( line02 );
1949 lines.PushBack( line03 );
1950 lines.PushBack( line04 );
1951 lines.PushBack( line05 );
1952 lines.PushBack( line06 );
1953 lines.PushBack( line07 );
1954 lines.PushBack( line08 );
1955 lines.PushBack( line09 );
1956 lines.PushBack( line10 );
1957 lines.PushBack( line11 );
1958 lines.PushBack( line12 );
1959 lines.PushBack( line13 );
1960 lines.PushBack( line14 );
1961 lines.PushBack( line15 );
1962 lines.PushBack( line16 );
1963 lines.PushBack( line17 );
1964 lines.PushBack( line18 );
1965 lines.PushBack( line19 );
1967 LayoutTextData data =
1969 "Layout bidirectional text.",
1970 "Hello world demo שלום עולם.\n"
1971 "مرحبا بالعالم hello world שלום עולם\n"
1972 "שלום עולם hello world demo.\n"
1973 "hello world مرحبا بالعالم שלום עולם\n"
1974 "Hello world demo שלום עולם.\n"
1975 "שלום עולם hello world مرحبا بالعالم\n",
1978 fontDescriptionRuns.Begin(),
1984 Layout::Engine::MULTI_LINE_BOX,
1991 if( !LayoutTextTest( data ) )
1993 tet_result(TET_FAIL);
1996 tet_result(TET_PASS);
2000 int UtcDaliTextUpdateLayout02(void)
2002 ToolkitTestApplication application;
2003 tet_infoline(" UtcDaliTextUpdateLayout02");
2005 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2007 const std::string fontLatin( "TizenSans" );
2008 const std::string fontHebrew( "TizenSansHebrew" );
2009 const std::string fontArabic( "TizenSansArabic" );
2011 // Set a known font description
2012 FontDescriptionRun fontDescriptionRun01;
2013 fontDescriptionRun01.characterRun.characterIndex = 0u;
2014 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2015 fontDescriptionRun01.familyLength = fontLatin.size();
2016 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2017 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2018 fontDescriptionRun01.familyDefined = true;
2019 fontDescriptionRun01.weightDefined = false;
2020 fontDescriptionRun01.widthDefined = false;
2021 fontDescriptionRun01.slantDefined = false;
2022 fontDescriptionRun01.sizeDefined = false;
2024 // Set a known font description
2025 FontDescriptionRun fontDescriptionRun02;
2026 fontDescriptionRun02.characterRun.characterIndex = 17u;
2027 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2028 fontDescriptionRun02.familyLength = fontHebrew.size();
2029 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2030 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2031 fontDescriptionRun02.familyDefined = true;
2032 fontDescriptionRun02.weightDefined = false;
2033 fontDescriptionRun02.widthDefined = false;
2034 fontDescriptionRun02.slantDefined = false;
2035 fontDescriptionRun02.sizeDefined = false;
2037 // Set a known font description
2038 FontDescriptionRun fontDescriptionRun03;
2039 fontDescriptionRun03.characterRun.characterIndex = 26u;
2040 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2041 fontDescriptionRun03.familyLength = fontLatin.size();
2042 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2043 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2044 fontDescriptionRun03.familyDefined = true;
2045 fontDescriptionRun03.weightDefined = false;
2046 fontDescriptionRun03.widthDefined = false;
2047 fontDescriptionRun03.slantDefined = false;
2048 fontDescriptionRun03.sizeDefined = false;
2050 // Set a known font description
2051 FontDescriptionRun fontDescriptionRun04;
2052 fontDescriptionRun04.characterRun.characterIndex = 28u;
2053 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2054 fontDescriptionRun04.familyLength = fontArabic.size();
2055 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2056 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2057 fontDescriptionRun04.familyDefined = true;
2058 fontDescriptionRun04.weightDefined = false;
2059 fontDescriptionRun04.widthDefined = false;
2060 fontDescriptionRun04.slantDefined = false;
2061 fontDescriptionRun04.sizeDefined = false;
2063 // Set a known font description
2064 FontDescriptionRun fontDescriptionRun05;
2065 fontDescriptionRun05.characterRun.characterIndex = 42u;
2066 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2067 fontDescriptionRun05.familyLength = fontLatin.size();
2068 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2069 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2070 fontDescriptionRun05.familyDefined = true;
2071 fontDescriptionRun05.weightDefined = false;
2072 fontDescriptionRun05.widthDefined = false;
2073 fontDescriptionRun05.slantDefined = false;
2074 fontDescriptionRun05.sizeDefined = false;
2076 // Set a known font description
2077 FontDescriptionRun fontDescriptionRun06;
2078 fontDescriptionRun06.characterRun.characterIndex = 54u;
2079 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2080 fontDescriptionRun06.familyLength = fontHebrew.size();
2081 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2082 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2083 fontDescriptionRun06.familyDefined = true;
2084 fontDescriptionRun06.weightDefined = false;
2085 fontDescriptionRun06.widthDefined = false;
2086 fontDescriptionRun06.slantDefined = false;
2087 fontDescriptionRun06.sizeDefined = false;
2089 // Set a known font description
2090 FontDescriptionRun fontDescriptionRun07;
2091 fontDescriptionRun07.characterRun.characterIndex = 64u;
2092 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2093 fontDescriptionRun07.familyLength = fontHebrew.size();
2094 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2095 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2096 fontDescriptionRun07.familyDefined = true;
2097 fontDescriptionRun07.weightDefined = false;
2098 fontDescriptionRun07.widthDefined = false;
2099 fontDescriptionRun07.slantDefined = false;
2100 fontDescriptionRun07.sizeDefined = false;
2102 // Set a known font description
2103 FontDescriptionRun fontDescriptionRun08;
2104 fontDescriptionRun08.characterRun.characterIndex = 74u;
2105 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2106 fontDescriptionRun08.familyLength = fontLatin.size();
2107 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2108 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2109 fontDescriptionRun08.familyDefined = true;
2110 fontDescriptionRun08.weightDefined = false;
2111 fontDescriptionRun08.widthDefined = false;
2112 fontDescriptionRun08.slantDefined = false;
2113 fontDescriptionRun08.sizeDefined = false;
2115 // Set a known font description
2116 FontDescriptionRun fontDescriptionRun09;
2117 fontDescriptionRun09.characterRun.characterIndex = 92u;
2118 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2119 fontDescriptionRun09.familyLength = fontLatin.size();
2120 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2121 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2122 fontDescriptionRun09.familyDefined = true;
2123 fontDescriptionRun09.weightDefined = false;
2124 fontDescriptionRun09.widthDefined = false;
2125 fontDescriptionRun09.slantDefined = false;
2126 fontDescriptionRun09.sizeDefined = false;
2128 // Set a known font description
2129 FontDescriptionRun fontDescriptionRun10;
2130 fontDescriptionRun10.characterRun.characterIndex = 104u;
2131 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2132 fontDescriptionRun10.familyLength = fontArabic.size();
2133 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2134 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2135 fontDescriptionRun10.familyDefined = true;
2136 fontDescriptionRun10.weightDefined = false;
2137 fontDescriptionRun10.widthDefined = false;
2138 fontDescriptionRun10.slantDefined = false;
2139 fontDescriptionRun10.sizeDefined = false;
2141 // Set a known font description
2142 FontDescriptionRun fontDescriptionRun11;
2143 fontDescriptionRun11.characterRun.characterIndex = 118u;
2144 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2145 fontDescriptionRun11.familyLength = fontHebrew.size();
2146 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2147 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2148 fontDescriptionRun11.familyDefined = true;
2149 fontDescriptionRun11.weightDefined = false;
2150 fontDescriptionRun11.widthDefined = false;
2151 fontDescriptionRun11.slantDefined = false;
2152 fontDescriptionRun11.sizeDefined = false;
2154 // Set a known font description
2155 FontDescriptionRun fontDescriptionRun12;
2156 fontDescriptionRun12.characterRun.characterIndex = 128u;
2157 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2158 fontDescriptionRun12.familyLength = fontLatin.size();
2159 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2160 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2161 fontDescriptionRun12.familyDefined = true;
2162 fontDescriptionRun12.weightDefined = false;
2163 fontDescriptionRun12.widthDefined = false;
2164 fontDescriptionRun12.slantDefined = false;
2165 fontDescriptionRun12.sizeDefined = false;
2167 // Set a known font description
2168 FontDescriptionRun fontDescriptionRun13;
2169 fontDescriptionRun13.characterRun.characterIndex = 145u;
2170 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2171 fontDescriptionRun13.familyLength = fontHebrew.size();
2172 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2173 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2174 fontDescriptionRun13.familyDefined = true;
2175 fontDescriptionRun13.weightDefined = false;
2176 fontDescriptionRun13.widthDefined = false;
2177 fontDescriptionRun13.slantDefined = false;
2178 fontDescriptionRun13.sizeDefined = false;
2180 // Set a known font description
2181 FontDescriptionRun fontDescriptionRun14;
2182 fontDescriptionRun14.characterRun.characterIndex = 154u;
2183 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2184 fontDescriptionRun14.familyLength = fontLatin.size();
2185 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2186 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2187 fontDescriptionRun14.familyDefined = true;
2188 fontDescriptionRun14.weightDefined = false;
2189 fontDescriptionRun14.widthDefined = false;
2190 fontDescriptionRun14.slantDefined = false;
2191 fontDescriptionRun14.sizeDefined = false;
2193 // Set a known font description
2194 FontDescriptionRun fontDescriptionRun15;
2195 fontDescriptionRun15.characterRun.characterIndex = 156u;
2196 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2197 fontDescriptionRun15.familyLength = fontHebrew.size();
2198 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2199 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2200 fontDescriptionRun15.familyDefined = true;
2201 fontDescriptionRun15.weightDefined = false;
2202 fontDescriptionRun15.widthDefined = false;
2203 fontDescriptionRun15.slantDefined = false;
2204 fontDescriptionRun15.sizeDefined = false;
2206 // Set a known font description
2207 FontDescriptionRun fontDescriptionRun16;
2208 fontDescriptionRun16.characterRun.characterIndex = 166u;
2209 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2210 fontDescriptionRun16.familyLength = fontLatin.size();
2211 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2212 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2213 fontDescriptionRun16.familyDefined = true;
2214 fontDescriptionRun16.weightDefined = false;
2215 fontDescriptionRun16.widthDefined = false;
2216 fontDescriptionRun16.slantDefined = false;
2217 fontDescriptionRun16.sizeDefined = false;
2219 // Set a known font description
2220 FontDescriptionRun fontDescriptionRun17;
2221 fontDescriptionRun17.characterRun.characterIndex = 178u;
2222 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2223 fontDescriptionRun17.familyLength = fontArabic.size();
2224 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2225 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2226 fontDescriptionRun17.familyDefined = true;
2227 fontDescriptionRun17.weightDefined = false;
2228 fontDescriptionRun17.widthDefined = false;
2229 fontDescriptionRun17.slantDefined = false;
2230 fontDescriptionRun17.sizeDefined = false;
2232 Vector<FontDescriptionRun> fontDescriptionRuns;
2233 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2234 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2235 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2236 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2240 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2241 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2250 Size textArea(100.f, 300.f);
2251 Size layoutSize(92.f, 380.f);
2254 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,
2255 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,
2256 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2257 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,
2258 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,
2259 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2260 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,
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, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2263 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,
2264 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,
2265 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2266 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,
2267 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,
2268 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2269 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,
2270 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,
2271 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,
2274 struct LineRun line01 =
2287 struct LineRun line02 =
2300 struct LineRun line03 =
2313 struct LineRun line04 =
2326 struct LineRun line05 =
2339 struct LineRun line06 =
2352 struct LineRun line07 =
2365 struct LineRun line08 =
2378 struct LineRun line09 =
2391 struct LineRun line10 =
2404 struct LineRun line11 =
2417 struct LineRun line12 =
2430 struct LineRun line13 =
2443 struct LineRun line14 =
2456 struct LineRun line15 =
2469 struct LineRun line16 =
2482 struct LineRun line17 =
2495 struct LineRun line18 =
2508 struct LineRun line19 =
2521 Vector<LineRun> lines;
2522 lines.PushBack( line01 );
2523 lines.PushBack( line02 );
2524 lines.PushBack( line03 );
2525 lines.PushBack( line04 );
2526 lines.PushBack( line05 );
2527 lines.PushBack( line06 );
2528 lines.PushBack( line07 );
2529 lines.PushBack( line08 );
2530 lines.PushBack( line09 );
2531 lines.PushBack( line10 );
2532 lines.PushBack( line11 );
2533 lines.PushBack( line12 );
2534 lines.PushBack( line13 );
2535 lines.PushBack( line14 );
2536 lines.PushBack( line15 );
2537 lines.PushBack( line16 );
2538 lines.PushBack( line17 );
2539 lines.PushBack( line18 );
2540 lines.PushBack( line19 );
2542 LayoutTextData data =
2544 "Layout bidirectional text.",
2545 "Hello world demo שלום עולם.\n"
2546 "مرحبا بالعالم hello world שלום עולם\n"
2547 "שלום עולם hello world demo.\n"
2548 "hello world مرحبا بالعالم שלום עולם\n"
2549 "Hello world demo שלום עולם.\n"
2550 "שלום עולם hello world مرحبا بالعالم\n",
2553 fontDescriptionRuns.Begin(),
2559 Layout::Engine::MULTI_LINE_BOX,
2566 if( !LayoutTextTest( data ) )
2568 tet_result(TET_FAIL);
2571 tet_result(TET_PASS);
2575 int UtcDaliTextUpdateLayout03(void)
2577 ToolkitTestApplication application;
2578 tet_infoline(" UtcDaliTextUpdateLayout03");
2580 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2582 const std::string fontLatin( "TizenSans" );
2583 const std::string fontHebrew( "TizenSansHebrew" );
2584 const std::string fontArabic( "TizenSansArabic" );
2586 // Set a known font description
2587 FontDescriptionRun fontDescriptionRun01;
2588 fontDescriptionRun01.characterRun.characterIndex = 0u;
2589 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2590 fontDescriptionRun01.familyLength = fontLatin.size();
2591 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2592 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2593 fontDescriptionRun01.familyDefined = true;
2594 fontDescriptionRun01.weightDefined = false;
2595 fontDescriptionRun01.widthDefined = false;
2596 fontDescriptionRun01.slantDefined = false;
2597 fontDescriptionRun01.sizeDefined = false;
2599 // Set a known font description
2600 FontDescriptionRun fontDescriptionRun02;
2601 fontDescriptionRun02.characterRun.characterIndex = 17u;
2602 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2603 fontDescriptionRun02.familyLength = fontHebrew.size();
2604 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2605 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2606 fontDescriptionRun02.familyDefined = true;
2607 fontDescriptionRun02.weightDefined = false;
2608 fontDescriptionRun02.widthDefined = false;
2609 fontDescriptionRun02.slantDefined = false;
2610 fontDescriptionRun02.sizeDefined = false;
2612 // Set a known font description
2613 FontDescriptionRun fontDescriptionRun03;
2614 fontDescriptionRun03.characterRun.characterIndex = 26u;
2615 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2616 fontDescriptionRun03.familyLength = fontLatin.size();
2617 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2618 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2619 fontDescriptionRun03.familyDefined = true;
2620 fontDescriptionRun03.weightDefined = false;
2621 fontDescriptionRun03.widthDefined = false;
2622 fontDescriptionRun03.slantDefined = false;
2623 fontDescriptionRun03.sizeDefined = false;
2625 // Set a known font description
2626 FontDescriptionRun fontDescriptionRun04;
2627 fontDescriptionRun04.characterRun.characterIndex = 28u;
2628 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2629 fontDescriptionRun04.familyLength = fontArabic.size();
2630 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2631 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2632 fontDescriptionRun04.familyDefined = true;
2633 fontDescriptionRun04.weightDefined = false;
2634 fontDescriptionRun04.widthDefined = false;
2635 fontDescriptionRun04.slantDefined = false;
2636 fontDescriptionRun04.sizeDefined = false;
2638 // Set a known font description
2639 FontDescriptionRun fontDescriptionRun05;
2640 fontDescriptionRun05.characterRun.characterIndex = 42u;
2641 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2642 fontDescriptionRun05.familyLength = fontLatin.size();
2643 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2644 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2645 fontDescriptionRun05.familyDefined = true;
2646 fontDescriptionRun05.weightDefined = false;
2647 fontDescriptionRun05.widthDefined = false;
2648 fontDescriptionRun05.slantDefined = false;
2649 fontDescriptionRun05.sizeDefined = false;
2651 // Set a known font description
2652 FontDescriptionRun fontDescriptionRun06;
2653 fontDescriptionRun06.characterRun.characterIndex = 54u;
2654 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2655 fontDescriptionRun06.familyLength = fontHebrew.size();
2656 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2657 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2658 fontDescriptionRun06.familyDefined = true;
2659 fontDescriptionRun06.weightDefined = false;
2660 fontDescriptionRun06.widthDefined = false;
2661 fontDescriptionRun06.slantDefined = false;
2662 fontDescriptionRun06.sizeDefined = false;
2664 // Set a known font description
2665 FontDescriptionRun fontDescriptionRun07;
2666 fontDescriptionRun07.characterRun.characterIndex = 64u;
2667 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2668 fontDescriptionRun07.familyLength = fontHebrew.size();
2669 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2670 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2671 fontDescriptionRun07.familyDefined = true;
2672 fontDescriptionRun07.weightDefined = false;
2673 fontDescriptionRun07.widthDefined = false;
2674 fontDescriptionRun07.slantDefined = false;
2675 fontDescriptionRun07.sizeDefined = false;
2677 // Set a known font description
2678 FontDescriptionRun fontDescriptionRun08;
2679 fontDescriptionRun08.characterRun.characterIndex = 74u;
2680 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2681 fontDescriptionRun08.familyLength = fontLatin.size();
2682 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2683 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2684 fontDescriptionRun08.familyDefined = true;
2685 fontDescriptionRun08.weightDefined = false;
2686 fontDescriptionRun08.widthDefined = false;
2687 fontDescriptionRun08.slantDefined = false;
2688 fontDescriptionRun08.sizeDefined = false;
2690 // Set a known font description
2691 FontDescriptionRun fontDescriptionRun09;
2692 fontDescriptionRun09.characterRun.characterIndex = 92u;
2693 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2694 fontDescriptionRun09.familyLength = fontLatin.size();
2695 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2696 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2697 fontDescriptionRun09.familyDefined = true;
2698 fontDescriptionRun09.weightDefined = false;
2699 fontDescriptionRun09.widthDefined = false;
2700 fontDescriptionRun09.slantDefined = false;
2701 fontDescriptionRun09.sizeDefined = false;
2703 // Set a known font description
2704 FontDescriptionRun fontDescriptionRun10;
2705 fontDescriptionRun10.characterRun.characterIndex = 104u;
2706 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2707 fontDescriptionRun10.familyLength = fontArabic.size();
2708 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2709 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2710 fontDescriptionRun10.familyDefined = true;
2711 fontDescriptionRun10.weightDefined = false;
2712 fontDescriptionRun10.widthDefined = false;
2713 fontDescriptionRun10.slantDefined = false;
2714 fontDescriptionRun10.sizeDefined = false;
2716 // Set a known font description
2717 FontDescriptionRun fontDescriptionRun11;
2718 fontDescriptionRun11.characterRun.characterIndex = 118u;
2719 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2720 fontDescriptionRun11.familyLength = fontHebrew.size();
2721 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2722 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2723 fontDescriptionRun11.familyDefined = true;
2724 fontDescriptionRun11.weightDefined = false;
2725 fontDescriptionRun11.widthDefined = false;
2726 fontDescriptionRun11.slantDefined = false;
2727 fontDescriptionRun11.sizeDefined = false;
2729 // Set a known font description
2730 FontDescriptionRun fontDescriptionRun12;
2731 fontDescriptionRun12.characterRun.characterIndex = 128u;
2732 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2733 fontDescriptionRun12.familyLength = fontLatin.size();
2734 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2735 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2736 fontDescriptionRun12.familyDefined = true;
2737 fontDescriptionRun12.weightDefined = false;
2738 fontDescriptionRun12.widthDefined = false;
2739 fontDescriptionRun12.slantDefined = false;
2740 fontDescriptionRun12.sizeDefined = false;
2742 // Set a known font description
2743 FontDescriptionRun fontDescriptionRun13;
2744 fontDescriptionRun13.characterRun.characterIndex = 145u;
2745 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2746 fontDescriptionRun13.familyLength = fontHebrew.size();
2747 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2748 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2749 fontDescriptionRun13.familyDefined = true;
2750 fontDescriptionRun13.weightDefined = false;
2751 fontDescriptionRun13.widthDefined = false;
2752 fontDescriptionRun13.slantDefined = false;
2753 fontDescriptionRun13.sizeDefined = false;
2755 // Set a known font description
2756 FontDescriptionRun fontDescriptionRun14;
2757 fontDescriptionRun14.characterRun.characterIndex = 154u;
2758 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2759 fontDescriptionRun14.familyLength = fontLatin.size();
2760 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2761 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2762 fontDescriptionRun14.familyDefined = true;
2763 fontDescriptionRun14.weightDefined = false;
2764 fontDescriptionRun14.widthDefined = false;
2765 fontDescriptionRun14.slantDefined = false;
2766 fontDescriptionRun14.sizeDefined = false;
2768 // Set a known font description
2769 FontDescriptionRun fontDescriptionRun15;
2770 fontDescriptionRun15.characterRun.characterIndex = 156u;
2771 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2772 fontDescriptionRun15.familyLength = fontHebrew.size();
2773 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2774 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2775 fontDescriptionRun15.familyDefined = true;
2776 fontDescriptionRun15.weightDefined = false;
2777 fontDescriptionRun15.widthDefined = false;
2778 fontDescriptionRun15.slantDefined = false;
2779 fontDescriptionRun15.sizeDefined = false;
2781 // Set a known font description
2782 FontDescriptionRun fontDescriptionRun16;
2783 fontDescriptionRun16.characterRun.characterIndex = 166u;
2784 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2785 fontDescriptionRun16.familyLength = fontLatin.size();
2786 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2787 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2788 fontDescriptionRun16.familyDefined = true;
2789 fontDescriptionRun16.weightDefined = false;
2790 fontDescriptionRun16.widthDefined = false;
2791 fontDescriptionRun16.slantDefined = false;
2792 fontDescriptionRun16.sizeDefined = false;
2794 // Set a known font description
2795 FontDescriptionRun fontDescriptionRun17;
2796 fontDescriptionRun17.characterRun.characterIndex = 178u;
2797 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2798 fontDescriptionRun17.familyLength = fontArabic.size();
2799 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2800 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2801 fontDescriptionRun17.familyDefined = true;
2802 fontDescriptionRun17.weightDefined = false;
2803 fontDescriptionRun17.widthDefined = false;
2804 fontDescriptionRun17.slantDefined = false;
2805 fontDescriptionRun17.sizeDefined = false;
2807 Vector<FontDescriptionRun> fontDescriptionRuns;
2808 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2809 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2810 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2811 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2812 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2813 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2814 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2815 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2816 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2817 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2818 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2825 Size textArea(100.f, 300.f);
2826 Size layoutSize(92.f, 380.f);
2829 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,
2830 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,
2831 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2832 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,
2833 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,
2834 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2835 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,
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, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2838 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,
2839 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,
2840 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2841 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,
2842 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,
2843 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2844 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,
2845 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,
2846 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,
2849 struct LineRun line01 =
2862 struct LineRun line02 =
2875 struct LineRun line03 =
2888 struct LineRun line04 =
2901 struct LineRun line05 =
2914 struct LineRun line06 =
2927 struct LineRun line07 =
2940 struct LineRun line08 =
2953 struct LineRun line09 =
2966 struct LineRun line10 =
2979 struct LineRun line11 =
2992 struct LineRun line12 =
3005 struct LineRun line13 =
3018 struct LineRun line14 =
3031 struct LineRun line15 =
3044 struct LineRun line16 =
3057 struct LineRun line17 =
3070 struct LineRun line18 =
3083 struct LineRun line19 =
3096 Vector<LineRun> lines;
3097 lines.PushBack( line01 );
3098 lines.PushBack( line02 );
3099 lines.PushBack( line03 );
3100 lines.PushBack( line04 );
3101 lines.PushBack( line05 );
3102 lines.PushBack( line06 );
3103 lines.PushBack( line07 );
3104 lines.PushBack( line08 );
3105 lines.PushBack( line09 );
3106 lines.PushBack( line10 );
3107 lines.PushBack( line11 );
3108 lines.PushBack( line12 );
3109 lines.PushBack( line13 );
3110 lines.PushBack( line14 );
3111 lines.PushBack( line15 );
3112 lines.PushBack( line16 );
3113 lines.PushBack( line17 );
3114 lines.PushBack( line18 );
3115 lines.PushBack( line19 );
3117 LayoutTextData data =
3119 "Layout bidirectional text.",
3120 "Hello world demo שלום עולם.\n"
3121 "مرحبا بالعالم hello world שלום עולם\n"
3122 "שלום עולם hello world demo.\n"
3123 "hello world مرحبا بالعالم שלום עולם\n"
3124 "Hello world demo שלום עולם.\n"
3125 "שלום עולם hello world مرحبا بالعالم\n",
3128 fontDescriptionRuns.Begin(),
3134 Layout::Engine::MULTI_LINE_BOX,
3141 if( !LayoutTextTest( data ) )
3143 tet_result(TET_FAIL);
3146 tet_result(TET_PASS);
3150 int UtcDaliTextLayoutEllipsis01(void)
3152 ToolkitTestApplication application;
3153 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3155 // Layout single-line LTR text with ellipsis.
3157 const std::string fontLatin( "TizenSans" );
3159 // Set a known font description
3160 FontDescriptionRun fontDescriptionRun01;
3161 fontDescriptionRun01.characterRun.characterIndex = 0u;
3162 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3163 fontDescriptionRun01.familyLength = fontLatin.size();
3164 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3165 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3166 fontDescriptionRun01.familyDefined = true;
3167 fontDescriptionRun01.weightDefined = false;
3168 fontDescriptionRun01.widthDefined = false;
3169 fontDescriptionRun01.slantDefined = false;
3170 fontDescriptionRun01.sizeDefined = false;
3172 Vector<FontDescriptionRun> fontDescriptionRuns;
3173 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3175 struct LineRun line01 =
3188 Vector<LineRun> lines;
3189 lines.PushBack( line01 );
3193 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,
3196 Size textArea( 100.f, 50.f );
3197 Size layoutSize( 100.f, 20.f );
3199 LayoutTextData data =
3201 "Layout single-line LTR text with ellipsis.",
3202 "Hello world demo hello world demo hello world demo.",
3205 fontDescriptionRuns.Begin(),
3211 Layout::Engine::SINGLE_LINE_BOX,
3218 if( !LayoutTextTest( data ) )
3220 tet_result(TET_FAIL);
3223 tet_result(TET_PASS);
3227 int UtcDaliTextLayoutEllipsis02(void)
3229 ToolkitTestApplication application;
3230 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3232 // Layout multi-line LTR text with ellipsis.
3234 const std::string fontLatin( "TizenSans" );
3236 // Set a known font description
3237 FontDescriptionRun fontDescriptionRun01;
3238 fontDescriptionRun01.characterRun.characterIndex = 0u;
3239 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3240 fontDescriptionRun01.familyLength = fontLatin.size();
3241 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3242 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3243 fontDescriptionRun01.familyDefined = true;
3244 fontDescriptionRun01.weightDefined = false;
3245 fontDescriptionRun01.widthDefined = false;
3246 fontDescriptionRun01.slantDefined = false;
3247 fontDescriptionRun01.sizeDefined = false;
3249 Vector<FontDescriptionRun> fontDescriptionRuns;
3250 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3252 struct LineRun line01 =
3265 struct LineRun line02 =
3278 Vector<LineRun> lines;
3279 lines.PushBack( line01 );
3280 lines.PushBack( line02 );
3284 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,
3285 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,
3288 Size textArea( 100.f, 50.f );
3289 Size layoutSize( 100.f, 40.f );
3291 LayoutTextData data =
3293 "Layout multi-line LTR text with ellipsis.",
3294 "Hello world demo hello world demo hello world demo.",
3297 fontDescriptionRuns.Begin(),
3303 Layout::Engine::MULTI_LINE_BOX,
3310 if( !LayoutTextTest( data ) )
3312 tet_result(TET_FAIL);
3315 tet_result(TET_PASS);
3319 int UtcDaliTextLayoutEllipsis03(void)
3321 ToolkitTestApplication application;
3322 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3324 // Layout single-line RTL text with ellipsis.
3326 const std::string fontHebrew( "TizenSansHebrew" );
3327 const std::string fontArabic( "TizenSansArabic" );
3329 // Set a known font description
3330 FontDescriptionRun fontDescriptionRun01;
3331 fontDescriptionRun01.characterRun.characterIndex = 0u;
3332 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3333 fontDescriptionRun01.familyLength = fontHebrew.size();
3334 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3335 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3336 fontDescriptionRun01.familyDefined = true;
3337 fontDescriptionRun01.weightDefined = false;
3338 fontDescriptionRun01.widthDefined = false;
3339 fontDescriptionRun01.slantDefined = false;
3340 fontDescriptionRun01.sizeDefined = false;
3342 FontDescriptionRun fontDescriptionRun02;
3343 fontDescriptionRun02.characterRun.characterIndex = 10u;
3344 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3345 fontDescriptionRun02.familyLength = fontArabic.size();
3346 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3347 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3348 fontDescriptionRun02.familyDefined = true;
3349 fontDescriptionRun02.weightDefined = false;
3350 fontDescriptionRun02.widthDefined = false;
3351 fontDescriptionRun02.slantDefined = false;
3352 fontDescriptionRun02.sizeDefined = false;
3354 FontDescriptionRun fontDescriptionRun03;
3355 fontDescriptionRun03.characterRun.characterIndex = 24u;
3356 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3357 fontDescriptionRun03.familyLength = fontHebrew.size();
3358 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3359 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3360 fontDescriptionRun03.familyDefined = true;
3361 fontDescriptionRun03.weightDefined = false;
3362 fontDescriptionRun03.widthDefined = false;
3363 fontDescriptionRun03.slantDefined = false;
3364 fontDescriptionRun03.sizeDefined = false;
3366 FontDescriptionRun fontDescriptionRun04;
3367 fontDescriptionRun04.characterRun.characterIndex = 34u;
3368 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3369 fontDescriptionRun04.familyLength = fontArabic.size();
3370 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3371 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3372 fontDescriptionRun04.familyDefined = true;
3373 fontDescriptionRun04.weightDefined = false;
3374 fontDescriptionRun04.widthDefined = false;
3375 fontDescriptionRun04.slantDefined = false;
3376 fontDescriptionRun04.sizeDefined = false;
3378 FontDescriptionRun fontDescriptionRun05;
3379 fontDescriptionRun05.characterRun.characterIndex = 48u;
3380 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3381 fontDescriptionRun05.familyLength = fontHebrew.size();
3382 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3383 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3384 fontDescriptionRun05.familyDefined = true;
3385 fontDescriptionRun05.weightDefined = false;
3386 fontDescriptionRun05.widthDefined = false;
3387 fontDescriptionRun05.slantDefined = false;
3388 fontDescriptionRun05.sizeDefined = false;
3390 FontDescriptionRun fontDescriptionRun06;
3391 fontDescriptionRun06.characterRun.characterIndex = 58u;
3392 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3393 fontDescriptionRun06.familyLength = fontArabic.size();
3394 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3395 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3396 fontDescriptionRun06.familyDefined = true;
3397 fontDescriptionRun06.weightDefined = false;
3398 fontDescriptionRun06.widthDefined = false;
3399 fontDescriptionRun06.slantDefined = false;
3400 fontDescriptionRun06.sizeDefined = false;
3402 Vector<FontDescriptionRun> fontDescriptionRuns;
3403 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3404 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3405 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3406 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3407 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3408 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3410 struct LineRun line01 =
3423 Vector<LineRun> lines;
3424 lines.PushBack( line01 );
3428 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,
3431 Size textArea( 100.f, 50.f );
3432 Size layoutSize( 100.f, 20.f );
3434 LayoutTextData data =
3436 "Layout single-line RTL text with ellipsis.",
3437 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3440 fontDescriptionRuns.Begin(),
3446 Layout::Engine::SINGLE_LINE_BOX,
3453 if( !LayoutTextTest( data ) )
3455 tet_result(TET_FAIL);
3458 tet_result(TET_PASS);
3462 int UtcDaliTextLayoutEllipsis04(void)
3464 ToolkitTestApplication application;
3465 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3467 // Layout multi-line RTL text with ellipsis.
3469 const std::string fontHebrew( "TizenSansHebrew" );
3470 const std::string fontArabic( "TizenSansArabic" );
3472 // Set a known font description
3473 FontDescriptionRun fontDescriptionRun01;
3474 fontDescriptionRun01.characterRun.characterIndex = 0u;
3475 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3476 fontDescriptionRun01.familyLength = fontHebrew.size();
3477 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3478 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3479 fontDescriptionRun01.familyDefined = true;
3480 fontDescriptionRun01.weightDefined = false;
3481 fontDescriptionRun01.widthDefined = false;
3482 fontDescriptionRun01.slantDefined = false;
3483 fontDescriptionRun01.sizeDefined = false;
3485 FontDescriptionRun fontDescriptionRun02;
3486 fontDescriptionRun02.characterRun.characterIndex = 10u;
3487 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3488 fontDescriptionRun02.familyLength = fontArabic.size();
3489 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3490 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3491 fontDescriptionRun02.familyDefined = true;
3492 fontDescriptionRun02.weightDefined = false;
3493 fontDescriptionRun02.widthDefined = false;
3494 fontDescriptionRun02.slantDefined = false;
3495 fontDescriptionRun02.sizeDefined = false;
3497 FontDescriptionRun fontDescriptionRun03;
3498 fontDescriptionRun03.characterRun.characterIndex = 24u;
3499 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3500 fontDescriptionRun03.familyLength = fontHebrew.size();
3501 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3502 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3503 fontDescriptionRun03.familyDefined = true;
3504 fontDescriptionRun03.weightDefined = false;
3505 fontDescriptionRun03.widthDefined = false;
3506 fontDescriptionRun03.slantDefined = false;
3507 fontDescriptionRun03.sizeDefined = false;
3509 FontDescriptionRun fontDescriptionRun04;
3510 fontDescriptionRun04.characterRun.characterIndex = 34u;
3511 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3512 fontDescriptionRun04.familyLength = fontArabic.size();
3513 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3514 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3515 fontDescriptionRun04.familyDefined = true;
3516 fontDescriptionRun04.weightDefined = false;
3517 fontDescriptionRun04.widthDefined = false;
3518 fontDescriptionRun04.slantDefined = false;
3519 fontDescriptionRun04.sizeDefined = false;
3521 FontDescriptionRun fontDescriptionRun05;
3522 fontDescriptionRun05.characterRun.characterIndex = 48u;
3523 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3524 fontDescriptionRun05.familyLength = fontHebrew.size();
3525 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3526 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3527 fontDescriptionRun05.familyDefined = true;
3528 fontDescriptionRun05.weightDefined = false;
3529 fontDescriptionRun05.widthDefined = false;
3530 fontDescriptionRun05.slantDefined = false;
3531 fontDescriptionRun05.sizeDefined = false;
3533 FontDescriptionRun fontDescriptionRun06;
3534 fontDescriptionRun06.characterRun.characterIndex = 58u;
3535 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3536 fontDescriptionRun06.familyLength = fontArabic.size();
3537 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3538 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3539 fontDescriptionRun06.familyDefined = true;
3540 fontDescriptionRun06.weightDefined = false;
3541 fontDescriptionRun06.widthDefined = false;
3542 fontDescriptionRun06.slantDefined = false;
3543 fontDescriptionRun06.sizeDefined = false;
3545 Vector<FontDescriptionRun> fontDescriptionRuns;
3546 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3547 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3548 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3549 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3550 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3551 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3553 struct LineRun line01 =
3566 struct LineRun line02 =
3579 Vector<LineRun> lines;
3580 lines.PushBack( line01 );
3581 lines.PushBack( line02 );
3585 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,
3586 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,
3589 Size textArea( 100.f, 50.f );
3590 Size layoutSize( 100.f, 40.f );
3592 LayoutTextData data =
3594 "Layout single-line RTL text with ellipsis.",
3595 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3598 fontDescriptionRuns.Begin(),
3604 Layout::Engine::MULTI_LINE_BOX,
3611 if( !LayoutTextTest( data ) )
3613 tet_result(TET_FAIL);
3616 tet_result(TET_PASS);
3620 int UtcDaliTextLayoutEllipsis05(void)
3622 ToolkitTestApplication application;
3623 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3625 const std::string fontLatin( "TizenSans" );
3627 // Set a known font description
3628 FontDescriptionRun fontDescriptionRun01;
3629 fontDescriptionRun01.characterRun.characterIndex = 0u;
3630 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3631 fontDescriptionRun01.familyLength = fontLatin.size();
3632 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3633 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3634 fontDescriptionRun01.familyDefined = true;
3635 fontDescriptionRun01.weightDefined = false;
3636 fontDescriptionRun01.widthDefined = false;
3637 fontDescriptionRun01.slantDefined = false;
3638 fontDescriptionRun01.sizeDefined = false;
3640 Vector<FontDescriptionRun> fontDescriptionRuns;
3641 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3643 struct LineRun line01 =
3656 Vector<LineRun> lines;
3657 lines.PushBack( line01 );
3664 Size textArea( 100.f, 19.f );
3665 Size layoutSize( 100.f, 20.f );
3667 LayoutTextData data =
3669 "Not enough height.",
3673 fontDescriptionRuns.Begin(),
3679 Layout::Engine::MULTI_LINE_BOX,
3686 if( !LayoutTextTest( data ) )
3688 tet_result(TET_FAIL);
3691 tet_result(TET_PASS);
3695 int UtcDaliTextReorderLayout01(void)
3697 ToolkitTestApplication application;
3698 tet_infoline(" UtcDaliTextReorderLayout01");
3700 // Reorder lines. No right to left characters.
3702 const std::string fontLatin( "TizenSans" );
3704 // Set a known font description
3705 FontDescriptionRun fontDescriptionRun01;
3706 fontDescriptionRun01.characterRun.characterIndex = 0u;
3707 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3708 fontDescriptionRun01.familyLength = fontLatin.size();
3709 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3710 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3711 fontDescriptionRun01.familyDefined = true;
3712 fontDescriptionRun01.weightDefined = false;
3713 fontDescriptionRun01.widthDefined = false;
3714 fontDescriptionRun01.slantDefined = false;
3715 fontDescriptionRun01.sizeDefined = false;
3717 Vector<FontDescriptionRun> fontDescriptionRuns;
3718 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3722 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,
3725 Size textArea( 100.f, 300.f );
3727 ReLayoutRightToLeftLinesData data =
3729 "Text with no right to left text.",
3733 fontDescriptionRuns.Begin(),
3740 if( !ReLayoutRightToLeftLinesTest( data ) )
3742 tet_result(TET_FAIL);
3745 tet_result(TET_PASS);
3749 int UtcDaliTextReorderLayout02(void)
3751 ToolkitTestApplication application;
3752 tet_infoline(" UtcDaliTextReorderLayout02");
3754 // Reorder lines of the first paragraph.
3756 const std::string fontHebrew( "TizenSansHebrew" );
3757 const std::string fontArabic( "TizenSansArabic" );
3759 // Set a known font description
3760 FontDescriptionRun fontDescriptionRun01;
3761 fontDescriptionRun01.characterRun.characterIndex = 0u;
3762 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3763 fontDescriptionRun01.familyLength = fontHebrew.size();
3764 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3765 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3766 fontDescriptionRun01.familyDefined = true;
3767 fontDescriptionRun01.weightDefined = false;
3768 fontDescriptionRun01.widthDefined = false;
3769 fontDescriptionRun01.slantDefined = false;
3770 fontDescriptionRun01.sizeDefined = false;
3772 FontDescriptionRun fontDescriptionRun02;
3773 fontDescriptionRun02.characterRun.characterIndex = 10u;
3774 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3775 fontDescriptionRun02.familyLength = fontArabic.size();
3776 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3777 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3778 fontDescriptionRun02.familyDefined = true;
3779 fontDescriptionRun02.weightDefined = false;
3780 fontDescriptionRun02.widthDefined = false;
3781 fontDescriptionRun02.slantDefined = false;
3782 fontDescriptionRun02.sizeDefined = false;
3784 FontDescriptionRun fontDescriptionRun03;
3785 fontDescriptionRun03.characterRun.characterIndex = 24u;
3786 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3787 fontDescriptionRun03.familyLength = fontArabic.size();
3788 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3789 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3790 fontDescriptionRun03.familyDefined = true;
3791 fontDescriptionRun03.weightDefined = false;
3792 fontDescriptionRun03.widthDefined = false;
3793 fontDescriptionRun03.slantDefined = false;
3794 fontDescriptionRun03.sizeDefined = false;
3796 FontDescriptionRun fontDescriptionRun04;
3797 fontDescriptionRun04.characterRun.characterIndex = 38u;
3798 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3799 fontDescriptionRun04.familyLength = fontHebrew.size();
3800 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3801 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3802 fontDescriptionRun04.familyDefined = true;
3803 fontDescriptionRun04.weightDefined = false;
3804 fontDescriptionRun04.widthDefined = false;
3805 fontDescriptionRun04.slantDefined = false;
3806 fontDescriptionRun04.sizeDefined = false;
3808 FontDescriptionRun fontDescriptionRun05;
3809 fontDescriptionRun05.characterRun.characterIndex = 48u;
3810 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3811 fontDescriptionRun05.familyLength = fontHebrew.size();
3812 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3813 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3814 fontDescriptionRun05.familyDefined = true;
3815 fontDescriptionRun05.weightDefined = false;
3816 fontDescriptionRun05.widthDefined = false;
3817 fontDescriptionRun05.slantDefined = false;
3818 fontDescriptionRun05.sizeDefined = false;
3820 FontDescriptionRun fontDescriptionRun06;
3821 fontDescriptionRun06.characterRun.characterIndex = 58u;
3822 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3823 fontDescriptionRun06.familyLength = fontArabic.size();
3824 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3825 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3826 fontDescriptionRun06.familyDefined = true;
3827 fontDescriptionRun06.weightDefined = false;
3828 fontDescriptionRun06.widthDefined = false;
3829 fontDescriptionRun06.slantDefined = false;
3830 fontDescriptionRun06.sizeDefined = false;
3832 Vector<FontDescriptionRun> fontDescriptionRuns;
3833 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3834 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3835 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3836 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3837 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3838 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3842 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,
3843 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,
3844 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,
3845 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3846 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,
3847 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,
3850 Size textArea( 100.f, 300.f );
3852 ReLayoutRightToLeftLinesData data =
3854 "Paragraphs with right to left text.",
3855 "שלום עולם مرحبا بالعالم\n"
3856 "مرحبا بالعالم שלום עולם\n"
3857 "שלום עולם مرحبا بالعالم.",
3860 fontDescriptionRuns.Begin(),
3867 if( !ReLayoutRightToLeftLinesTest( data ) )
3869 tet_result(TET_FAIL);
3872 tet_result(TET_PASS);
3876 int UtcDaliTextReorderLayout03(void)
3878 ToolkitTestApplication application;
3879 tet_infoline(" UtcDaliTextReorderLayout03");
3881 // Reorder lines of the mid paragraph.
3883 const std::string fontHebrew( "TizenSansHebrew" );
3884 const std::string fontArabic( "TizenSansArabic" );
3886 // Set a known font description
3887 FontDescriptionRun fontDescriptionRun01;
3888 fontDescriptionRun01.characterRun.characterIndex = 0u;
3889 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3890 fontDescriptionRun01.familyLength = fontHebrew.size();
3891 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3892 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3893 fontDescriptionRun01.familyDefined = true;
3894 fontDescriptionRun01.weightDefined = false;
3895 fontDescriptionRun01.widthDefined = false;
3896 fontDescriptionRun01.slantDefined = false;
3897 fontDescriptionRun01.sizeDefined = false;
3899 FontDescriptionRun fontDescriptionRun02;
3900 fontDescriptionRun02.characterRun.characterIndex = 10u;
3901 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3902 fontDescriptionRun02.familyLength = fontArabic.size();
3903 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3904 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3905 fontDescriptionRun02.familyDefined = true;
3906 fontDescriptionRun02.weightDefined = false;
3907 fontDescriptionRun02.widthDefined = false;
3908 fontDescriptionRun02.slantDefined = false;
3909 fontDescriptionRun02.sizeDefined = false;
3911 FontDescriptionRun fontDescriptionRun03;
3912 fontDescriptionRun03.characterRun.characterIndex = 24u;
3913 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3914 fontDescriptionRun03.familyLength = fontArabic.size();
3915 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3916 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3917 fontDescriptionRun03.familyDefined = true;
3918 fontDescriptionRun03.weightDefined = false;
3919 fontDescriptionRun03.widthDefined = false;
3920 fontDescriptionRun03.slantDefined = false;
3921 fontDescriptionRun03.sizeDefined = false;
3923 FontDescriptionRun fontDescriptionRun04;
3924 fontDescriptionRun04.characterRun.characterIndex = 38u;
3925 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3926 fontDescriptionRun04.familyLength = fontHebrew.size();
3927 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3928 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3929 fontDescriptionRun04.familyDefined = true;
3930 fontDescriptionRun04.weightDefined = false;
3931 fontDescriptionRun04.widthDefined = false;
3932 fontDescriptionRun04.slantDefined = false;
3933 fontDescriptionRun04.sizeDefined = false;
3935 FontDescriptionRun fontDescriptionRun05;
3936 fontDescriptionRun05.characterRun.characterIndex = 48u;
3937 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3938 fontDescriptionRun05.familyLength = fontHebrew.size();
3939 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3940 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3941 fontDescriptionRun05.familyDefined = true;
3942 fontDescriptionRun05.weightDefined = false;
3943 fontDescriptionRun05.widthDefined = false;
3944 fontDescriptionRun05.slantDefined = false;
3945 fontDescriptionRun05.sizeDefined = false;
3947 FontDescriptionRun fontDescriptionRun06;
3948 fontDescriptionRun06.characterRun.characterIndex = 58u;
3949 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3950 fontDescriptionRun06.familyLength = fontArabic.size();
3951 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3952 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3953 fontDescriptionRun06.familyDefined = true;
3954 fontDescriptionRun06.weightDefined = false;
3955 fontDescriptionRun06.widthDefined = false;
3956 fontDescriptionRun06.slantDefined = false;
3957 fontDescriptionRun06.sizeDefined = false;
3959 Vector<FontDescriptionRun> fontDescriptionRuns;
3960 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3961 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3962 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3963 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3964 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3965 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3969 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,
3970 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,
3971 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,
3972 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3973 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,
3974 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,
3977 Size textArea( 100.f, 300.f );
3979 ReLayoutRightToLeftLinesData data =
3981 "Paragraphs with right to left text.",
3982 "שלום עולם مرحبا بالعالم\n"
3983 "مرحبا بالعالم שלום עולם\n"
3984 "שלום עולם مرحبا بالعالم.",
3987 fontDescriptionRuns.Begin(),
3994 if( !ReLayoutRightToLeftLinesTest( data ) )
3996 tet_result(TET_FAIL);
3999 tet_result(TET_PASS);
4003 int UtcDaliTextReorderLayout04(void)
4005 ToolkitTestApplication application;
4006 tet_infoline(" UtcDaliTextReorderLayout04");
4008 // Reorder lines of the last paragraph.
4010 const std::string fontHebrew( "TizenSansHebrew" );
4011 const std::string fontArabic( "TizenSansArabic" );
4013 // Set a known font description
4014 FontDescriptionRun fontDescriptionRun01;
4015 fontDescriptionRun01.characterRun.characterIndex = 0u;
4016 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4017 fontDescriptionRun01.familyLength = fontHebrew.size();
4018 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4019 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4020 fontDescriptionRun01.familyDefined = true;
4021 fontDescriptionRun01.weightDefined = false;
4022 fontDescriptionRun01.widthDefined = false;
4023 fontDescriptionRun01.slantDefined = false;
4024 fontDescriptionRun01.sizeDefined = false;
4026 FontDescriptionRun fontDescriptionRun02;
4027 fontDescriptionRun02.characterRun.characterIndex = 10u;
4028 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4029 fontDescriptionRun02.familyLength = fontArabic.size();
4030 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4031 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4032 fontDescriptionRun02.familyDefined = true;
4033 fontDescriptionRun02.weightDefined = false;
4034 fontDescriptionRun02.widthDefined = false;
4035 fontDescriptionRun02.slantDefined = false;
4036 fontDescriptionRun02.sizeDefined = false;
4038 FontDescriptionRun fontDescriptionRun03;
4039 fontDescriptionRun03.characterRun.characterIndex = 24u;
4040 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4041 fontDescriptionRun03.familyLength = fontArabic.size();
4042 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4043 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4044 fontDescriptionRun03.familyDefined = true;
4045 fontDescriptionRun03.weightDefined = false;
4046 fontDescriptionRun03.widthDefined = false;
4047 fontDescriptionRun03.slantDefined = false;
4048 fontDescriptionRun03.sizeDefined = false;
4050 FontDescriptionRun fontDescriptionRun04;
4051 fontDescriptionRun04.characterRun.characterIndex = 38u;
4052 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4053 fontDescriptionRun04.familyLength = fontHebrew.size();
4054 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4055 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4056 fontDescriptionRun04.familyDefined = true;
4057 fontDescriptionRun04.weightDefined = false;
4058 fontDescriptionRun04.widthDefined = false;
4059 fontDescriptionRun04.slantDefined = false;
4060 fontDescriptionRun04.sizeDefined = false;
4062 FontDescriptionRun fontDescriptionRun05;
4063 fontDescriptionRun05.characterRun.characterIndex = 48u;
4064 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4065 fontDescriptionRun05.familyLength = fontHebrew.size();
4066 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4067 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4068 fontDescriptionRun05.familyDefined = true;
4069 fontDescriptionRun05.weightDefined = false;
4070 fontDescriptionRun05.widthDefined = false;
4071 fontDescriptionRun05.slantDefined = false;
4072 fontDescriptionRun05.sizeDefined = false;
4074 FontDescriptionRun fontDescriptionRun06;
4075 fontDescriptionRun06.characterRun.characterIndex = 58u;
4076 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4077 fontDescriptionRun06.familyLength = fontArabic.size();
4078 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4079 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4080 fontDescriptionRun06.familyDefined = true;
4081 fontDescriptionRun06.weightDefined = false;
4082 fontDescriptionRun06.widthDefined = false;
4083 fontDescriptionRun06.slantDefined = false;
4084 fontDescriptionRun06.sizeDefined = false;
4086 Vector<FontDescriptionRun> fontDescriptionRuns;
4087 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4088 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4089 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4090 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4091 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4092 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4096 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,
4097 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,
4098 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,
4099 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4100 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,
4101 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,
4104 Size textArea( 100.f, 300.f );
4106 ReLayoutRightToLeftLinesData data =
4108 "Paragraphs with right to left text.",
4109 "שלום עולם مرحبا بالعالم\n"
4110 "مرحبا بالعالم שלום עולם\n"
4111 "שלום עולם مرحبا بالعالم.",
4114 fontDescriptionRuns.Begin(),
4121 if( !ReLayoutRightToLeftLinesTest( data ) )
4123 tet_result(TET_FAIL);
4126 tet_result(TET_PASS);
4130 int UtcDaliTextAlign01(void)
4132 ToolkitTestApplication application;
4133 tet_infoline(" UtcDaliTextAlign01");
4135 // Calculate text alignment.
4137 const std::string fontLatin( "TizenSans" );
4138 const std::string fontHebrew( "TizenSansHebrew" );
4139 const std::string fontArabic( "TizenSansArabic" );
4141 // Set a known font description
4142 FontDescriptionRun fontDescriptionRun01;
4143 fontDescriptionRun01.characterRun.characterIndex = 0u;
4144 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4145 fontDescriptionRun01.familyLength = fontLatin.size();
4146 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4147 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4148 fontDescriptionRun01.familyDefined = true;
4149 fontDescriptionRun01.weightDefined = false;
4150 fontDescriptionRun01.widthDefined = false;
4151 fontDescriptionRun01.slantDefined = false;
4152 fontDescriptionRun01.sizeDefined = false;
4154 FontDescriptionRun fontDescriptionRun02;
4155 fontDescriptionRun02.characterRun.characterIndex = 12u;
4156 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4157 fontDescriptionRun02.familyLength = fontHebrew.size();
4158 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4159 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4160 fontDescriptionRun02.familyDefined = true;
4161 fontDescriptionRun02.weightDefined = false;
4162 fontDescriptionRun02.widthDefined = false;
4163 fontDescriptionRun02.slantDefined = false;
4164 fontDescriptionRun02.sizeDefined = false;
4166 FontDescriptionRun fontDescriptionRun03;
4167 fontDescriptionRun03.characterRun.characterIndex = 22u;
4168 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4169 fontDescriptionRun03.familyLength = fontArabic.size();
4170 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4171 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4172 fontDescriptionRun03.familyDefined = true;
4173 fontDescriptionRun03.weightDefined = false;
4174 fontDescriptionRun03.widthDefined = false;
4175 fontDescriptionRun03.slantDefined = false;
4176 fontDescriptionRun03.sizeDefined = false;
4178 FontDescriptionRun fontDescriptionRun04;
4179 fontDescriptionRun04.characterRun.characterIndex = 36u;
4180 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4181 fontDescriptionRun04.familyLength = fontLatin.size();
4182 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4183 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4184 fontDescriptionRun04.familyDefined = true;
4185 fontDescriptionRun04.weightDefined = false;
4186 fontDescriptionRun04.widthDefined = false;
4187 fontDescriptionRun04.slantDefined = false;
4188 fontDescriptionRun04.sizeDefined = false;
4190 FontDescriptionRun fontDescriptionRun05;
4191 fontDescriptionRun05.characterRun.characterIndex = 48u;
4192 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4193 fontDescriptionRun05.familyLength = fontLatin.size();
4194 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4195 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4196 fontDescriptionRun05.familyDefined = true;
4197 fontDescriptionRun05.weightDefined = false;
4198 fontDescriptionRun05.widthDefined = false;
4199 fontDescriptionRun05.slantDefined = false;
4200 fontDescriptionRun05.sizeDefined = false;
4202 FontDescriptionRun fontDescriptionRun06;
4203 fontDescriptionRun06.characterRun.characterIndex = 60u;
4204 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4205 fontDescriptionRun06.familyLength = fontArabic.size();
4206 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4207 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4208 fontDescriptionRun06.familyDefined = true;
4209 fontDescriptionRun06.weightDefined = false;
4210 fontDescriptionRun06.widthDefined = false;
4211 fontDescriptionRun06.slantDefined = false;
4212 fontDescriptionRun06.sizeDefined = false;
4214 Vector<FontDescriptionRun> fontDescriptionRuns;
4215 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4216 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4217 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4218 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4219 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4220 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4222 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4224 Size textArea( 100.f, 300.f );
4227 "Begin alignment for the first paragraph.",
4228 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4231 fontDescriptionRuns.Begin(),
4232 Text::HorizontalAlignment::BEGIN,
4233 Text::VerticalAlignment::TOP,
4240 if( !AlignTest( data ) )
4242 tet_result(TET_FAIL);
4245 tet_result(TET_PASS);
4249 int UtcDaliTextAlign02(void)
4251 ToolkitTestApplication application;
4252 tet_infoline(" UtcDaliTextAlign02");
4254 // Calculate text alignment.
4256 const std::string fontLatin( "TizenSans" );
4257 const std::string fontHebrew( "TizenSansHebrew" );
4258 const std::string fontArabic( "TizenSansArabic" );
4260 // Set a known font description
4261 FontDescriptionRun fontDescriptionRun01;
4262 fontDescriptionRun01.characterRun.characterIndex = 0u;
4263 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4264 fontDescriptionRun01.familyLength = fontLatin.size();
4265 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4266 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4267 fontDescriptionRun01.familyDefined = true;
4268 fontDescriptionRun01.weightDefined = false;
4269 fontDescriptionRun01.widthDefined = false;
4270 fontDescriptionRun01.slantDefined = false;
4271 fontDescriptionRun01.sizeDefined = false;
4273 FontDescriptionRun fontDescriptionRun02;
4274 fontDescriptionRun02.characterRun.characterIndex = 12u;
4275 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4276 fontDescriptionRun02.familyLength = fontHebrew.size();
4277 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4278 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4279 fontDescriptionRun02.familyDefined = true;
4280 fontDescriptionRun02.weightDefined = false;
4281 fontDescriptionRun02.widthDefined = false;
4282 fontDescriptionRun02.slantDefined = false;
4283 fontDescriptionRun02.sizeDefined = false;
4285 FontDescriptionRun fontDescriptionRun03;
4286 fontDescriptionRun03.characterRun.characterIndex = 22u;
4287 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4288 fontDescriptionRun03.familyLength = fontArabic.size();
4289 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4290 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4291 fontDescriptionRun03.familyDefined = true;
4292 fontDescriptionRun03.weightDefined = false;
4293 fontDescriptionRun03.widthDefined = false;
4294 fontDescriptionRun03.slantDefined = false;
4295 fontDescriptionRun03.sizeDefined = false;
4297 FontDescriptionRun fontDescriptionRun04;
4298 fontDescriptionRun04.characterRun.characterIndex = 36u;
4299 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4300 fontDescriptionRun04.familyLength = fontLatin.size();
4301 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4302 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4303 fontDescriptionRun04.familyDefined = true;
4304 fontDescriptionRun04.weightDefined = false;
4305 fontDescriptionRun04.widthDefined = false;
4306 fontDescriptionRun04.slantDefined = false;
4307 fontDescriptionRun04.sizeDefined = false;
4309 FontDescriptionRun fontDescriptionRun05;
4310 fontDescriptionRun05.characterRun.characterIndex = 48u;
4311 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4312 fontDescriptionRun05.familyLength = fontLatin.size();
4313 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4314 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4315 fontDescriptionRun05.familyDefined = true;
4316 fontDescriptionRun05.weightDefined = false;
4317 fontDescriptionRun05.widthDefined = false;
4318 fontDescriptionRun05.slantDefined = false;
4319 fontDescriptionRun05.sizeDefined = false;
4321 FontDescriptionRun fontDescriptionRun06;
4322 fontDescriptionRun06.characterRun.characterIndex = 60u;
4323 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4324 fontDescriptionRun06.familyLength = fontArabic.size();
4325 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4326 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4327 fontDescriptionRun06.familyDefined = true;
4328 fontDescriptionRun06.weightDefined = false;
4329 fontDescriptionRun06.widthDefined = false;
4330 fontDescriptionRun06.slantDefined = false;
4331 fontDescriptionRun06.sizeDefined = false;
4333 Vector<FontDescriptionRun> fontDescriptionRuns;
4334 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4335 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4336 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4337 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4338 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4339 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4341 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4343 Size textArea( 100.f, 300.f );
4346 "Begin alignment for the mid paragraph.",
4347 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4350 fontDescriptionRuns.Begin(),
4351 Text::HorizontalAlignment::BEGIN,
4352 Text::VerticalAlignment::TOP,
4359 if( !AlignTest( data ) )
4361 tet_result(TET_FAIL);
4364 tet_result(TET_PASS);
4368 int UtcDaliTextAlign03(void)
4370 ToolkitTestApplication application;
4371 tet_infoline(" UtcDaliTextAlign03");
4373 // Calculate text alignment.
4375 const std::string fontLatin( "TizenSans" );
4376 const std::string fontHebrew( "TizenSansHebrew" );
4377 const std::string fontArabic( "TizenSansArabic" );
4379 // Set a known font description
4380 FontDescriptionRun fontDescriptionRun01;
4381 fontDescriptionRun01.characterRun.characterIndex = 0u;
4382 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4383 fontDescriptionRun01.familyLength = fontLatin.size();
4384 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4385 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4386 fontDescriptionRun01.familyDefined = true;
4387 fontDescriptionRun01.weightDefined = false;
4388 fontDescriptionRun01.widthDefined = false;
4389 fontDescriptionRun01.slantDefined = false;
4390 fontDescriptionRun01.sizeDefined = false;
4392 FontDescriptionRun fontDescriptionRun02;
4393 fontDescriptionRun02.characterRun.characterIndex = 12u;
4394 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4395 fontDescriptionRun02.familyLength = fontHebrew.size();
4396 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4397 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4398 fontDescriptionRun02.familyDefined = true;
4399 fontDescriptionRun02.weightDefined = false;
4400 fontDescriptionRun02.widthDefined = false;
4401 fontDescriptionRun02.slantDefined = false;
4402 fontDescriptionRun02.sizeDefined = false;
4404 FontDescriptionRun fontDescriptionRun03;
4405 fontDescriptionRun03.characterRun.characterIndex = 22u;
4406 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4407 fontDescriptionRun03.familyLength = fontArabic.size();
4408 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4409 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4410 fontDescriptionRun03.familyDefined = true;
4411 fontDescriptionRun03.weightDefined = false;
4412 fontDescriptionRun03.widthDefined = false;
4413 fontDescriptionRun03.slantDefined = false;
4414 fontDescriptionRun03.sizeDefined = false;
4416 FontDescriptionRun fontDescriptionRun04;
4417 fontDescriptionRun04.characterRun.characterIndex = 36u;
4418 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4419 fontDescriptionRun04.familyLength = fontLatin.size();
4420 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4421 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4422 fontDescriptionRun04.familyDefined = true;
4423 fontDescriptionRun04.weightDefined = false;
4424 fontDescriptionRun04.widthDefined = false;
4425 fontDescriptionRun04.slantDefined = false;
4426 fontDescriptionRun04.sizeDefined = false;
4428 FontDescriptionRun fontDescriptionRun05;
4429 fontDescriptionRun05.characterRun.characterIndex = 48u;
4430 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4431 fontDescriptionRun05.familyLength = fontLatin.size();
4432 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4433 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4434 fontDescriptionRun05.familyDefined = true;
4435 fontDescriptionRun05.weightDefined = false;
4436 fontDescriptionRun05.widthDefined = false;
4437 fontDescriptionRun05.slantDefined = false;
4438 fontDescriptionRun05.sizeDefined = false;
4440 FontDescriptionRun fontDescriptionRun06;
4441 fontDescriptionRun06.characterRun.characterIndex = 60u;
4442 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4443 fontDescriptionRun06.familyLength = fontArabic.size();
4444 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4445 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4446 fontDescriptionRun06.familyDefined = true;
4447 fontDescriptionRun06.weightDefined = false;
4448 fontDescriptionRun06.widthDefined = false;
4449 fontDescriptionRun06.slantDefined = false;
4450 fontDescriptionRun06.sizeDefined = false;
4452 Vector<FontDescriptionRun> fontDescriptionRuns;
4453 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4454 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4455 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4456 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4457 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4458 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4460 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4462 Size textArea( 100.f, 300.f );
4465 "Begin alignment for the last paragraph.",
4466 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4469 fontDescriptionRuns.Begin(),
4470 Text::HorizontalAlignment::BEGIN,
4471 Text::VerticalAlignment::TOP,
4478 if( !AlignTest( data ) )
4480 tet_result(TET_FAIL);
4483 tet_result(TET_PASS);
4487 int UtcDaliTextAlign04(void)
4489 ToolkitTestApplication application;
4490 tet_infoline(" UtcDaliTextAlign04");
4492 // Calculate text alignment.
4494 const std::string fontLatin( "TizenSans" );
4495 const std::string fontHebrew( "TizenSansHebrew" );
4496 const std::string fontArabic( "TizenSansArabic" );
4498 // Set a known font description
4499 FontDescriptionRun fontDescriptionRun01;
4500 fontDescriptionRun01.characterRun.characterIndex = 0u;
4501 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4502 fontDescriptionRun01.familyLength = fontLatin.size();
4503 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4504 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4505 fontDescriptionRun01.familyDefined = true;
4506 fontDescriptionRun01.weightDefined = false;
4507 fontDescriptionRun01.widthDefined = false;
4508 fontDescriptionRun01.slantDefined = false;
4509 fontDescriptionRun01.sizeDefined = false;
4511 FontDescriptionRun fontDescriptionRun02;
4512 fontDescriptionRun02.characterRun.characterIndex = 12u;
4513 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4514 fontDescriptionRun02.familyLength = fontHebrew.size();
4515 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4516 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4517 fontDescriptionRun02.familyDefined = true;
4518 fontDescriptionRun02.weightDefined = false;
4519 fontDescriptionRun02.widthDefined = false;
4520 fontDescriptionRun02.slantDefined = false;
4521 fontDescriptionRun02.sizeDefined = false;
4523 FontDescriptionRun fontDescriptionRun03;
4524 fontDescriptionRun03.characterRun.characterIndex = 22u;
4525 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4526 fontDescriptionRun03.familyLength = fontArabic.size();
4527 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4528 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4529 fontDescriptionRun03.familyDefined = true;
4530 fontDescriptionRun03.weightDefined = false;
4531 fontDescriptionRun03.widthDefined = false;
4532 fontDescriptionRun03.slantDefined = false;
4533 fontDescriptionRun03.sizeDefined = false;
4535 FontDescriptionRun fontDescriptionRun04;
4536 fontDescriptionRun04.characterRun.characterIndex = 36u;
4537 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4538 fontDescriptionRun04.familyLength = fontLatin.size();
4539 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4540 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4541 fontDescriptionRun04.familyDefined = true;
4542 fontDescriptionRun04.weightDefined = false;
4543 fontDescriptionRun04.widthDefined = false;
4544 fontDescriptionRun04.slantDefined = false;
4545 fontDescriptionRun04.sizeDefined = false;
4547 FontDescriptionRun fontDescriptionRun05;
4548 fontDescriptionRun05.characterRun.characterIndex = 48u;
4549 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4550 fontDescriptionRun05.familyLength = fontLatin.size();
4551 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4552 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4553 fontDescriptionRun05.familyDefined = true;
4554 fontDescriptionRun05.weightDefined = false;
4555 fontDescriptionRun05.widthDefined = false;
4556 fontDescriptionRun05.slantDefined = false;
4557 fontDescriptionRun05.sizeDefined = false;
4559 FontDescriptionRun fontDescriptionRun06;
4560 fontDescriptionRun06.characterRun.characterIndex = 60u;
4561 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4562 fontDescriptionRun06.familyLength = fontArabic.size();
4563 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4564 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4565 fontDescriptionRun06.familyDefined = true;
4566 fontDescriptionRun06.weightDefined = false;
4567 fontDescriptionRun06.widthDefined = false;
4568 fontDescriptionRun06.slantDefined = false;
4569 fontDescriptionRun06.sizeDefined = false;
4571 Vector<FontDescriptionRun> fontDescriptionRuns;
4572 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4573 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4574 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4575 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4576 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4577 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4579 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4581 Size textArea( 100.f, 300.f );
4584 "Center alignment for the first paragraph.",
4585 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4588 fontDescriptionRuns.Begin(),
4589 Text::HorizontalAlignment::CENTER,
4590 Text::VerticalAlignment::TOP,
4597 if( !AlignTest( data ) )
4599 tet_result(TET_FAIL);
4602 tet_result(TET_PASS);
4606 int UtcDaliTextAlign05(void)
4608 ToolkitTestApplication application;
4609 tet_infoline(" UtcDaliTextAlign05");
4611 // Calculate text alignment.
4613 const std::string fontLatin( "TizenSans" );
4614 const std::string fontHebrew( "TizenSansHebrew" );
4615 const std::string fontArabic( "TizenSansArabic" );
4617 // Set a known font description
4618 FontDescriptionRun fontDescriptionRun01;
4619 fontDescriptionRun01.characterRun.characterIndex = 0u;
4620 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4621 fontDescriptionRun01.familyLength = fontLatin.size();
4622 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4623 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4624 fontDescriptionRun01.familyDefined = true;
4625 fontDescriptionRun01.weightDefined = false;
4626 fontDescriptionRun01.widthDefined = false;
4627 fontDescriptionRun01.slantDefined = false;
4628 fontDescriptionRun01.sizeDefined = false;
4630 FontDescriptionRun fontDescriptionRun02;
4631 fontDescriptionRun02.characterRun.characterIndex = 12u;
4632 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4633 fontDescriptionRun02.familyLength = fontHebrew.size();
4634 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4635 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4636 fontDescriptionRun02.familyDefined = true;
4637 fontDescriptionRun02.weightDefined = false;
4638 fontDescriptionRun02.widthDefined = false;
4639 fontDescriptionRun02.slantDefined = false;
4640 fontDescriptionRun02.sizeDefined = false;
4642 FontDescriptionRun fontDescriptionRun03;
4643 fontDescriptionRun03.characterRun.characterIndex = 22u;
4644 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4645 fontDescriptionRun03.familyLength = fontArabic.size();
4646 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4647 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4648 fontDescriptionRun03.familyDefined = true;
4649 fontDescriptionRun03.weightDefined = false;
4650 fontDescriptionRun03.widthDefined = false;
4651 fontDescriptionRun03.slantDefined = false;
4652 fontDescriptionRun03.sizeDefined = false;
4654 FontDescriptionRun fontDescriptionRun04;
4655 fontDescriptionRun04.characterRun.characterIndex = 36u;
4656 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4657 fontDescriptionRun04.familyLength = fontLatin.size();
4658 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4659 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4660 fontDescriptionRun04.familyDefined = true;
4661 fontDescriptionRun04.weightDefined = false;
4662 fontDescriptionRun04.widthDefined = false;
4663 fontDescriptionRun04.slantDefined = false;
4664 fontDescriptionRun04.sizeDefined = false;
4666 FontDescriptionRun fontDescriptionRun05;
4667 fontDescriptionRun05.characterRun.characterIndex = 48u;
4668 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4669 fontDescriptionRun05.familyLength = fontLatin.size();
4670 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4671 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4672 fontDescriptionRun05.familyDefined = true;
4673 fontDescriptionRun05.weightDefined = false;
4674 fontDescriptionRun05.widthDefined = false;
4675 fontDescriptionRun05.slantDefined = false;
4676 fontDescriptionRun05.sizeDefined = false;
4678 FontDescriptionRun fontDescriptionRun06;
4679 fontDescriptionRun06.characterRun.characterIndex = 60u;
4680 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4681 fontDescriptionRun06.familyLength = fontArabic.size();
4682 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4683 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4684 fontDescriptionRun06.familyDefined = true;
4685 fontDescriptionRun06.weightDefined = false;
4686 fontDescriptionRun06.widthDefined = false;
4687 fontDescriptionRun06.slantDefined = false;
4688 fontDescriptionRun06.sizeDefined = false;
4690 Vector<FontDescriptionRun> fontDescriptionRuns;
4691 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4692 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4693 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4694 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4695 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4696 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4698 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4700 Size textArea( 100.f, 300.f );
4703 "Center alignment for the mid paragraph.",
4704 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4707 fontDescriptionRuns.Begin(),
4708 Text::HorizontalAlignment::CENTER,
4709 Text::VerticalAlignment::TOP,
4716 if( !AlignTest( data ) )
4718 tet_result(TET_FAIL);
4721 tet_result(TET_PASS);
4725 int UtcDaliTextAlign06(void)
4727 ToolkitTestApplication application;
4728 tet_infoline(" UtcDaliTextAlign06");
4730 // Calculate text alignment.
4732 const std::string fontLatin( "TizenSans" );
4733 const std::string fontHebrew( "TizenSansHebrew" );
4734 const std::string fontArabic( "TizenSansArabic" );
4736 // Set a known font description
4737 FontDescriptionRun fontDescriptionRun01;
4738 fontDescriptionRun01.characterRun.characterIndex = 0u;
4739 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4740 fontDescriptionRun01.familyLength = fontLatin.size();
4741 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4742 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4743 fontDescriptionRun01.familyDefined = true;
4744 fontDescriptionRun01.weightDefined = false;
4745 fontDescriptionRun01.widthDefined = false;
4746 fontDescriptionRun01.slantDefined = false;
4747 fontDescriptionRun01.sizeDefined = false;
4749 FontDescriptionRun fontDescriptionRun02;
4750 fontDescriptionRun02.characterRun.characterIndex = 12u;
4751 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4752 fontDescriptionRun02.familyLength = fontHebrew.size();
4753 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4754 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4755 fontDescriptionRun02.familyDefined = true;
4756 fontDescriptionRun02.weightDefined = false;
4757 fontDescriptionRun02.widthDefined = false;
4758 fontDescriptionRun02.slantDefined = false;
4759 fontDescriptionRun02.sizeDefined = false;
4761 FontDescriptionRun fontDescriptionRun03;
4762 fontDescriptionRun03.characterRun.characterIndex = 22u;
4763 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4764 fontDescriptionRun03.familyLength = fontArabic.size();
4765 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4766 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4767 fontDescriptionRun03.familyDefined = true;
4768 fontDescriptionRun03.weightDefined = false;
4769 fontDescriptionRun03.widthDefined = false;
4770 fontDescriptionRun03.slantDefined = false;
4771 fontDescriptionRun03.sizeDefined = false;
4773 FontDescriptionRun fontDescriptionRun04;
4774 fontDescriptionRun04.characterRun.characterIndex = 36u;
4775 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4776 fontDescriptionRun04.familyLength = fontLatin.size();
4777 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4778 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4779 fontDescriptionRun04.familyDefined = true;
4780 fontDescriptionRun04.weightDefined = false;
4781 fontDescriptionRun04.widthDefined = false;
4782 fontDescriptionRun04.slantDefined = false;
4783 fontDescriptionRun04.sizeDefined = false;
4785 FontDescriptionRun fontDescriptionRun05;
4786 fontDescriptionRun05.characterRun.characterIndex = 48u;
4787 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4788 fontDescriptionRun05.familyLength = fontLatin.size();
4789 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4790 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4791 fontDescriptionRun05.familyDefined = true;
4792 fontDescriptionRun05.weightDefined = false;
4793 fontDescriptionRun05.widthDefined = false;
4794 fontDescriptionRun05.slantDefined = false;
4795 fontDescriptionRun05.sizeDefined = false;
4797 FontDescriptionRun fontDescriptionRun06;
4798 fontDescriptionRun06.characterRun.characterIndex = 60u;
4799 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4800 fontDescriptionRun06.familyLength = fontArabic.size();
4801 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4802 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4803 fontDescriptionRun06.familyDefined = true;
4804 fontDescriptionRun06.weightDefined = false;
4805 fontDescriptionRun06.widthDefined = false;
4806 fontDescriptionRun06.slantDefined = false;
4807 fontDescriptionRun06.sizeDefined = false;
4809 Vector<FontDescriptionRun> fontDescriptionRuns;
4810 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4811 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4812 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4813 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4814 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4815 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4817 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4819 Size textArea( 100.f, 300.f );
4822 "Center alignment for the last paragraph.",
4823 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4826 fontDescriptionRuns.Begin(),
4827 Text::HorizontalAlignment::CENTER,
4828 Text::VerticalAlignment::TOP,
4835 if( !AlignTest( data ) )
4837 tet_result(TET_FAIL);
4840 tet_result(TET_PASS);
4844 int UtcDaliTextAlign07(void)
4846 ToolkitTestApplication application;
4847 tet_infoline(" UtcDaliTextAlign07");
4849 // Calculate text alignment.
4851 const std::string fontLatin( "TizenSans" );
4852 const std::string fontHebrew( "TizenSansHebrew" );
4853 const std::string fontArabic( "TizenSansArabic" );
4855 // Set a known font description
4856 FontDescriptionRun fontDescriptionRun01;
4857 fontDescriptionRun01.characterRun.characterIndex = 0u;
4858 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4859 fontDescriptionRun01.familyLength = fontLatin.size();
4860 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4861 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4862 fontDescriptionRun01.familyDefined = true;
4863 fontDescriptionRun01.weightDefined = false;
4864 fontDescriptionRun01.widthDefined = false;
4865 fontDescriptionRun01.slantDefined = false;
4866 fontDescriptionRun01.sizeDefined = false;
4868 FontDescriptionRun fontDescriptionRun02;
4869 fontDescriptionRun02.characterRun.characterIndex = 12u;
4870 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4871 fontDescriptionRun02.familyLength = fontHebrew.size();
4872 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4873 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4874 fontDescriptionRun02.familyDefined = true;
4875 fontDescriptionRun02.weightDefined = false;
4876 fontDescriptionRun02.widthDefined = false;
4877 fontDescriptionRun02.slantDefined = false;
4878 fontDescriptionRun02.sizeDefined = false;
4880 FontDescriptionRun fontDescriptionRun03;
4881 fontDescriptionRun03.characterRun.characterIndex = 22u;
4882 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4883 fontDescriptionRun03.familyLength = fontArabic.size();
4884 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4885 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4886 fontDescriptionRun03.familyDefined = true;
4887 fontDescriptionRun03.weightDefined = false;
4888 fontDescriptionRun03.widthDefined = false;
4889 fontDescriptionRun03.slantDefined = false;
4890 fontDescriptionRun03.sizeDefined = false;
4892 FontDescriptionRun fontDescriptionRun04;
4893 fontDescriptionRun04.characterRun.characterIndex = 36u;
4894 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4895 fontDescriptionRun04.familyLength = fontLatin.size();
4896 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4897 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4898 fontDescriptionRun04.familyDefined = true;
4899 fontDescriptionRun04.weightDefined = false;
4900 fontDescriptionRun04.widthDefined = false;
4901 fontDescriptionRun04.slantDefined = false;
4902 fontDescriptionRun04.sizeDefined = false;
4904 FontDescriptionRun fontDescriptionRun05;
4905 fontDescriptionRun05.characterRun.characterIndex = 48u;
4906 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4907 fontDescriptionRun05.familyLength = fontLatin.size();
4908 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4909 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4910 fontDescriptionRun05.familyDefined = true;
4911 fontDescriptionRun05.weightDefined = false;
4912 fontDescriptionRun05.widthDefined = false;
4913 fontDescriptionRun05.slantDefined = false;
4914 fontDescriptionRun05.sizeDefined = false;
4916 FontDescriptionRun fontDescriptionRun06;
4917 fontDescriptionRun06.characterRun.characterIndex = 60u;
4918 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4919 fontDescriptionRun06.familyLength = fontArabic.size();
4920 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4921 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4922 fontDescriptionRun06.familyDefined = true;
4923 fontDescriptionRun06.weightDefined = false;
4924 fontDescriptionRun06.widthDefined = false;
4925 fontDescriptionRun06.slantDefined = false;
4926 fontDescriptionRun06.sizeDefined = false;
4928 Vector<FontDescriptionRun> fontDescriptionRuns;
4929 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4930 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4931 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4932 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4933 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4934 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4936 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4938 Size textArea( 100.f, 300.f );
4941 "End alignment for the first paragraph.",
4942 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4945 fontDescriptionRuns.Begin(),
4946 Text::HorizontalAlignment::END,
4947 Text::VerticalAlignment::TOP,
4954 if( !AlignTest( data ) )
4956 tet_result(TET_FAIL);
4959 tet_result(TET_PASS);
4963 int UtcDaliTextAlign08(void)
4965 ToolkitTestApplication application;
4966 tet_infoline(" UtcDaliTextAlign08");
4968 // Calculate text alignment.
4970 const std::string fontLatin( "TizenSans" );
4971 const std::string fontHebrew( "TizenSansHebrew" );
4972 const std::string fontArabic( "TizenSansArabic" );
4974 // Set a known font description
4975 FontDescriptionRun fontDescriptionRun01;
4976 fontDescriptionRun01.characterRun.characterIndex = 0u;
4977 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4978 fontDescriptionRun01.familyLength = fontLatin.size();
4979 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4980 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4981 fontDescriptionRun01.familyDefined = true;
4982 fontDescriptionRun01.weightDefined = false;
4983 fontDescriptionRun01.widthDefined = false;
4984 fontDescriptionRun01.slantDefined = false;
4985 fontDescriptionRun01.sizeDefined = false;
4987 FontDescriptionRun fontDescriptionRun02;
4988 fontDescriptionRun02.characterRun.characterIndex = 12u;
4989 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4990 fontDescriptionRun02.familyLength = fontHebrew.size();
4991 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4992 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4993 fontDescriptionRun02.familyDefined = true;
4994 fontDescriptionRun02.weightDefined = false;
4995 fontDescriptionRun02.widthDefined = false;
4996 fontDescriptionRun02.slantDefined = false;
4997 fontDescriptionRun02.sizeDefined = false;
4999 FontDescriptionRun fontDescriptionRun03;
5000 fontDescriptionRun03.characterRun.characterIndex = 22u;
5001 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5002 fontDescriptionRun03.familyLength = fontArabic.size();
5003 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5004 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5005 fontDescriptionRun03.familyDefined = true;
5006 fontDescriptionRun03.weightDefined = false;
5007 fontDescriptionRun03.widthDefined = false;
5008 fontDescriptionRun03.slantDefined = false;
5009 fontDescriptionRun03.sizeDefined = false;
5011 FontDescriptionRun fontDescriptionRun04;
5012 fontDescriptionRun04.characterRun.characterIndex = 36u;
5013 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5014 fontDescriptionRun04.familyLength = fontLatin.size();
5015 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5016 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5017 fontDescriptionRun04.familyDefined = true;
5018 fontDescriptionRun04.weightDefined = false;
5019 fontDescriptionRun04.widthDefined = false;
5020 fontDescriptionRun04.slantDefined = false;
5021 fontDescriptionRun04.sizeDefined = false;
5023 FontDescriptionRun fontDescriptionRun05;
5024 fontDescriptionRun05.characterRun.characterIndex = 48u;
5025 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5026 fontDescriptionRun05.familyLength = fontLatin.size();
5027 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5028 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5029 fontDescriptionRun05.familyDefined = true;
5030 fontDescriptionRun05.weightDefined = false;
5031 fontDescriptionRun05.widthDefined = false;
5032 fontDescriptionRun05.slantDefined = false;
5033 fontDescriptionRun05.sizeDefined = false;
5035 FontDescriptionRun fontDescriptionRun06;
5036 fontDescriptionRun06.characterRun.characterIndex = 60u;
5037 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5038 fontDescriptionRun06.familyLength = fontArabic.size();
5039 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5040 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5041 fontDescriptionRun06.familyDefined = true;
5042 fontDescriptionRun06.weightDefined = false;
5043 fontDescriptionRun06.widthDefined = false;
5044 fontDescriptionRun06.slantDefined = false;
5045 fontDescriptionRun06.sizeDefined = false;
5047 Vector<FontDescriptionRun> fontDescriptionRuns;
5048 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5049 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5050 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5051 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5052 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5053 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5055 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5057 Size textArea( 100.f, 300.f );
5060 "End alignment for the mid paragraph.",
5061 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5064 fontDescriptionRuns.Begin(),
5065 Text::HorizontalAlignment::END,
5066 Text::VerticalAlignment::TOP,
5073 if( !AlignTest( data ) )
5075 tet_result(TET_FAIL);
5078 tet_result(TET_PASS);
5082 int UtcDaliTextAlign09(void)
5084 ToolkitTestApplication application;
5085 tet_infoline(" UtcDaliTextAlign09");
5087 // Calculate text alignment.
5089 const std::string fontLatin( "TizenSans" );
5090 const std::string fontHebrew( "TizenSansHebrew" );
5091 const std::string fontArabic( "TizenSansArabic" );
5093 // Set a known font description
5094 FontDescriptionRun fontDescriptionRun01;
5095 fontDescriptionRun01.characterRun.characterIndex = 0u;
5096 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5097 fontDescriptionRun01.familyLength = fontLatin.size();
5098 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5099 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5100 fontDescriptionRun01.familyDefined = true;
5101 fontDescriptionRun01.weightDefined = false;
5102 fontDescriptionRun01.widthDefined = false;
5103 fontDescriptionRun01.slantDefined = false;
5104 fontDescriptionRun01.sizeDefined = false;
5106 FontDescriptionRun fontDescriptionRun02;
5107 fontDescriptionRun02.characterRun.characterIndex = 12u;
5108 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5109 fontDescriptionRun02.familyLength = fontHebrew.size();
5110 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5111 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5112 fontDescriptionRun02.familyDefined = true;
5113 fontDescriptionRun02.weightDefined = false;
5114 fontDescriptionRun02.widthDefined = false;
5115 fontDescriptionRun02.slantDefined = false;
5116 fontDescriptionRun02.sizeDefined = false;
5118 FontDescriptionRun fontDescriptionRun03;
5119 fontDescriptionRun03.characterRun.characterIndex = 22u;
5120 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5121 fontDescriptionRun03.familyLength = fontArabic.size();
5122 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5123 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5124 fontDescriptionRun03.familyDefined = true;
5125 fontDescriptionRun03.weightDefined = false;
5126 fontDescriptionRun03.widthDefined = false;
5127 fontDescriptionRun03.slantDefined = false;
5128 fontDescriptionRun03.sizeDefined = false;
5130 FontDescriptionRun fontDescriptionRun04;
5131 fontDescriptionRun04.characterRun.characterIndex = 36u;
5132 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5133 fontDescriptionRun04.familyLength = fontLatin.size();
5134 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5135 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5136 fontDescriptionRun04.familyDefined = true;
5137 fontDescriptionRun04.weightDefined = false;
5138 fontDescriptionRun04.widthDefined = false;
5139 fontDescriptionRun04.slantDefined = false;
5140 fontDescriptionRun04.sizeDefined = false;
5142 FontDescriptionRun fontDescriptionRun05;
5143 fontDescriptionRun05.characterRun.characterIndex = 48u;
5144 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5145 fontDescriptionRun05.familyLength = fontLatin.size();
5146 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5147 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5148 fontDescriptionRun05.familyDefined = true;
5149 fontDescriptionRun05.weightDefined = false;
5150 fontDescriptionRun05.widthDefined = false;
5151 fontDescriptionRun05.slantDefined = false;
5152 fontDescriptionRun05.sizeDefined = false;
5154 FontDescriptionRun fontDescriptionRun06;
5155 fontDescriptionRun06.characterRun.characterIndex = 60u;
5156 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5157 fontDescriptionRun06.familyLength = fontArabic.size();
5158 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5159 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5160 fontDescriptionRun06.familyDefined = true;
5161 fontDescriptionRun06.weightDefined = false;
5162 fontDescriptionRun06.widthDefined = false;
5163 fontDescriptionRun06.slantDefined = false;
5164 fontDescriptionRun06.sizeDefined = false;
5166 Vector<FontDescriptionRun> fontDescriptionRuns;
5167 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5168 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5169 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5170 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5171 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5172 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5174 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5176 Size textArea( 100.f, 300.f );
5179 "End alignment for the last paragraph.",
5180 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5183 fontDescriptionRuns.Begin(),
5184 Text::HorizontalAlignment::END,
5185 Text::VerticalAlignment::TOP,
5192 if( !AlignTest( data ) )
5194 tet_result(TET_FAIL);
5197 tet_result(TET_PASS);
5201 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5203 ToolkitTestApplication application;
5204 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5206 Layout::Engine engine;
5207 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5209 engine.SetDefaultLineSpacing( 10.f );
5210 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5212 tet_result(TET_PASS);