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,
115 // 2) Clear the layout.
116 Vector<LineRun>& lines = visualModel->mLines;
118 const Length numberOfCharacters = logicalModel->mText.Count();
119 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
120 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
121 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
123 LineIndex startRemoveIndex = 0u;
125 if( 0u != lines.Count() )
127 startRemoveIndex = lines.Count();
128 LineIndex endRemoveIndex = startRemoveIndex;
129 ClearGlyphRuns( data.startIndex,
130 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
135 // Update the character runs of the lines.
136 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
137 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
138 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
139 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
140 ClearCharacterRuns( startCharacterIndex,
141 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
146 lines.Erase( lines.Begin() + startRemoveIndex,
147 lines.Begin() + endRemoveIndex );
150 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
152 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
153 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
156 Layout::Engine engine;
157 engine.SetMetrics( metrics );
158 engine.SetLayout( data.layout );
160 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 float outlineWidth = visualModel->GetOutlineWidth();
163 Layout::Parameters layoutParameters( data.textArea,
164 logicalModel->mText.Begin(),
165 logicalModel->mLineBreakInfo.Begin(),
166 logicalModel->mWordBreakInfo.Begin(),
167 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
168 visualModel->mGlyphs.Begin(),
169 visualModel->mGlyphsToCharacters.Begin(),
170 visualModel->mCharactersPerGlyph.Begin(),
171 visualModel->mCharactersToGlyph.Begin(),
172 visualModel->mGlyphsPerCharacter.Begin(),
174 Text::HorizontalAlignment::BEGIN,
175 Text::LineWrap::WORD,
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,
377 // 2) Call the ReLayoutRightToLeftLines() method.
378 Layout::Engine engine;
379 engine.SetMetrics( metrics );
381 float outlineWidth = visualModel->GetOutlineWidth();
382 Layout::Parameters layoutParameters( data.textArea,
383 logicalModel->mText.Begin(),
384 logicalModel->mLineBreakInfo.Begin(),
385 logicalModel->mWordBreakInfo.Begin(),
386 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
387 visualModel->mGlyphs.Begin(),
388 visualModel->mGlyphsToCharacters.Begin(),
389 visualModel->mCharactersPerGlyph.Begin(),
390 visualModel->mCharactersToGlyph.Begin(),
391 visualModel->mGlyphsPerCharacter.Begin(),
392 visualModel->mGlyphs.Count(),
393 Text::HorizontalAlignment::BEGIN,
394 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,
490 // Call the Align method.
491 Layout::Engine engine;
492 engine.SetMetrics( metrics );
494 float alignmentOffset = 0.f;
495 engine.Align( data.textArea,
497 data.numberOfCharacters,
498 data.horizontalAlignment,
503 if( data.numberOfLines != visualModel->mLines.Count() )
505 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
509 const LineRun* const linesBuffer = visualModel->mLines.Begin();
510 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
512 const LineRun& line = *( linesBuffer + index );
514 if( line.alignmentOffset != *( data.lineOffsets + index ) )
516 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
526 //////////////////////////////////////////////////////////
528 // UtcDaliTextLayoutSetGetLayout
529 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
530 // UtcDaliTextLayoutSetGetHorizontalAlignment
531 // UtcDaliTextLayoutSetGetVerticalAlignment
532 // UtcDaliTextLayoutSetGetCursorWidth
533 // UtcDaliTextLayoutNoText
534 // UtcDaliTextLayoutSmallTextArea01
535 // UtcDaliTextLayoutSmallTextArea02
536 // UtcDaliTextLayoutMultilineText01
537 // UtcDaliTextLayoutMultilineText02
538 // UtcDaliTextLayoutMultilineText03
539 // UtcDaliTextLayoutMultilineText04
540 // UtcDaliTextLayoutMultilineText05
541 // UtcDaliTextUpdateLayout01
542 // UtcDaliTextUpdateLayout02
543 // UtcDaliTextUpdateLayout03
544 // UtcDaliTextLayoutEllipsis01
545 // UtcDaliTextLayoutEllipsis02
546 // UtcDaliTextLayoutEllipsis03
547 // UtcDaliTextLayoutEllipsis04
548 // UtcDaliTextLayoutEllipsis04
549 // UtcDaliTextReorderLayout01
550 // UtcDaliTextReorderLayout02
551 // UtcDaliTextReorderLayout03
552 // UtcDaliTextReorderLayout04
553 // UtcDaliTextAlign01
554 // UtcDaliTextAlign02
555 // UtcDaliTextAlign03
556 // UtcDaliTextAlign04
557 // UtcDaliTextAlign05
558 // UtcDaliTextAlign06
559 // UtcDaliTextAlign07
560 // UtcDaliTextAlign08
561 // UtcDaliTextAlign09
563 //////////////////////////////////////////////////////////
565 int UtcDaliTextLayoutSetGetLayout(void)
567 ToolkitTestApplication application;
568 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
570 Layout::Engine engine;
572 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
574 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
575 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
577 tet_result(TET_PASS);
581 int UtcDaliTextLayoutSetGetCursorWidth(void)
583 ToolkitTestApplication application;
586 Layout::Engine engine;
588 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
590 engine.SetCursorWidth( 2 );
591 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
593 tet_result(TET_PASS);
597 int UtcDaliTextLayoutNoText(void)
599 ToolkitTestApplication application;
600 tet_infoline(" UtcDaliTextLayoutNoText");
602 Size textArea(100.f, 60.f);
603 Size layoutSize = Vector2::ZERO;
604 LayoutTextData data =
616 Layout::Engine::MULTI_LINE_BOX,
623 if( !LayoutTextTest( data ) )
625 tet_result(TET_FAIL);
628 tet_result(TET_PASS);
632 int UtcDaliTextLayoutSmallTextArea01(void)
634 ToolkitTestApplication application;
635 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
637 // Won't layout the text in multi-line if the width is too small.
639 const std::string fontFamily( "TizenSans" );
641 // Set a known font description
642 FontDescriptionRun fontDescriptionRun;
643 fontDescriptionRun.characterRun.characterIndex = 0u;
644 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
645 fontDescriptionRun.familyLength = fontFamily.size();
646 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
647 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
648 fontDescriptionRun.familyDefined = true;
649 fontDescriptionRun.weightDefined = false;
650 fontDescriptionRun.widthDefined = false;
651 fontDescriptionRun.slantDefined = false;
652 fontDescriptionRun.sizeDefined = false;
654 Vector<FontDescriptionRun> fontDescriptionRuns;
655 fontDescriptionRuns.PushBack( fontDescriptionRun );
656 Size textArea(1.f, 1.f);
657 Size layoutSize = Vector2::ZERO;
658 LayoutTextData data =
660 "Layout text in a small area",
664 fontDescriptionRuns.Begin(),
670 Layout::Engine::MULTI_LINE_BOX,
677 if( !LayoutTextTest( data ) )
679 tet_result(TET_FAIL);
682 tet_result(TET_PASS);
686 int UtcDaliTextLayoutSmallTextArea02(void)
688 ToolkitTestApplication application;
689 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
691 // Will layout the text in single line as it can be scrolled.
693 const std::string fontFamily( "TizenSans" );
695 // Set a known font description
696 FontDescriptionRun fontDescriptionRun;
697 fontDescriptionRun.characterRun.characterIndex = 0u;
698 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
699 fontDescriptionRun.familyLength = fontFamily.size();
700 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
701 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
702 fontDescriptionRun.familyDefined = true;
703 fontDescriptionRun.weightDefined = false;
704 fontDescriptionRun.widthDefined = false;
705 fontDescriptionRun.slantDefined = false;
706 fontDescriptionRun.sizeDefined = false;
708 Vector<FontDescriptionRun> fontDescriptionRuns;
709 fontDescriptionRuns.PushBack( fontDescriptionRun );
710 Size textArea(1.f, 1.f);
711 Size layoutSize(80.f, 20.f);
712 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 };
713 struct LineRun line =
726 Vector<LineRun> lines;
727 lines.PushBack( line );
729 LayoutTextData data =
731 "Layout text in a small area",
735 fontDescriptionRuns.Begin(),
741 Layout::Engine::SINGLE_LINE_BOX,
748 if( !LayoutTextTest( data ) )
750 tet_result(TET_FAIL);
753 tet_result(TET_PASS);
757 int UtcDaliTextLayoutMultilineText01(void)
759 ToolkitTestApplication application;
760 tet_infoline(" UtcDaliTextLayoutMultilineText01");
762 // Layout some lines of left to right text.
764 const std::string fontFamily( "TizenSans" );
766 // Set a known font description
767 FontDescriptionRun fontDescriptionRun1;
768 fontDescriptionRun1.characterRun.characterIndex = 0u;
769 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
770 fontDescriptionRun1.familyLength = fontFamily.size();
771 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
772 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
773 fontDescriptionRun1.familyDefined = true;
774 fontDescriptionRun1.weightDefined = false;
775 fontDescriptionRun1.widthDefined = false;
776 fontDescriptionRun1.slantDefined = false;
777 fontDescriptionRun1.sizeDefined = false;
779 FontDescriptionRun fontDescriptionRun2;
780 fontDescriptionRun2.characterRun.characterIndex = 18u;
781 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
782 fontDescriptionRun2.familyLength = fontFamily.size();
783 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
784 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
785 fontDescriptionRun2.familyDefined = true;
786 fontDescriptionRun2.weightDefined = false;
787 fontDescriptionRun2.widthDefined = false;
788 fontDescriptionRun2.slantDefined = false;
789 fontDescriptionRun2.sizeDefined = false;
791 Vector<FontDescriptionRun> fontDescriptionRuns;
792 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
793 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
794 Size textArea(100.f, 300.f);
795 Size layoutSize(95.f, 97.f);
798 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,
799 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
800 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,
801 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,
802 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
804 struct LineRun line0 =
817 struct LineRun line1 =
830 struct LineRun line2 =
843 struct LineRun line3 =
856 struct LineRun line4 =
869 Vector<LineRun> lines;
870 lines.PushBack( line0 );
871 lines.PushBack( line1 );
872 lines.PushBack( line2 );
873 lines.PushBack( line3 );
874 lines.PushBack( line4 );
876 LayoutTextData data =
878 "Layout simple multi-line text",
879 "Hello world demo.\n"
880 "Layout different lines of text.",
883 fontDescriptionRuns.Begin(),
889 Layout::Engine::MULTI_LINE_BOX,
896 if( !LayoutTextTest( data ) )
898 tet_result(TET_FAIL);
901 tet_result(TET_PASS);
905 int UtcDaliTextLayoutMultilineText02(void)
907 ToolkitTestApplication application;
908 tet_infoline(" UtcDaliTextLayoutMultilineText02");
910 // Layout some lines of bidirectional text.
912 const std::string fontFamily1( "TizenSans" );
914 // Set a known font description
915 FontDescriptionRun fontDescriptionRun1;
916 fontDescriptionRun1.characterRun.characterIndex = 0u;
917 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
918 fontDescriptionRun1.familyLength = fontFamily1.size();
919 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
920 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
921 fontDescriptionRun1.familyDefined = true;
922 fontDescriptionRun1.weightDefined = false;
923 fontDescriptionRun1.widthDefined = false;
924 fontDescriptionRun1.slantDefined = false;
925 fontDescriptionRun1.sizeDefined = false;
927 const std::string fontFamily2( "TizenSansHebrew" );
929 // Set a known font description
930 FontDescriptionRun fontDescriptionRun2;
931 fontDescriptionRun2.characterRun.characterIndex = 17u;
932 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
933 fontDescriptionRun2.familyLength = fontFamily2.size();
934 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
935 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
936 fontDescriptionRun2.familyDefined = true;
937 fontDescriptionRun2.weightDefined = false;
938 fontDescriptionRun2.widthDefined = false;
939 fontDescriptionRun2.slantDefined = false;
940 fontDescriptionRun2.sizeDefined = false;
942 const std::string fontFamily3( "TizenSans" );
944 // Set a known font description
945 FontDescriptionRun fontDescriptionRun3;
946 fontDescriptionRun3.characterRun.characterIndex = 26u;
947 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
948 fontDescriptionRun3.familyLength = fontFamily3.size();
949 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
950 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
951 fontDescriptionRun3.familyDefined = true;
952 fontDescriptionRun3.weightDefined = false;
953 fontDescriptionRun3.widthDefined = false;
954 fontDescriptionRun3.slantDefined = false;
955 fontDescriptionRun3.sizeDefined = false;
957 const std::string fontFamily4( "TizenSansHebrew" );
959 // Set a known font description
960 FontDescriptionRun fontDescriptionRun4;
961 fontDescriptionRun4.characterRun.characterIndex = 28u;
962 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
963 fontDescriptionRun4.familyLength = fontFamily4.size();
964 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
965 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
966 fontDescriptionRun4.familyDefined = true;
967 fontDescriptionRun4.weightDefined = false;
968 fontDescriptionRun4.widthDefined = false;
969 fontDescriptionRun4.slantDefined = false;
970 fontDescriptionRun4.sizeDefined = false;
972 const std::string fontFamily5( "TizenSans" );
974 // Set a known font description
975 FontDescriptionRun fontDescriptionRun5;
976 fontDescriptionRun5.characterRun.characterIndex = 38u;
977 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
978 fontDescriptionRun5.familyLength = fontFamily5.size();
979 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
980 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
981 fontDescriptionRun5.familyDefined = true;
982 fontDescriptionRun5.weightDefined = false;
983 fontDescriptionRun5.widthDefined = false;
984 fontDescriptionRun5.slantDefined = false;
985 fontDescriptionRun5.sizeDefined = false;
987 Vector<FontDescriptionRun> fontDescriptionRuns;
988 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
989 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
990 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
991 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
992 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
993 Size textArea(100.f, 300.f);
994 Size layoutSize(80.f, 120.f);
997 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,
998 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,
999 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1000 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,
1001 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,
1002 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1004 struct LineRun line0 =
1017 struct LineRun line1 =
1030 struct LineRun line2 =
1043 struct LineRun line3 =
1056 struct LineRun line4 =
1069 struct LineRun line5 =
1082 Vector<LineRun> lines;
1083 lines.PushBack( line0 );
1084 lines.PushBack( line1 );
1085 lines.PushBack( line2 );
1086 lines.PushBack( line3 );
1087 lines.PushBack( line4 );
1088 lines.PushBack( line5 );
1090 LayoutTextData data =
1092 "Layout bidirectional text.",
1093 "Hello world demo שלום עולם.\n"
1094 "שלום עולם hello world demo.",
1097 fontDescriptionRuns.Begin(),
1103 Layout::Engine::MULTI_LINE_BOX,
1110 if( !LayoutTextTest( data ) )
1112 tet_result(TET_FAIL);
1115 tet_result(TET_PASS);
1119 int UtcDaliTextLayoutMultilineText03(void)
1121 ToolkitTestApplication application;
1122 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1124 // Layout a long word which doesn't fit in the width of the text area.
1126 const std::string fontFamily( "TizenSans" );
1128 // Set a known font description
1129 FontDescriptionRun fontDescriptionRun;
1130 fontDescriptionRun.characterRun.characterIndex = 0u;
1131 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1132 fontDescriptionRun.familyLength = fontFamily.size();
1133 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1134 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1135 fontDescriptionRun.familyDefined = true;
1136 fontDescriptionRun.weightDefined = false;
1137 fontDescriptionRun.widthDefined = false;
1138 fontDescriptionRun.slantDefined = false;
1139 fontDescriptionRun.sizeDefined = false;
1141 Vector<FontDescriptionRun> fontDescriptionRuns;
1142 fontDescriptionRuns.PushBack( fontDescriptionRun );
1143 Size textArea(100.f, 300.f);
1144 Size layoutSize(96.f, 60.f);
1147 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,
1148 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,
1149 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1151 struct LineRun line0 =
1164 struct LineRun line1 =
1177 struct LineRun line2 =
1190 Vector<LineRun> lines;
1191 lines.PushBack( line0 );
1192 lines.PushBack( line1 );
1193 lines.PushBack( line2 );
1195 LayoutTextData data =
1197 "Layout a long word which doesn't fit in the width of the text area.",
1198 "Helloworlddemohelloworlddemo.",
1201 fontDescriptionRuns.Begin(),
1207 Layout::Engine::MULTI_LINE_BOX,
1214 if( !LayoutTextTest( data ) )
1216 tet_result(TET_FAIL);
1219 tet_result(TET_PASS);
1223 int UtcDaliTextLayoutMultilineText04(void)
1225 ToolkitTestApplication application;
1226 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1228 // Layout simple text ending with a \n. It has to add a void line at the end.
1230 const std::string fontFamily( "TizenSans" );
1232 // Set a known font description
1233 FontDescriptionRun fontDescriptionRun;
1234 fontDescriptionRun.characterRun.characterIndex = 0u;
1235 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1236 fontDescriptionRun.familyLength = fontFamily.size();
1237 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1238 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1239 fontDescriptionRun.familyDefined = true;
1240 fontDescriptionRun.weightDefined = false;
1241 fontDescriptionRun.widthDefined = false;
1242 fontDescriptionRun.slantDefined = false;
1243 fontDescriptionRun.sizeDefined = false;
1245 Vector<FontDescriptionRun> fontDescriptionRuns;
1246 fontDescriptionRuns.PushBack( fontDescriptionRun );
1247 Size textArea(100.f, 300.f);
1248 Size layoutSize(83.f, 40.f);
1251 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
1253 struct LineRun line0 =
1265 struct LineRun line1 =
1278 Vector<LineRun> lines;
1279 lines.PushBack( line0 );
1280 lines.PushBack( line1 );
1282 LayoutTextData data =
1284 "Layout simple text ending with a \n.",
1288 fontDescriptionRuns.Begin(),
1294 Layout::Engine::MULTI_LINE_BOX,
1301 if( !LayoutTextTest( data ) )
1303 tet_result(TET_FAIL);
1306 tet_result(TET_PASS);
1310 int UtcDaliTextLayoutMultilineText05(void)
1312 ToolkitTestApplication application;
1313 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1315 // Layout simple text with one character with a different font size.
1317 const std::string fontFamily( "TizenSans" );
1319 // Set a known font description
1320 FontDescriptionRun fontDescriptionRun1;
1321 fontDescriptionRun1.characterRun.characterIndex = 0u;
1322 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1323 fontDescriptionRun1.familyLength = fontFamily.size();
1324 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1325 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1326 fontDescriptionRun1.familyDefined = true;
1327 fontDescriptionRun1.weightDefined = false;
1328 fontDescriptionRun1.widthDefined = false;
1329 fontDescriptionRun1.slantDefined = false;
1330 fontDescriptionRun1.sizeDefined = false;
1332 FontDescriptionRun fontDescriptionRun2;
1333 fontDescriptionRun2.characterRun.characterIndex = 6u;
1334 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1335 fontDescriptionRun2.familyLength = fontFamily.size();
1336 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1337 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1338 fontDescriptionRun2.size = 1280u;
1339 fontDescriptionRun2.familyDefined = true;
1340 fontDescriptionRun2.weightDefined = false;
1341 fontDescriptionRun2.widthDefined = false;
1342 fontDescriptionRun2.slantDefined = false;
1343 fontDescriptionRun2.sizeDefined = true;
1345 FontDescriptionRun fontDescriptionRun3;
1346 fontDescriptionRun3.characterRun.characterIndex = 7u;
1347 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1348 fontDescriptionRun3.familyLength = fontFamily.size();
1349 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1350 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1351 fontDescriptionRun3.familyDefined = true;
1352 fontDescriptionRun3.weightDefined = false;
1353 fontDescriptionRun3.widthDefined = false;
1354 fontDescriptionRun3.slantDefined = false;
1355 fontDescriptionRun3.sizeDefined = false;
1357 Vector<FontDescriptionRun> fontDescriptionRuns;
1358 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1359 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1360 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1361 Size textArea(100.f, 300.f);
1362 Size layoutSize(88.f, 53.f);
1365 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,
1366 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1368 struct LineRun line0 =
1381 struct LineRun line1 =
1394 Vector<LineRun> lines;
1395 lines.PushBack( line0 );
1396 lines.PushBack( line1 );
1398 LayoutTextData data =
1400 "Layout simple text with one character with a different font size.",
1401 "Hello world demo.",
1404 fontDescriptionRuns.Begin(),
1410 Layout::Engine::MULTI_LINE_BOX,
1417 if( !LayoutTextTest( data ) )
1419 tet_result(TET_FAIL);
1422 tet_result(TET_PASS);
1426 int UtcDaliTextUpdateLayout01(void)
1428 ToolkitTestApplication application;
1429 tet_infoline(" UtcDaliTextUpdateLayout01");
1431 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1433 const std::string fontLatin( "TizenSans" );
1434 const std::string fontHebrew( "TizenSansHebrew" );
1435 const std::string fontArabic( "TizenSansArabic" );
1437 // Set a known font description
1438 FontDescriptionRun fontDescriptionRun01;
1439 fontDescriptionRun01.characterRun.characterIndex = 0u;
1440 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1441 fontDescriptionRun01.familyLength = fontLatin.size();
1442 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1443 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1444 fontDescriptionRun01.familyDefined = true;
1445 fontDescriptionRun01.weightDefined = false;
1446 fontDescriptionRun01.widthDefined = false;
1447 fontDescriptionRun01.slantDefined = false;
1448 fontDescriptionRun01.sizeDefined = false;
1450 // Set a known font description
1451 FontDescriptionRun fontDescriptionRun02;
1452 fontDescriptionRun02.characterRun.characterIndex = 17u;
1453 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1454 fontDescriptionRun02.familyLength = fontHebrew.size();
1455 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1456 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1457 fontDescriptionRun02.familyDefined = true;
1458 fontDescriptionRun02.weightDefined = false;
1459 fontDescriptionRun02.widthDefined = false;
1460 fontDescriptionRun02.slantDefined = false;
1461 fontDescriptionRun02.sizeDefined = false;
1463 // Set a known font description
1464 FontDescriptionRun fontDescriptionRun03;
1465 fontDescriptionRun03.characterRun.characterIndex = 26u;
1466 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1467 fontDescriptionRun03.familyLength = fontLatin.size();
1468 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1469 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1470 fontDescriptionRun03.familyDefined = true;
1471 fontDescriptionRun03.weightDefined = false;
1472 fontDescriptionRun03.widthDefined = false;
1473 fontDescriptionRun03.slantDefined = false;
1474 fontDescriptionRun03.sizeDefined = false;
1476 // Set a known font description
1477 FontDescriptionRun fontDescriptionRun04;
1478 fontDescriptionRun04.characterRun.characterIndex = 28u;
1479 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1480 fontDescriptionRun04.familyLength = fontArabic.size();
1481 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1482 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1483 fontDescriptionRun04.familyDefined = true;
1484 fontDescriptionRun04.weightDefined = false;
1485 fontDescriptionRun04.widthDefined = false;
1486 fontDescriptionRun04.slantDefined = false;
1487 fontDescriptionRun04.sizeDefined = false;
1489 // Set a known font description
1490 FontDescriptionRun fontDescriptionRun05;
1491 fontDescriptionRun05.characterRun.characterIndex = 42u;
1492 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1493 fontDescriptionRun05.familyLength = fontLatin.size();
1494 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1495 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1496 fontDescriptionRun05.familyDefined = true;
1497 fontDescriptionRun05.weightDefined = false;
1498 fontDescriptionRun05.widthDefined = false;
1499 fontDescriptionRun05.slantDefined = false;
1500 fontDescriptionRun05.sizeDefined = false;
1502 // Set a known font description
1503 FontDescriptionRun fontDescriptionRun06;
1504 fontDescriptionRun06.characterRun.characterIndex = 54u;
1505 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1506 fontDescriptionRun06.familyLength = fontHebrew.size();
1507 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1508 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1509 fontDescriptionRun06.familyDefined = true;
1510 fontDescriptionRun06.weightDefined = false;
1511 fontDescriptionRun06.widthDefined = false;
1512 fontDescriptionRun06.slantDefined = false;
1513 fontDescriptionRun06.sizeDefined = false;
1515 // Set a known font description
1516 FontDescriptionRun fontDescriptionRun07;
1517 fontDescriptionRun07.characterRun.characterIndex = 64u;
1518 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1519 fontDescriptionRun07.familyLength = fontHebrew.size();
1520 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1521 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1522 fontDescriptionRun07.familyDefined = true;
1523 fontDescriptionRun07.weightDefined = false;
1524 fontDescriptionRun07.widthDefined = false;
1525 fontDescriptionRun07.slantDefined = false;
1526 fontDescriptionRun07.sizeDefined = false;
1528 // Set a known font description
1529 FontDescriptionRun fontDescriptionRun08;
1530 fontDescriptionRun08.characterRun.characterIndex = 74u;
1531 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1532 fontDescriptionRun08.familyLength = fontLatin.size();
1533 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1534 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1535 fontDescriptionRun08.familyDefined = true;
1536 fontDescriptionRun08.weightDefined = false;
1537 fontDescriptionRun08.widthDefined = false;
1538 fontDescriptionRun08.slantDefined = false;
1539 fontDescriptionRun08.sizeDefined = false;
1541 // Set a known font description
1542 FontDescriptionRun fontDescriptionRun09;
1543 fontDescriptionRun09.characterRun.characterIndex = 92u;
1544 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1545 fontDescriptionRun09.familyLength = fontLatin.size();
1546 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1547 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1548 fontDescriptionRun09.familyDefined = true;
1549 fontDescriptionRun09.weightDefined = false;
1550 fontDescriptionRun09.widthDefined = false;
1551 fontDescriptionRun09.slantDefined = false;
1552 fontDescriptionRun09.sizeDefined = false;
1554 // Set a known font description
1555 FontDescriptionRun fontDescriptionRun10;
1556 fontDescriptionRun10.characterRun.characterIndex = 104u;
1557 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1558 fontDescriptionRun10.familyLength = fontArabic.size();
1559 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1560 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1561 fontDescriptionRun10.familyDefined = true;
1562 fontDescriptionRun10.weightDefined = false;
1563 fontDescriptionRun10.widthDefined = false;
1564 fontDescriptionRun10.slantDefined = false;
1565 fontDescriptionRun10.sizeDefined = false;
1567 // Set a known font description
1568 FontDescriptionRun fontDescriptionRun11;
1569 fontDescriptionRun11.characterRun.characterIndex = 118u;
1570 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1571 fontDescriptionRun11.familyLength = fontHebrew.size();
1572 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1573 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1574 fontDescriptionRun11.familyDefined = true;
1575 fontDescriptionRun11.weightDefined = false;
1576 fontDescriptionRun11.widthDefined = false;
1577 fontDescriptionRun11.slantDefined = false;
1578 fontDescriptionRun11.sizeDefined = false;
1580 // Set a known font description
1581 FontDescriptionRun fontDescriptionRun12;
1582 fontDescriptionRun12.characterRun.characterIndex = 128u;
1583 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1584 fontDescriptionRun12.familyLength = fontLatin.size();
1585 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1586 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1587 fontDescriptionRun12.familyDefined = true;
1588 fontDescriptionRun12.weightDefined = false;
1589 fontDescriptionRun12.widthDefined = false;
1590 fontDescriptionRun12.slantDefined = false;
1591 fontDescriptionRun12.sizeDefined = false;
1593 // Set a known font description
1594 FontDescriptionRun fontDescriptionRun13;
1595 fontDescriptionRun13.characterRun.characterIndex = 145u;
1596 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1597 fontDescriptionRun13.familyLength = fontHebrew.size();
1598 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1599 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1600 fontDescriptionRun13.familyDefined = true;
1601 fontDescriptionRun13.weightDefined = false;
1602 fontDescriptionRun13.widthDefined = false;
1603 fontDescriptionRun13.slantDefined = false;
1604 fontDescriptionRun13.sizeDefined = false;
1606 // Set a known font description
1607 FontDescriptionRun fontDescriptionRun14;
1608 fontDescriptionRun14.characterRun.characterIndex = 154u;
1609 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1610 fontDescriptionRun14.familyLength = fontLatin.size();
1611 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1612 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1613 fontDescriptionRun14.familyDefined = true;
1614 fontDescriptionRun14.weightDefined = false;
1615 fontDescriptionRun14.widthDefined = false;
1616 fontDescriptionRun14.slantDefined = false;
1617 fontDescriptionRun14.sizeDefined = false;
1619 // Set a known font description
1620 FontDescriptionRun fontDescriptionRun15;
1621 fontDescriptionRun15.characterRun.characterIndex = 156u;
1622 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1623 fontDescriptionRun15.familyLength = fontHebrew.size();
1624 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1625 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1626 fontDescriptionRun15.familyDefined = true;
1627 fontDescriptionRun15.weightDefined = false;
1628 fontDescriptionRun15.widthDefined = false;
1629 fontDescriptionRun15.slantDefined = false;
1630 fontDescriptionRun15.sizeDefined = false;
1632 // Set a known font description
1633 FontDescriptionRun fontDescriptionRun16;
1634 fontDescriptionRun16.characterRun.characterIndex = 166u;
1635 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1636 fontDescriptionRun16.familyLength = fontLatin.size();
1637 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1638 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1639 fontDescriptionRun16.familyDefined = true;
1640 fontDescriptionRun16.weightDefined = false;
1641 fontDescriptionRun16.widthDefined = false;
1642 fontDescriptionRun16.slantDefined = false;
1643 fontDescriptionRun16.sizeDefined = false;
1645 // Set a known font description
1646 FontDescriptionRun fontDescriptionRun17;
1647 fontDescriptionRun17.characterRun.characterIndex = 178u;
1648 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1649 fontDescriptionRun17.familyLength = fontArabic.size();
1650 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1651 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1652 fontDescriptionRun17.familyDefined = true;
1653 fontDescriptionRun17.weightDefined = false;
1654 fontDescriptionRun17.widthDefined = false;
1655 fontDescriptionRun17.slantDefined = false;
1656 fontDescriptionRun17.sizeDefined = false;
1658 Vector<FontDescriptionRun> fontDescriptionRuns;
1659 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1660 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1661 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1662 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1663 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1664 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1665 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1666 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1667 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1668 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1675 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1676 Size textArea(100.f, 300.f);
1677 Size layoutSize(92.f, 380.f);
1680 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,
1681 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,
1682 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1683 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,
1684 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,
1685 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1686 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,
1687 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,
1688 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1689 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,
1690 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,
1691 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1692 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,
1693 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,
1694 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1695 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,
1696 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,
1697 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,
1700 struct LineRun line01 =
1713 struct LineRun line02 =
1726 struct LineRun line03 =
1739 struct LineRun line04 =
1752 struct LineRun line05 =
1765 struct LineRun line06 =
1778 struct LineRun line07 =
1791 struct LineRun line08 =
1804 struct LineRun line09 =
1817 struct LineRun line10 =
1830 struct LineRun line11 =
1843 struct LineRun line12 =
1856 struct LineRun line13 =
1869 struct LineRun line14 =
1882 struct LineRun line15 =
1895 struct LineRun line16 =
1908 struct LineRun line17 =
1921 struct LineRun line18 =
1934 struct LineRun line19 =
1947 Vector<LineRun> lines;
1948 lines.PushBack( line01 );
1949 lines.PushBack( line02 );
1950 lines.PushBack( line03 );
1951 lines.PushBack( line04 );
1952 lines.PushBack( line05 );
1953 lines.PushBack( line06 );
1954 lines.PushBack( line07 );
1955 lines.PushBack( line08 );
1956 lines.PushBack( line09 );
1957 lines.PushBack( line10 );
1958 lines.PushBack( line11 );
1959 lines.PushBack( line12 );
1960 lines.PushBack( line13 );
1961 lines.PushBack( line14 );
1962 lines.PushBack( line15 );
1963 lines.PushBack( line16 );
1964 lines.PushBack( line17 );
1965 lines.PushBack( line18 );
1966 lines.PushBack( line19 );
1968 LayoutTextData data =
1970 "Layout bidirectional text.",
1971 "Hello world demo שלום עולם.\n"
1972 "مرحبا بالعالم hello world שלום עולם\n"
1973 "שלום עולם hello world demo.\n"
1974 "hello world مرحبا بالعالم שלום עולם\n"
1975 "Hello world demo שלום עולם.\n"
1976 "שלום עולם hello world مرحبا بالعالم\n",
1979 fontDescriptionRuns.Begin(),
1985 Layout::Engine::MULTI_LINE_BOX,
1992 if( !LayoutTextTest( data ) )
1994 tet_result(TET_FAIL);
1997 tet_result(TET_PASS);
2001 int UtcDaliTextUpdateLayout02(void)
2003 ToolkitTestApplication application;
2004 tet_infoline(" UtcDaliTextUpdateLayout02");
2006 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2008 const std::string fontLatin( "TizenSans" );
2009 const std::string fontHebrew( "TizenSansHebrew" );
2010 const std::string fontArabic( "TizenSansArabic" );
2012 // Set a known font description
2013 FontDescriptionRun fontDescriptionRun01;
2014 fontDescriptionRun01.characterRun.characterIndex = 0u;
2015 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2016 fontDescriptionRun01.familyLength = fontLatin.size();
2017 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2018 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2019 fontDescriptionRun01.familyDefined = true;
2020 fontDescriptionRun01.weightDefined = false;
2021 fontDescriptionRun01.widthDefined = false;
2022 fontDescriptionRun01.slantDefined = false;
2023 fontDescriptionRun01.sizeDefined = false;
2025 // Set a known font description
2026 FontDescriptionRun fontDescriptionRun02;
2027 fontDescriptionRun02.characterRun.characterIndex = 17u;
2028 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2029 fontDescriptionRun02.familyLength = fontHebrew.size();
2030 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2031 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2032 fontDescriptionRun02.familyDefined = true;
2033 fontDescriptionRun02.weightDefined = false;
2034 fontDescriptionRun02.widthDefined = false;
2035 fontDescriptionRun02.slantDefined = false;
2036 fontDescriptionRun02.sizeDefined = false;
2038 // Set a known font description
2039 FontDescriptionRun fontDescriptionRun03;
2040 fontDescriptionRun03.characterRun.characterIndex = 26u;
2041 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2042 fontDescriptionRun03.familyLength = fontLatin.size();
2043 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2044 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2045 fontDescriptionRun03.familyDefined = true;
2046 fontDescriptionRun03.weightDefined = false;
2047 fontDescriptionRun03.widthDefined = false;
2048 fontDescriptionRun03.slantDefined = false;
2049 fontDescriptionRun03.sizeDefined = false;
2051 // Set a known font description
2052 FontDescriptionRun fontDescriptionRun04;
2053 fontDescriptionRun04.characterRun.characterIndex = 28u;
2054 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2055 fontDescriptionRun04.familyLength = fontArabic.size();
2056 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2057 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2058 fontDescriptionRun04.familyDefined = true;
2059 fontDescriptionRun04.weightDefined = false;
2060 fontDescriptionRun04.widthDefined = false;
2061 fontDescriptionRun04.slantDefined = false;
2062 fontDescriptionRun04.sizeDefined = false;
2064 // Set a known font description
2065 FontDescriptionRun fontDescriptionRun05;
2066 fontDescriptionRun05.characterRun.characterIndex = 42u;
2067 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2068 fontDescriptionRun05.familyLength = fontLatin.size();
2069 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2070 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2071 fontDescriptionRun05.familyDefined = true;
2072 fontDescriptionRun05.weightDefined = false;
2073 fontDescriptionRun05.widthDefined = false;
2074 fontDescriptionRun05.slantDefined = false;
2075 fontDescriptionRun05.sizeDefined = false;
2077 // Set a known font description
2078 FontDescriptionRun fontDescriptionRun06;
2079 fontDescriptionRun06.characterRun.characterIndex = 54u;
2080 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2081 fontDescriptionRun06.familyLength = fontHebrew.size();
2082 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2083 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2084 fontDescriptionRun06.familyDefined = true;
2085 fontDescriptionRun06.weightDefined = false;
2086 fontDescriptionRun06.widthDefined = false;
2087 fontDescriptionRun06.slantDefined = false;
2088 fontDescriptionRun06.sizeDefined = false;
2090 // Set a known font description
2091 FontDescriptionRun fontDescriptionRun07;
2092 fontDescriptionRun07.characterRun.characterIndex = 64u;
2093 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2094 fontDescriptionRun07.familyLength = fontHebrew.size();
2095 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2096 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2097 fontDescriptionRun07.familyDefined = true;
2098 fontDescriptionRun07.weightDefined = false;
2099 fontDescriptionRun07.widthDefined = false;
2100 fontDescriptionRun07.slantDefined = false;
2101 fontDescriptionRun07.sizeDefined = false;
2103 // Set a known font description
2104 FontDescriptionRun fontDescriptionRun08;
2105 fontDescriptionRun08.characterRun.characterIndex = 74u;
2106 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2107 fontDescriptionRun08.familyLength = fontLatin.size();
2108 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2109 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2110 fontDescriptionRun08.familyDefined = true;
2111 fontDescriptionRun08.weightDefined = false;
2112 fontDescriptionRun08.widthDefined = false;
2113 fontDescriptionRun08.slantDefined = false;
2114 fontDescriptionRun08.sizeDefined = false;
2116 // Set a known font description
2117 FontDescriptionRun fontDescriptionRun09;
2118 fontDescriptionRun09.characterRun.characterIndex = 92u;
2119 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2120 fontDescriptionRun09.familyLength = fontLatin.size();
2121 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2122 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2123 fontDescriptionRun09.familyDefined = true;
2124 fontDescriptionRun09.weightDefined = false;
2125 fontDescriptionRun09.widthDefined = false;
2126 fontDescriptionRun09.slantDefined = false;
2127 fontDescriptionRun09.sizeDefined = false;
2129 // Set a known font description
2130 FontDescriptionRun fontDescriptionRun10;
2131 fontDescriptionRun10.characterRun.characterIndex = 104u;
2132 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2133 fontDescriptionRun10.familyLength = fontArabic.size();
2134 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2135 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2136 fontDescriptionRun10.familyDefined = true;
2137 fontDescriptionRun10.weightDefined = false;
2138 fontDescriptionRun10.widthDefined = false;
2139 fontDescriptionRun10.slantDefined = false;
2140 fontDescriptionRun10.sizeDefined = false;
2142 // Set a known font description
2143 FontDescriptionRun fontDescriptionRun11;
2144 fontDescriptionRun11.characterRun.characterIndex = 118u;
2145 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2146 fontDescriptionRun11.familyLength = fontHebrew.size();
2147 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2148 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2149 fontDescriptionRun11.familyDefined = true;
2150 fontDescriptionRun11.weightDefined = false;
2151 fontDescriptionRun11.widthDefined = false;
2152 fontDescriptionRun11.slantDefined = false;
2153 fontDescriptionRun11.sizeDefined = false;
2155 // Set a known font description
2156 FontDescriptionRun fontDescriptionRun12;
2157 fontDescriptionRun12.characterRun.characterIndex = 128u;
2158 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2159 fontDescriptionRun12.familyLength = fontLatin.size();
2160 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2161 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2162 fontDescriptionRun12.familyDefined = true;
2163 fontDescriptionRun12.weightDefined = false;
2164 fontDescriptionRun12.widthDefined = false;
2165 fontDescriptionRun12.slantDefined = false;
2166 fontDescriptionRun12.sizeDefined = false;
2168 // Set a known font description
2169 FontDescriptionRun fontDescriptionRun13;
2170 fontDescriptionRun13.characterRun.characterIndex = 145u;
2171 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2172 fontDescriptionRun13.familyLength = fontHebrew.size();
2173 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2174 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2175 fontDescriptionRun13.familyDefined = true;
2176 fontDescriptionRun13.weightDefined = false;
2177 fontDescriptionRun13.widthDefined = false;
2178 fontDescriptionRun13.slantDefined = false;
2179 fontDescriptionRun13.sizeDefined = false;
2181 // Set a known font description
2182 FontDescriptionRun fontDescriptionRun14;
2183 fontDescriptionRun14.characterRun.characterIndex = 154u;
2184 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2185 fontDescriptionRun14.familyLength = fontLatin.size();
2186 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2187 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2188 fontDescriptionRun14.familyDefined = true;
2189 fontDescriptionRun14.weightDefined = false;
2190 fontDescriptionRun14.widthDefined = false;
2191 fontDescriptionRun14.slantDefined = false;
2192 fontDescriptionRun14.sizeDefined = false;
2194 // Set a known font description
2195 FontDescriptionRun fontDescriptionRun15;
2196 fontDescriptionRun15.characterRun.characterIndex = 156u;
2197 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2198 fontDescriptionRun15.familyLength = fontHebrew.size();
2199 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2200 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2201 fontDescriptionRun15.familyDefined = true;
2202 fontDescriptionRun15.weightDefined = false;
2203 fontDescriptionRun15.widthDefined = false;
2204 fontDescriptionRun15.slantDefined = false;
2205 fontDescriptionRun15.sizeDefined = false;
2207 // Set a known font description
2208 FontDescriptionRun fontDescriptionRun16;
2209 fontDescriptionRun16.characterRun.characterIndex = 166u;
2210 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2211 fontDescriptionRun16.familyLength = fontLatin.size();
2212 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2213 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2214 fontDescriptionRun16.familyDefined = true;
2215 fontDescriptionRun16.weightDefined = false;
2216 fontDescriptionRun16.widthDefined = false;
2217 fontDescriptionRun16.slantDefined = false;
2218 fontDescriptionRun16.sizeDefined = false;
2220 // Set a known font description
2221 FontDescriptionRun fontDescriptionRun17;
2222 fontDescriptionRun17.characterRun.characterIndex = 178u;
2223 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2224 fontDescriptionRun17.familyLength = fontArabic.size();
2225 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2226 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2227 fontDescriptionRun17.familyDefined = true;
2228 fontDescriptionRun17.weightDefined = false;
2229 fontDescriptionRun17.widthDefined = false;
2230 fontDescriptionRun17.slantDefined = false;
2231 fontDescriptionRun17.sizeDefined = false;
2233 Vector<FontDescriptionRun> fontDescriptionRuns;
2234 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2235 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2236 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2240 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2241 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2251 Size textArea(100.f, 300.f);
2252 Size layoutSize(92.f, 380.f);
2255 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,
2256 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,
2257 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2258 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,
2259 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,
2260 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2261 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,
2262 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,
2263 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2264 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,
2265 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,
2266 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2267 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,
2268 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,
2269 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2270 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,
2271 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,
2272 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,
2275 struct LineRun line01 =
2288 struct LineRun line02 =
2301 struct LineRun line03 =
2314 struct LineRun line04 =
2327 struct LineRun line05 =
2340 struct LineRun line06 =
2353 struct LineRun line07 =
2366 struct LineRun line08 =
2379 struct LineRun line09 =
2392 struct LineRun line10 =
2405 struct LineRun line11 =
2418 struct LineRun line12 =
2431 struct LineRun line13 =
2444 struct LineRun line14 =
2457 struct LineRun line15 =
2470 struct LineRun line16 =
2483 struct LineRun line17 =
2496 struct LineRun line18 =
2509 struct LineRun line19 =
2522 Vector<LineRun> lines;
2523 lines.PushBack( line01 );
2524 lines.PushBack( line02 );
2525 lines.PushBack( line03 );
2526 lines.PushBack( line04 );
2527 lines.PushBack( line05 );
2528 lines.PushBack( line06 );
2529 lines.PushBack( line07 );
2530 lines.PushBack( line08 );
2531 lines.PushBack( line09 );
2532 lines.PushBack( line10 );
2533 lines.PushBack( line11 );
2534 lines.PushBack( line12 );
2535 lines.PushBack( line13 );
2536 lines.PushBack( line14 );
2537 lines.PushBack( line15 );
2538 lines.PushBack( line16 );
2539 lines.PushBack( line17 );
2540 lines.PushBack( line18 );
2541 lines.PushBack( line19 );
2543 LayoutTextData data =
2545 "Layout bidirectional text.",
2546 "Hello world demo שלום עולם.\n"
2547 "مرحبا بالعالم hello world שלום עולם\n"
2548 "שלום עולם hello world demo.\n"
2549 "hello world مرحبا بالعالم שלום עולם\n"
2550 "Hello world demo שלום עולם.\n"
2551 "שלום עולם hello world مرحبا بالعالم\n",
2554 fontDescriptionRuns.Begin(),
2560 Layout::Engine::MULTI_LINE_BOX,
2567 if( !LayoutTextTest( data ) )
2569 tet_result(TET_FAIL);
2572 tet_result(TET_PASS);
2576 int UtcDaliTextUpdateLayout03(void)
2578 ToolkitTestApplication application;
2579 tet_infoline(" UtcDaliTextUpdateLayout03");
2581 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2583 const std::string fontLatin( "TizenSans" );
2584 const std::string fontHebrew( "TizenSansHebrew" );
2585 const std::string fontArabic( "TizenSansArabic" );
2587 // Set a known font description
2588 FontDescriptionRun fontDescriptionRun01;
2589 fontDescriptionRun01.characterRun.characterIndex = 0u;
2590 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2591 fontDescriptionRun01.familyLength = fontLatin.size();
2592 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2593 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2594 fontDescriptionRun01.familyDefined = true;
2595 fontDescriptionRun01.weightDefined = false;
2596 fontDescriptionRun01.widthDefined = false;
2597 fontDescriptionRun01.slantDefined = false;
2598 fontDescriptionRun01.sizeDefined = false;
2600 // Set a known font description
2601 FontDescriptionRun fontDescriptionRun02;
2602 fontDescriptionRun02.characterRun.characterIndex = 17u;
2603 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2604 fontDescriptionRun02.familyLength = fontHebrew.size();
2605 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2606 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2607 fontDescriptionRun02.familyDefined = true;
2608 fontDescriptionRun02.weightDefined = false;
2609 fontDescriptionRun02.widthDefined = false;
2610 fontDescriptionRun02.slantDefined = false;
2611 fontDescriptionRun02.sizeDefined = false;
2613 // Set a known font description
2614 FontDescriptionRun fontDescriptionRun03;
2615 fontDescriptionRun03.characterRun.characterIndex = 26u;
2616 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2617 fontDescriptionRun03.familyLength = fontLatin.size();
2618 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2619 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2620 fontDescriptionRun03.familyDefined = true;
2621 fontDescriptionRun03.weightDefined = false;
2622 fontDescriptionRun03.widthDefined = false;
2623 fontDescriptionRun03.slantDefined = false;
2624 fontDescriptionRun03.sizeDefined = false;
2626 // Set a known font description
2627 FontDescriptionRun fontDescriptionRun04;
2628 fontDescriptionRun04.characterRun.characterIndex = 28u;
2629 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2630 fontDescriptionRun04.familyLength = fontArabic.size();
2631 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2632 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2633 fontDescriptionRun04.familyDefined = true;
2634 fontDescriptionRun04.weightDefined = false;
2635 fontDescriptionRun04.widthDefined = false;
2636 fontDescriptionRun04.slantDefined = false;
2637 fontDescriptionRun04.sizeDefined = false;
2639 // Set a known font description
2640 FontDescriptionRun fontDescriptionRun05;
2641 fontDescriptionRun05.characterRun.characterIndex = 42u;
2642 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2643 fontDescriptionRun05.familyLength = fontLatin.size();
2644 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2645 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2646 fontDescriptionRun05.familyDefined = true;
2647 fontDescriptionRun05.weightDefined = false;
2648 fontDescriptionRun05.widthDefined = false;
2649 fontDescriptionRun05.slantDefined = false;
2650 fontDescriptionRun05.sizeDefined = false;
2652 // Set a known font description
2653 FontDescriptionRun fontDescriptionRun06;
2654 fontDescriptionRun06.characterRun.characterIndex = 54u;
2655 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2656 fontDescriptionRun06.familyLength = fontHebrew.size();
2657 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2658 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2659 fontDescriptionRun06.familyDefined = true;
2660 fontDescriptionRun06.weightDefined = false;
2661 fontDescriptionRun06.widthDefined = false;
2662 fontDescriptionRun06.slantDefined = false;
2663 fontDescriptionRun06.sizeDefined = false;
2665 // Set a known font description
2666 FontDescriptionRun fontDescriptionRun07;
2667 fontDescriptionRun07.characterRun.characterIndex = 64u;
2668 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2669 fontDescriptionRun07.familyLength = fontHebrew.size();
2670 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2671 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2672 fontDescriptionRun07.familyDefined = true;
2673 fontDescriptionRun07.weightDefined = false;
2674 fontDescriptionRun07.widthDefined = false;
2675 fontDescriptionRun07.slantDefined = false;
2676 fontDescriptionRun07.sizeDefined = false;
2678 // Set a known font description
2679 FontDescriptionRun fontDescriptionRun08;
2680 fontDescriptionRun08.characterRun.characterIndex = 74u;
2681 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2682 fontDescriptionRun08.familyLength = fontLatin.size();
2683 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2684 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2685 fontDescriptionRun08.familyDefined = true;
2686 fontDescriptionRun08.weightDefined = false;
2687 fontDescriptionRun08.widthDefined = false;
2688 fontDescriptionRun08.slantDefined = false;
2689 fontDescriptionRun08.sizeDefined = false;
2691 // Set a known font description
2692 FontDescriptionRun fontDescriptionRun09;
2693 fontDescriptionRun09.characterRun.characterIndex = 92u;
2694 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2695 fontDescriptionRun09.familyLength = fontLatin.size();
2696 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2697 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2698 fontDescriptionRun09.familyDefined = true;
2699 fontDescriptionRun09.weightDefined = false;
2700 fontDescriptionRun09.widthDefined = false;
2701 fontDescriptionRun09.slantDefined = false;
2702 fontDescriptionRun09.sizeDefined = false;
2704 // Set a known font description
2705 FontDescriptionRun fontDescriptionRun10;
2706 fontDescriptionRun10.characterRun.characterIndex = 104u;
2707 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2708 fontDescriptionRun10.familyLength = fontArabic.size();
2709 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2710 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2711 fontDescriptionRun10.familyDefined = true;
2712 fontDescriptionRun10.weightDefined = false;
2713 fontDescriptionRun10.widthDefined = false;
2714 fontDescriptionRun10.slantDefined = false;
2715 fontDescriptionRun10.sizeDefined = false;
2717 // Set a known font description
2718 FontDescriptionRun fontDescriptionRun11;
2719 fontDescriptionRun11.characterRun.characterIndex = 118u;
2720 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2721 fontDescriptionRun11.familyLength = fontHebrew.size();
2722 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2723 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2724 fontDescriptionRun11.familyDefined = true;
2725 fontDescriptionRun11.weightDefined = false;
2726 fontDescriptionRun11.widthDefined = false;
2727 fontDescriptionRun11.slantDefined = false;
2728 fontDescriptionRun11.sizeDefined = false;
2730 // Set a known font description
2731 FontDescriptionRun fontDescriptionRun12;
2732 fontDescriptionRun12.characterRun.characterIndex = 128u;
2733 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2734 fontDescriptionRun12.familyLength = fontLatin.size();
2735 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2736 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2737 fontDescriptionRun12.familyDefined = true;
2738 fontDescriptionRun12.weightDefined = false;
2739 fontDescriptionRun12.widthDefined = false;
2740 fontDescriptionRun12.slantDefined = false;
2741 fontDescriptionRun12.sizeDefined = false;
2743 // Set a known font description
2744 FontDescriptionRun fontDescriptionRun13;
2745 fontDescriptionRun13.characterRun.characterIndex = 145u;
2746 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2747 fontDescriptionRun13.familyLength = fontHebrew.size();
2748 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2749 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2750 fontDescriptionRun13.familyDefined = true;
2751 fontDescriptionRun13.weightDefined = false;
2752 fontDescriptionRun13.widthDefined = false;
2753 fontDescriptionRun13.slantDefined = false;
2754 fontDescriptionRun13.sizeDefined = false;
2756 // Set a known font description
2757 FontDescriptionRun fontDescriptionRun14;
2758 fontDescriptionRun14.characterRun.characterIndex = 154u;
2759 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2760 fontDescriptionRun14.familyLength = fontLatin.size();
2761 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2762 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2763 fontDescriptionRun14.familyDefined = true;
2764 fontDescriptionRun14.weightDefined = false;
2765 fontDescriptionRun14.widthDefined = false;
2766 fontDescriptionRun14.slantDefined = false;
2767 fontDescriptionRun14.sizeDefined = false;
2769 // Set a known font description
2770 FontDescriptionRun fontDescriptionRun15;
2771 fontDescriptionRun15.characterRun.characterIndex = 156u;
2772 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2773 fontDescriptionRun15.familyLength = fontHebrew.size();
2774 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2775 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2776 fontDescriptionRun15.familyDefined = true;
2777 fontDescriptionRun15.weightDefined = false;
2778 fontDescriptionRun15.widthDefined = false;
2779 fontDescriptionRun15.slantDefined = false;
2780 fontDescriptionRun15.sizeDefined = false;
2782 // Set a known font description
2783 FontDescriptionRun fontDescriptionRun16;
2784 fontDescriptionRun16.characterRun.characterIndex = 166u;
2785 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2786 fontDescriptionRun16.familyLength = fontLatin.size();
2787 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2788 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2789 fontDescriptionRun16.familyDefined = true;
2790 fontDescriptionRun16.weightDefined = false;
2791 fontDescriptionRun16.widthDefined = false;
2792 fontDescriptionRun16.slantDefined = false;
2793 fontDescriptionRun16.sizeDefined = false;
2795 // Set a known font description
2796 FontDescriptionRun fontDescriptionRun17;
2797 fontDescriptionRun17.characterRun.characterIndex = 178u;
2798 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2799 fontDescriptionRun17.familyLength = fontArabic.size();
2800 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2801 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2802 fontDescriptionRun17.familyDefined = true;
2803 fontDescriptionRun17.weightDefined = false;
2804 fontDescriptionRun17.widthDefined = false;
2805 fontDescriptionRun17.slantDefined = false;
2806 fontDescriptionRun17.sizeDefined = false;
2808 Vector<FontDescriptionRun> fontDescriptionRuns;
2809 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2810 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2811 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2812 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2813 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2814 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2815 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2816 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2817 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2818 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2825 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2826 Size textArea(100.f, 300.f);
2827 Size layoutSize(92.f, 380.f);
2830 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,
2831 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,
2832 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2833 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,
2834 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,
2835 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2836 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,
2837 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,
2838 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2839 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,
2840 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,
2841 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2842 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,
2843 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,
2844 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2845 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,
2846 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,
2847 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,
2850 struct LineRun line01 =
2863 struct LineRun line02 =
2876 struct LineRun line03 =
2889 struct LineRun line04 =
2902 struct LineRun line05 =
2915 struct LineRun line06 =
2928 struct LineRun line07 =
2941 struct LineRun line08 =
2954 struct LineRun line09 =
2967 struct LineRun line10 =
2980 struct LineRun line11 =
2993 struct LineRun line12 =
3006 struct LineRun line13 =
3019 struct LineRun line14 =
3032 struct LineRun line15 =
3045 struct LineRun line16 =
3058 struct LineRun line17 =
3071 struct LineRun line18 =
3084 struct LineRun line19 =
3097 Vector<LineRun> lines;
3098 lines.PushBack( line01 );
3099 lines.PushBack( line02 );
3100 lines.PushBack( line03 );
3101 lines.PushBack( line04 );
3102 lines.PushBack( line05 );
3103 lines.PushBack( line06 );
3104 lines.PushBack( line07 );
3105 lines.PushBack( line08 );
3106 lines.PushBack( line09 );
3107 lines.PushBack( line10 );
3108 lines.PushBack( line11 );
3109 lines.PushBack( line12 );
3110 lines.PushBack( line13 );
3111 lines.PushBack( line14 );
3112 lines.PushBack( line15 );
3113 lines.PushBack( line16 );
3114 lines.PushBack( line17 );
3115 lines.PushBack( line18 );
3116 lines.PushBack( line19 );
3118 LayoutTextData data =
3120 "Layout bidirectional text.",
3121 "Hello world demo שלום עולם.\n"
3122 "مرحبا بالعالم hello world שלום עולם\n"
3123 "שלום עולם hello world demo.\n"
3124 "hello world مرحبا بالعالم שלום עולם\n"
3125 "Hello world demo שלום עולם.\n"
3126 "שלום עולם hello world مرحبا بالعالم\n",
3129 fontDescriptionRuns.Begin(),
3135 Layout::Engine::MULTI_LINE_BOX,
3142 if( !LayoutTextTest( data ) )
3144 tet_result(TET_FAIL);
3147 tet_result(TET_PASS);
3151 int UtcDaliTextLayoutEllipsis01(void)
3153 ToolkitTestApplication application;
3154 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3156 // Layout single-line LTR text with ellipsis.
3158 const std::string fontLatin( "TizenSans" );
3160 // Set a known font description
3161 FontDescriptionRun fontDescriptionRun01;
3162 fontDescriptionRun01.characterRun.characterIndex = 0u;
3163 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3164 fontDescriptionRun01.familyLength = fontLatin.size();
3165 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3166 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3167 fontDescriptionRun01.familyDefined = true;
3168 fontDescriptionRun01.weightDefined = false;
3169 fontDescriptionRun01.widthDefined = false;
3170 fontDescriptionRun01.slantDefined = false;
3171 fontDescriptionRun01.sizeDefined = false;
3173 Vector<FontDescriptionRun> fontDescriptionRuns;
3174 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3176 struct LineRun line01 =
3189 Vector<LineRun> lines;
3190 lines.PushBack( line01 );
3194 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,
3197 Size textArea( 100.f, 50.f );
3198 Size layoutSize( 100.f, 20.f );
3200 LayoutTextData data =
3202 "Layout single-line LTR text with ellipsis.",
3203 "Hello world demo hello world demo hello world demo.",
3206 fontDescriptionRuns.Begin(),
3212 Layout::Engine::SINGLE_LINE_BOX,
3219 if( !LayoutTextTest( data ) )
3221 tet_result(TET_FAIL);
3224 tet_result(TET_PASS);
3228 int UtcDaliTextLayoutEllipsis02(void)
3230 ToolkitTestApplication application;
3231 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3233 // Layout multi-line LTR text with ellipsis.
3235 const std::string fontLatin( "TizenSans" );
3237 // Set a known font description
3238 FontDescriptionRun fontDescriptionRun01;
3239 fontDescriptionRun01.characterRun.characterIndex = 0u;
3240 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3241 fontDescriptionRun01.familyLength = fontLatin.size();
3242 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3243 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3244 fontDescriptionRun01.familyDefined = true;
3245 fontDescriptionRun01.weightDefined = false;
3246 fontDescriptionRun01.widthDefined = false;
3247 fontDescriptionRun01.slantDefined = false;
3248 fontDescriptionRun01.sizeDefined = false;
3250 Vector<FontDescriptionRun> fontDescriptionRuns;
3251 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3253 struct LineRun line01 =
3266 struct LineRun line02 =
3279 Vector<LineRun> lines;
3280 lines.PushBack( line01 );
3281 lines.PushBack( line02 );
3285 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,
3286 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,
3289 Size textArea( 100.f, 50.f );
3290 Size layoutSize( 100.f, 40.f );
3292 LayoutTextData data =
3294 "Layout multi-line LTR text with ellipsis.",
3295 "Hello world demo hello world demo hello world demo.",
3298 fontDescriptionRuns.Begin(),
3304 Layout::Engine::MULTI_LINE_BOX,
3311 if( !LayoutTextTest( data ) )
3313 tet_result(TET_FAIL);
3316 tet_result(TET_PASS);
3320 int UtcDaliTextLayoutEllipsis03(void)
3322 ToolkitTestApplication application;
3323 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3325 // Layout single-line RTL text with ellipsis.
3327 const std::string fontHebrew( "TizenSansHebrew" );
3328 const std::string fontArabic( "TizenSansArabic" );
3330 // Set a known font description
3331 FontDescriptionRun fontDescriptionRun01;
3332 fontDescriptionRun01.characterRun.characterIndex = 0u;
3333 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3334 fontDescriptionRun01.familyLength = fontHebrew.size();
3335 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3336 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3337 fontDescriptionRun01.familyDefined = true;
3338 fontDescriptionRun01.weightDefined = false;
3339 fontDescriptionRun01.widthDefined = false;
3340 fontDescriptionRun01.slantDefined = false;
3341 fontDescriptionRun01.sizeDefined = false;
3343 FontDescriptionRun fontDescriptionRun02;
3344 fontDescriptionRun02.characterRun.characterIndex = 10u;
3345 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3346 fontDescriptionRun02.familyLength = fontArabic.size();
3347 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3348 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3349 fontDescriptionRun02.familyDefined = true;
3350 fontDescriptionRun02.weightDefined = false;
3351 fontDescriptionRun02.widthDefined = false;
3352 fontDescriptionRun02.slantDefined = false;
3353 fontDescriptionRun02.sizeDefined = false;
3355 FontDescriptionRun fontDescriptionRun03;
3356 fontDescriptionRun03.characterRun.characterIndex = 24u;
3357 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3358 fontDescriptionRun03.familyLength = fontHebrew.size();
3359 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3360 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3361 fontDescriptionRun03.familyDefined = true;
3362 fontDescriptionRun03.weightDefined = false;
3363 fontDescriptionRun03.widthDefined = false;
3364 fontDescriptionRun03.slantDefined = false;
3365 fontDescriptionRun03.sizeDefined = false;
3367 FontDescriptionRun fontDescriptionRun04;
3368 fontDescriptionRun04.characterRun.characterIndex = 34u;
3369 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3370 fontDescriptionRun04.familyLength = fontArabic.size();
3371 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3372 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3373 fontDescriptionRun04.familyDefined = true;
3374 fontDescriptionRun04.weightDefined = false;
3375 fontDescriptionRun04.widthDefined = false;
3376 fontDescriptionRun04.slantDefined = false;
3377 fontDescriptionRun04.sizeDefined = false;
3379 FontDescriptionRun fontDescriptionRun05;
3380 fontDescriptionRun05.characterRun.characterIndex = 48u;
3381 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3382 fontDescriptionRun05.familyLength = fontHebrew.size();
3383 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3384 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3385 fontDescriptionRun05.familyDefined = true;
3386 fontDescriptionRun05.weightDefined = false;
3387 fontDescriptionRun05.widthDefined = false;
3388 fontDescriptionRun05.slantDefined = false;
3389 fontDescriptionRun05.sizeDefined = false;
3391 FontDescriptionRun fontDescriptionRun06;
3392 fontDescriptionRun06.characterRun.characterIndex = 58u;
3393 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3394 fontDescriptionRun06.familyLength = fontArabic.size();
3395 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3396 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3397 fontDescriptionRun06.familyDefined = true;
3398 fontDescriptionRun06.weightDefined = false;
3399 fontDescriptionRun06.widthDefined = false;
3400 fontDescriptionRun06.slantDefined = false;
3401 fontDescriptionRun06.sizeDefined = false;
3403 Vector<FontDescriptionRun> fontDescriptionRuns;
3404 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3405 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3406 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3407 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3408 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3409 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3411 struct LineRun line01 =
3424 Vector<LineRun> lines;
3425 lines.PushBack( line01 );
3429 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,
3432 Size textArea( 100.f, 50.f );
3433 Size layoutSize( 100.f, 20.f );
3435 LayoutTextData data =
3437 "Layout single-line RTL text with ellipsis.",
3438 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3441 fontDescriptionRuns.Begin(),
3447 Layout::Engine::SINGLE_LINE_BOX,
3454 if( !LayoutTextTest( data ) )
3456 tet_result(TET_FAIL);
3459 tet_result(TET_PASS);
3463 int UtcDaliTextLayoutEllipsis04(void)
3465 ToolkitTestApplication application;
3466 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3468 // Layout multi-line RTL text with ellipsis.
3470 const std::string fontHebrew( "TizenSansHebrew" );
3471 const std::string fontArabic( "TizenSansArabic" );
3473 // Set a known font description
3474 FontDescriptionRun fontDescriptionRun01;
3475 fontDescriptionRun01.characterRun.characterIndex = 0u;
3476 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3477 fontDescriptionRun01.familyLength = fontHebrew.size();
3478 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3479 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3480 fontDescriptionRun01.familyDefined = true;
3481 fontDescriptionRun01.weightDefined = false;
3482 fontDescriptionRun01.widthDefined = false;
3483 fontDescriptionRun01.slantDefined = false;
3484 fontDescriptionRun01.sizeDefined = false;
3486 FontDescriptionRun fontDescriptionRun02;
3487 fontDescriptionRun02.characterRun.characterIndex = 10u;
3488 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3489 fontDescriptionRun02.familyLength = fontArabic.size();
3490 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3491 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3492 fontDescriptionRun02.familyDefined = true;
3493 fontDescriptionRun02.weightDefined = false;
3494 fontDescriptionRun02.widthDefined = false;
3495 fontDescriptionRun02.slantDefined = false;
3496 fontDescriptionRun02.sizeDefined = false;
3498 FontDescriptionRun fontDescriptionRun03;
3499 fontDescriptionRun03.characterRun.characterIndex = 24u;
3500 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3501 fontDescriptionRun03.familyLength = fontHebrew.size();
3502 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3503 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3504 fontDescriptionRun03.familyDefined = true;
3505 fontDescriptionRun03.weightDefined = false;
3506 fontDescriptionRun03.widthDefined = false;
3507 fontDescriptionRun03.slantDefined = false;
3508 fontDescriptionRun03.sizeDefined = false;
3510 FontDescriptionRun fontDescriptionRun04;
3511 fontDescriptionRun04.characterRun.characterIndex = 34u;
3512 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3513 fontDescriptionRun04.familyLength = fontArabic.size();
3514 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3515 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3516 fontDescriptionRun04.familyDefined = true;
3517 fontDescriptionRun04.weightDefined = false;
3518 fontDescriptionRun04.widthDefined = false;
3519 fontDescriptionRun04.slantDefined = false;
3520 fontDescriptionRun04.sizeDefined = false;
3522 FontDescriptionRun fontDescriptionRun05;
3523 fontDescriptionRun05.characterRun.characterIndex = 48u;
3524 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3525 fontDescriptionRun05.familyLength = fontHebrew.size();
3526 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3527 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3528 fontDescriptionRun05.familyDefined = true;
3529 fontDescriptionRun05.weightDefined = false;
3530 fontDescriptionRun05.widthDefined = false;
3531 fontDescriptionRun05.slantDefined = false;
3532 fontDescriptionRun05.sizeDefined = false;
3534 FontDescriptionRun fontDescriptionRun06;
3535 fontDescriptionRun06.characterRun.characterIndex = 58u;
3536 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3537 fontDescriptionRun06.familyLength = fontArabic.size();
3538 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3539 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3540 fontDescriptionRun06.familyDefined = true;
3541 fontDescriptionRun06.weightDefined = false;
3542 fontDescriptionRun06.widthDefined = false;
3543 fontDescriptionRun06.slantDefined = false;
3544 fontDescriptionRun06.sizeDefined = false;
3546 Vector<FontDescriptionRun> fontDescriptionRuns;
3547 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3548 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3549 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3550 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3551 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3552 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3554 struct LineRun line01 =
3567 struct LineRun line02 =
3580 Vector<LineRun> lines;
3581 lines.PushBack( line01 );
3582 lines.PushBack( line02 );
3586 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,
3587 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,
3590 Size textArea( 100.f, 50.f );
3591 Size layoutSize( 100.f, 40.f );
3593 LayoutTextData data =
3595 "Layout single-line RTL text with ellipsis.",
3596 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3599 fontDescriptionRuns.Begin(),
3605 Layout::Engine::MULTI_LINE_BOX,
3612 if( !LayoutTextTest( data ) )
3614 tet_result(TET_FAIL);
3617 tet_result(TET_PASS);
3621 int UtcDaliTextLayoutEllipsis05(void)
3623 ToolkitTestApplication application;
3624 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3626 const std::string fontLatin( "TizenSans" );
3628 // Set a known font description
3629 FontDescriptionRun fontDescriptionRun01;
3630 fontDescriptionRun01.characterRun.characterIndex = 0u;
3631 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3632 fontDescriptionRun01.familyLength = fontLatin.size();
3633 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3634 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3635 fontDescriptionRun01.familyDefined = true;
3636 fontDescriptionRun01.weightDefined = false;
3637 fontDescriptionRun01.widthDefined = false;
3638 fontDescriptionRun01.slantDefined = false;
3639 fontDescriptionRun01.sizeDefined = false;
3641 Vector<FontDescriptionRun> fontDescriptionRuns;
3642 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3644 struct LineRun line01 =
3657 Vector<LineRun> lines;
3658 lines.PushBack( line01 );
3665 Size textArea( 100.f, 19.f );
3666 Size layoutSize( 100.f, 20.f );
3668 LayoutTextData data =
3670 "Not enough height.",
3674 fontDescriptionRuns.Begin(),
3680 Layout::Engine::MULTI_LINE_BOX,
3687 if( !LayoutTextTest( data ) )
3689 tet_result(TET_FAIL);
3692 tet_result(TET_PASS);
3696 int UtcDaliTextReorderLayout01(void)
3698 ToolkitTestApplication application;
3699 tet_infoline(" UtcDaliTextReorderLayout01");
3701 // Reorder lines. No right to left characters.
3703 const std::string fontLatin( "TizenSans" );
3705 // Set a known font description
3706 FontDescriptionRun fontDescriptionRun01;
3707 fontDescriptionRun01.characterRun.characterIndex = 0u;
3708 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3709 fontDescriptionRun01.familyLength = fontLatin.size();
3710 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3711 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3712 fontDescriptionRun01.familyDefined = true;
3713 fontDescriptionRun01.weightDefined = false;
3714 fontDescriptionRun01.widthDefined = false;
3715 fontDescriptionRun01.slantDefined = false;
3716 fontDescriptionRun01.sizeDefined = false;
3718 Vector<FontDescriptionRun> fontDescriptionRuns;
3719 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3723 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,
3726 Size textArea( 100.f, 300.f );
3728 ReLayoutRightToLeftLinesData data =
3730 "Text with no right to left text.",
3734 fontDescriptionRuns.Begin(),
3741 if( !ReLayoutRightToLeftLinesTest( data ) )
3743 tet_result(TET_FAIL);
3746 tet_result(TET_PASS);
3750 int UtcDaliTextReorderLayout02(void)
3752 ToolkitTestApplication application;
3753 tet_infoline(" UtcDaliTextReorderLayout02");
3755 // Reorder lines of the first paragraph.
3757 const std::string fontHebrew( "TizenSansHebrew" );
3758 const std::string fontArabic( "TizenSansArabic" );
3760 // Set a known font description
3761 FontDescriptionRun fontDescriptionRun01;
3762 fontDescriptionRun01.characterRun.characterIndex = 0u;
3763 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3764 fontDescriptionRun01.familyLength = fontHebrew.size();
3765 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3766 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3767 fontDescriptionRun01.familyDefined = true;
3768 fontDescriptionRun01.weightDefined = false;
3769 fontDescriptionRun01.widthDefined = false;
3770 fontDescriptionRun01.slantDefined = false;
3771 fontDescriptionRun01.sizeDefined = false;
3773 FontDescriptionRun fontDescriptionRun02;
3774 fontDescriptionRun02.characterRun.characterIndex = 10u;
3775 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3776 fontDescriptionRun02.familyLength = fontArabic.size();
3777 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3778 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3779 fontDescriptionRun02.familyDefined = true;
3780 fontDescriptionRun02.weightDefined = false;
3781 fontDescriptionRun02.widthDefined = false;
3782 fontDescriptionRun02.slantDefined = false;
3783 fontDescriptionRun02.sizeDefined = false;
3785 FontDescriptionRun fontDescriptionRun03;
3786 fontDescriptionRun03.characterRun.characterIndex = 24u;
3787 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3788 fontDescriptionRun03.familyLength = fontArabic.size();
3789 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3790 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3791 fontDescriptionRun03.familyDefined = true;
3792 fontDescriptionRun03.weightDefined = false;
3793 fontDescriptionRun03.widthDefined = false;
3794 fontDescriptionRun03.slantDefined = false;
3795 fontDescriptionRun03.sizeDefined = false;
3797 FontDescriptionRun fontDescriptionRun04;
3798 fontDescriptionRun04.characterRun.characterIndex = 38u;
3799 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3800 fontDescriptionRun04.familyLength = fontHebrew.size();
3801 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3802 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3803 fontDescriptionRun04.familyDefined = true;
3804 fontDescriptionRun04.weightDefined = false;
3805 fontDescriptionRun04.widthDefined = false;
3806 fontDescriptionRun04.slantDefined = false;
3807 fontDescriptionRun04.sizeDefined = false;
3809 FontDescriptionRun fontDescriptionRun05;
3810 fontDescriptionRun05.characterRun.characterIndex = 48u;
3811 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3812 fontDescriptionRun05.familyLength = fontHebrew.size();
3813 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3814 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3815 fontDescriptionRun05.familyDefined = true;
3816 fontDescriptionRun05.weightDefined = false;
3817 fontDescriptionRun05.widthDefined = false;
3818 fontDescriptionRun05.slantDefined = false;
3819 fontDescriptionRun05.sizeDefined = false;
3821 FontDescriptionRun fontDescriptionRun06;
3822 fontDescriptionRun06.characterRun.characterIndex = 58u;
3823 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3824 fontDescriptionRun06.familyLength = fontArabic.size();
3825 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3826 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3827 fontDescriptionRun06.familyDefined = true;
3828 fontDescriptionRun06.weightDefined = false;
3829 fontDescriptionRun06.widthDefined = false;
3830 fontDescriptionRun06.slantDefined = false;
3831 fontDescriptionRun06.sizeDefined = false;
3833 Vector<FontDescriptionRun> fontDescriptionRuns;
3834 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3835 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3836 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3837 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3838 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3839 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3843 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,
3844 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,
3845 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,
3846 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3847 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,
3848 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,
3851 Size textArea( 100.f, 300.f );
3853 ReLayoutRightToLeftLinesData data =
3855 "Paragraphs with right to left text.",
3856 "שלום עולם مرحبا بالعالم\n"
3857 "مرحبا بالعالم שלום עולם\n"
3858 "שלום עולם مرحبا بالعالم.",
3861 fontDescriptionRuns.Begin(),
3868 if( !ReLayoutRightToLeftLinesTest( data ) )
3870 tet_result(TET_FAIL);
3873 tet_result(TET_PASS);
3877 int UtcDaliTextReorderLayout03(void)
3879 ToolkitTestApplication application;
3880 tet_infoline(" UtcDaliTextReorderLayout03");
3882 // Reorder lines of the mid paragraph.
3884 const std::string fontHebrew( "TizenSansHebrew" );
3885 const std::string fontArabic( "TizenSansArabic" );
3887 // Set a known font description
3888 FontDescriptionRun fontDescriptionRun01;
3889 fontDescriptionRun01.characterRun.characterIndex = 0u;
3890 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3891 fontDescriptionRun01.familyLength = fontHebrew.size();
3892 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3893 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3894 fontDescriptionRun01.familyDefined = true;
3895 fontDescriptionRun01.weightDefined = false;
3896 fontDescriptionRun01.widthDefined = false;
3897 fontDescriptionRun01.slantDefined = false;
3898 fontDescriptionRun01.sizeDefined = false;
3900 FontDescriptionRun fontDescriptionRun02;
3901 fontDescriptionRun02.characterRun.characterIndex = 10u;
3902 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3903 fontDescriptionRun02.familyLength = fontArabic.size();
3904 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3905 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3906 fontDescriptionRun02.familyDefined = true;
3907 fontDescriptionRun02.weightDefined = false;
3908 fontDescriptionRun02.widthDefined = false;
3909 fontDescriptionRun02.slantDefined = false;
3910 fontDescriptionRun02.sizeDefined = false;
3912 FontDescriptionRun fontDescriptionRun03;
3913 fontDescriptionRun03.characterRun.characterIndex = 24u;
3914 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3915 fontDescriptionRun03.familyLength = fontArabic.size();
3916 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3917 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3918 fontDescriptionRun03.familyDefined = true;
3919 fontDescriptionRun03.weightDefined = false;
3920 fontDescriptionRun03.widthDefined = false;
3921 fontDescriptionRun03.slantDefined = false;
3922 fontDescriptionRun03.sizeDefined = false;
3924 FontDescriptionRun fontDescriptionRun04;
3925 fontDescriptionRun04.characterRun.characterIndex = 38u;
3926 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3927 fontDescriptionRun04.familyLength = fontHebrew.size();
3928 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3929 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3930 fontDescriptionRun04.familyDefined = true;
3931 fontDescriptionRun04.weightDefined = false;
3932 fontDescriptionRun04.widthDefined = false;
3933 fontDescriptionRun04.slantDefined = false;
3934 fontDescriptionRun04.sizeDefined = false;
3936 FontDescriptionRun fontDescriptionRun05;
3937 fontDescriptionRun05.characterRun.characterIndex = 48u;
3938 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3939 fontDescriptionRun05.familyLength = fontHebrew.size();
3940 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3941 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3942 fontDescriptionRun05.familyDefined = true;
3943 fontDescriptionRun05.weightDefined = false;
3944 fontDescriptionRun05.widthDefined = false;
3945 fontDescriptionRun05.slantDefined = false;
3946 fontDescriptionRun05.sizeDefined = false;
3948 FontDescriptionRun fontDescriptionRun06;
3949 fontDescriptionRun06.characterRun.characterIndex = 58u;
3950 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3951 fontDescriptionRun06.familyLength = fontArabic.size();
3952 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3953 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3954 fontDescriptionRun06.familyDefined = true;
3955 fontDescriptionRun06.weightDefined = false;
3956 fontDescriptionRun06.widthDefined = false;
3957 fontDescriptionRun06.slantDefined = false;
3958 fontDescriptionRun06.sizeDefined = false;
3960 Vector<FontDescriptionRun> fontDescriptionRuns;
3961 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3962 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3963 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3964 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3965 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3966 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3970 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,
3971 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,
3972 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,
3973 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3974 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,
3975 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,
3978 Size textArea( 100.f, 300.f );
3980 ReLayoutRightToLeftLinesData data =
3982 "Paragraphs with right to left text.",
3983 "שלום עולם مرحبا بالعالم\n"
3984 "مرحبا بالعالم שלום עולם\n"
3985 "שלום עולם مرحبا بالعالم.",
3988 fontDescriptionRuns.Begin(),
3995 if( !ReLayoutRightToLeftLinesTest( data ) )
3997 tet_result(TET_FAIL);
4000 tet_result(TET_PASS);
4004 int UtcDaliTextReorderLayout04(void)
4006 ToolkitTestApplication application;
4007 tet_infoline(" UtcDaliTextReorderLayout04");
4009 // Reorder lines of the last paragraph.
4011 const std::string fontHebrew( "TizenSansHebrew" );
4012 const std::string fontArabic( "TizenSansArabic" );
4014 // Set a known font description
4015 FontDescriptionRun fontDescriptionRun01;
4016 fontDescriptionRun01.characterRun.characterIndex = 0u;
4017 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4018 fontDescriptionRun01.familyLength = fontHebrew.size();
4019 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4020 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4021 fontDescriptionRun01.familyDefined = true;
4022 fontDescriptionRun01.weightDefined = false;
4023 fontDescriptionRun01.widthDefined = false;
4024 fontDescriptionRun01.slantDefined = false;
4025 fontDescriptionRun01.sizeDefined = false;
4027 FontDescriptionRun fontDescriptionRun02;
4028 fontDescriptionRun02.characterRun.characterIndex = 10u;
4029 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4030 fontDescriptionRun02.familyLength = fontArabic.size();
4031 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4032 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4033 fontDescriptionRun02.familyDefined = true;
4034 fontDescriptionRun02.weightDefined = false;
4035 fontDescriptionRun02.widthDefined = false;
4036 fontDescriptionRun02.slantDefined = false;
4037 fontDescriptionRun02.sizeDefined = false;
4039 FontDescriptionRun fontDescriptionRun03;
4040 fontDescriptionRun03.characterRun.characterIndex = 24u;
4041 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4042 fontDescriptionRun03.familyLength = fontArabic.size();
4043 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4044 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4045 fontDescriptionRun03.familyDefined = true;
4046 fontDescriptionRun03.weightDefined = false;
4047 fontDescriptionRun03.widthDefined = false;
4048 fontDescriptionRun03.slantDefined = false;
4049 fontDescriptionRun03.sizeDefined = false;
4051 FontDescriptionRun fontDescriptionRun04;
4052 fontDescriptionRun04.characterRun.characterIndex = 38u;
4053 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4054 fontDescriptionRun04.familyLength = fontHebrew.size();
4055 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4056 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4057 fontDescriptionRun04.familyDefined = true;
4058 fontDescriptionRun04.weightDefined = false;
4059 fontDescriptionRun04.widthDefined = false;
4060 fontDescriptionRun04.slantDefined = false;
4061 fontDescriptionRun04.sizeDefined = false;
4063 FontDescriptionRun fontDescriptionRun05;
4064 fontDescriptionRun05.characterRun.characterIndex = 48u;
4065 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4066 fontDescriptionRun05.familyLength = fontHebrew.size();
4067 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4068 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4069 fontDescriptionRun05.familyDefined = true;
4070 fontDescriptionRun05.weightDefined = false;
4071 fontDescriptionRun05.widthDefined = false;
4072 fontDescriptionRun05.slantDefined = false;
4073 fontDescriptionRun05.sizeDefined = false;
4075 FontDescriptionRun fontDescriptionRun06;
4076 fontDescriptionRun06.characterRun.characterIndex = 58u;
4077 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4078 fontDescriptionRun06.familyLength = fontArabic.size();
4079 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4080 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4081 fontDescriptionRun06.familyDefined = true;
4082 fontDescriptionRun06.weightDefined = false;
4083 fontDescriptionRun06.widthDefined = false;
4084 fontDescriptionRun06.slantDefined = false;
4085 fontDescriptionRun06.sizeDefined = false;
4087 Vector<FontDescriptionRun> fontDescriptionRuns;
4088 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4089 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4090 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4091 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4092 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4093 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4097 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,
4098 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,
4099 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,
4100 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4101 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,
4102 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,
4105 Size textArea( 100.f, 300.f );
4107 ReLayoutRightToLeftLinesData data =
4109 "Paragraphs with right to left text.",
4110 "שלום עולם مرحبا بالعالم\n"
4111 "مرحبا بالعالم שלום עולם\n"
4112 "שלום עולם مرحبا بالعالم.",
4115 fontDescriptionRuns.Begin(),
4122 if( !ReLayoutRightToLeftLinesTest( data ) )
4124 tet_result(TET_FAIL);
4127 tet_result(TET_PASS);
4131 int UtcDaliTextAlign01(void)
4133 ToolkitTestApplication application;
4134 tet_infoline(" UtcDaliTextAlign01");
4136 // Calculate text alignment.
4138 const std::string fontLatin( "TizenSans" );
4139 const std::string fontHebrew( "TizenSansHebrew" );
4140 const std::string fontArabic( "TizenSansArabic" );
4142 // Set a known font description
4143 FontDescriptionRun fontDescriptionRun01;
4144 fontDescriptionRun01.characterRun.characterIndex = 0u;
4145 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4146 fontDescriptionRun01.familyLength = fontLatin.size();
4147 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4148 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4149 fontDescriptionRun01.familyDefined = true;
4150 fontDescriptionRun01.weightDefined = false;
4151 fontDescriptionRun01.widthDefined = false;
4152 fontDescriptionRun01.slantDefined = false;
4153 fontDescriptionRun01.sizeDefined = false;
4155 FontDescriptionRun fontDescriptionRun02;
4156 fontDescriptionRun02.characterRun.characterIndex = 12u;
4157 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4158 fontDescriptionRun02.familyLength = fontHebrew.size();
4159 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4160 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4161 fontDescriptionRun02.familyDefined = true;
4162 fontDescriptionRun02.weightDefined = false;
4163 fontDescriptionRun02.widthDefined = false;
4164 fontDescriptionRun02.slantDefined = false;
4165 fontDescriptionRun02.sizeDefined = false;
4167 FontDescriptionRun fontDescriptionRun03;
4168 fontDescriptionRun03.characterRun.characterIndex = 22u;
4169 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4170 fontDescriptionRun03.familyLength = fontArabic.size();
4171 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4172 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4173 fontDescriptionRun03.familyDefined = true;
4174 fontDescriptionRun03.weightDefined = false;
4175 fontDescriptionRun03.widthDefined = false;
4176 fontDescriptionRun03.slantDefined = false;
4177 fontDescriptionRun03.sizeDefined = false;
4179 FontDescriptionRun fontDescriptionRun04;
4180 fontDescriptionRun04.characterRun.characterIndex = 36u;
4181 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4182 fontDescriptionRun04.familyLength = fontLatin.size();
4183 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4184 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4185 fontDescriptionRun04.familyDefined = true;
4186 fontDescriptionRun04.weightDefined = false;
4187 fontDescriptionRun04.widthDefined = false;
4188 fontDescriptionRun04.slantDefined = false;
4189 fontDescriptionRun04.sizeDefined = false;
4191 FontDescriptionRun fontDescriptionRun05;
4192 fontDescriptionRun05.characterRun.characterIndex = 48u;
4193 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4194 fontDescriptionRun05.familyLength = fontLatin.size();
4195 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4196 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4197 fontDescriptionRun05.familyDefined = true;
4198 fontDescriptionRun05.weightDefined = false;
4199 fontDescriptionRun05.widthDefined = false;
4200 fontDescriptionRun05.slantDefined = false;
4201 fontDescriptionRun05.sizeDefined = false;
4203 FontDescriptionRun fontDescriptionRun06;
4204 fontDescriptionRun06.characterRun.characterIndex = 60u;
4205 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4206 fontDescriptionRun06.familyLength = fontArabic.size();
4207 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4208 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4209 fontDescriptionRun06.familyDefined = true;
4210 fontDescriptionRun06.weightDefined = false;
4211 fontDescriptionRun06.widthDefined = false;
4212 fontDescriptionRun06.slantDefined = false;
4213 fontDescriptionRun06.sizeDefined = false;
4215 Vector<FontDescriptionRun> fontDescriptionRuns;
4216 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4217 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4218 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4219 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4220 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4221 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4223 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4225 Size textArea( 100.f, 300.f );
4228 "Begin alignment for the first paragraph.",
4229 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4232 fontDescriptionRuns.Begin(),
4233 Text::HorizontalAlignment::BEGIN,
4234 Text::VerticalAlignment::TOP,
4241 if( !AlignTest( data ) )
4243 tet_result(TET_FAIL);
4246 tet_result(TET_PASS);
4250 int UtcDaliTextAlign02(void)
4252 ToolkitTestApplication application;
4253 tet_infoline(" UtcDaliTextAlign02");
4255 // Calculate text alignment.
4257 const std::string fontLatin( "TizenSans" );
4258 const std::string fontHebrew( "TizenSansHebrew" );
4259 const std::string fontArabic( "TizenSansArabic" );
4261 // Set a known font description
4262 FontDescriptionRun fontDescriptionRun01;
4263 fontDescriptionRun01.characterRun.characterIndex = 0u;
4264 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4265 fontDescriptionRun01.familyLength = fontLatin.size();
4266 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4267 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4268 fontDescriptionRun01.familyDefined = true;
4269 fontDescriptionRun01.weightDefined = false;
4270 fontDescriptionRun01.widthDefined = false;
4271 fontDescriptionRun01.slantDefined = false;
4272 fontDescriptionRun01.sizeDefined = false;
4274 FontDescriptionRun fontDescriptionRun02;
4275 fontDescriptionRun02.characterRun.characterIndex = 12u;
4276 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4277 fontDescriptionRun02.familyLength = fontHebrew.size();
4278 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4279 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4280 fontDescriptionRun02.familyDefined = true;
4281 fontDescriptionRun02.weightDefined = false;
4282 fontDescriptionRun02.widthDefined = false;
4283 fontDescriptionRun02.slantDefined = false;
4284 fontDescriptionRun02.sizeDefined = false;
4286 FontDescriptionRun fontDescriptionRun03;
4287 fontDescriptionRun03.characterRun.characterIndex = 22u;
4288 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4289 fontDescriptionRun03.familyLength = fontArabic.size();
4290 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4291 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4292 fontDescriptionRun03.familyDefined = true;
4293 fontDescriptionRun03.weightDefined = false;
4294 fontDescriptionRun03.widthDefined = false;
4295 fontDescriptionRun03.slantDefined = false;
4296 fontDescriptionRun03.sizeDefined = false;
4298 FontDescriptionRun fontDescriptionRun04;
4299 fontDescriptionRun04.characterRun.characterIndex = 36u;
4300 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4301 fontDescriptionRun04.familyLength = fontLatin.size();
4302 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4303 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4304 fontDescriptionRun04.familyDefined = true;
4305 fontDescriptionRun04.weightDefined = false;
4306 fontDescriptionRun04.widthDefined = false;
4307 fontDescriptionRun04.slantDefined = false;
4308 fontDescriptionRun04.sizeDefined = false;
4310 FontDescriptionRun fontDescriptionRun05;
4311 fontDescriptionRun05.characterRun.characterIndex = 48u;
4312 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4313 fontDescriptionRun05.familyLength = fontLatin.size();
4314 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4315 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4316 fontDescriptionRun05.familyDefined = true;
4317 fontDescriptionRun05.weightDefined = false;
4318 fontDescriptionRun05.widthDefined = false;
4319 fontDescriptionRun05.slantDefined = false;
4320 fontDescriptionRun05.sizeDefined = false;
4322 FontDescriptionRun fontDescriptionRun06;
4323 fontDescriptionRun06.characterRun.characterIndex = 60u;
4324 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4325 fontDescriptionRun06.familyLength = fontArabic.size();
4326 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4327 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4328 fontDescriptionRun06.familyDefined = true;
4329 fontDescriptionRun06.weightDefined = false;
4330 fontDescriptionRun06.widthDefined = false;
4331 fontDescriptionRun06.slantDefined = false;
4332 fontDescriptionRun06.sizeDefined = false;
4334 Vector<FontDescriptionRun> fontDescriptionRuns;
4335 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4336 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4337 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4338 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4339 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4340 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4342 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4344 Size textArea( 100.f, 300.f );
4347 "Begin alignment for the mid paragraph.",
4348 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4351 fontDescriptionRuns.Begin(),
4352 Text::HorizontalAlignment::BEGIN,
4353 Text::VerticalAlignment::TOP,
4360 if( !AlignTest( data ) )
4362 tet_result(TET_FAIL);
4365 tet_result(TET_PASS);
4369 int UtcDaliTextAlign03(void)
4371 ToolkitTestApplication application;
4372 tet_infoline(" UtcDaliTextAlign03");
4374 // Calculate text alignment.
4376 const std::string fontLatin( "TizenSans" );
4377 const std::string fontHebrew( "TizenSansHebrew" );
4378 const std::string fontArabic( "TizenSansArabic" );
4380 // Set a known font description
4381 FontDescriptionRun fontDescriptionRun01;
4382 fontDescriptionRun01.characterRun.characterIndex = 0u;
4383 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4384 fontDescriptionRun01.familyLength = fontLatin.size();
4385 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4386 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4387 fontDescriptionRun01.familyDefined = true;
4388 fontDescriptionRun01.weightDefined = false;
4389 fontDescriptionRun01.widthDefined = false;
4390 fontDescriptionRun01.slantDefined = false;
4391 fontDescriptionRun01.sizeDefined = false;
4393 FontDescriptionRun fontDescriptionRun02;
4394 fontDescriptionRun02.characterRun.characterIndex = 12u;
4395 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4396 fontDescriptionRun02.familyLength = fontHebrew.size();
4397 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4398 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4399 fontDescriptionRun02.familyDefined = true;
4400 fontDescriptionRun02.weightDefined = false;
4401 fontDescriptionRun02.widthDefined = false;
4402 fontDescriptionRun02.slantDefined = false;
4403 fontDescriptionRun02.sizeDefined = false;
4405 FontDescriptionRun fontDescriptionRun03;
4406 fontDescriptionRun03.characterRun.characterIndex = 22u;
4407 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4408 fontDescriptionRun03.familyLength = fontArabic.size();
4409 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4410 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4411 fontDescriptionRun03.familyDefined = true;
4412 fontDescriptionRun03.weightDefined = false;
4413 fontDescriptionRun03.widthDefined = false;
4414 fontDescriptionRun03.slantDefined = false;
4415 fontDescriptionRun03.sizeDefined = false;
4417 FontDescriptionRun fontDescriptionRun04;
4418 fontDescriptionRun04.characterRun.characterIndex = 36u;
4419 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4420 fontDescriptionRun04.familyLength = fontLatin.size();
4421 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4422 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4423 fontDescriptionRun04.familyDefined = true;
4424 fontDescriptionRun04.weightDefined = false;
4425 fontDescriptionRun04.widthDefined = false;
4426 fontDescriptionRun04.slantDefined = false;
4427 fontDescriptionRun04.sizeDefined = false;
4429 FontDescriptionRun fontDescriptionRun05;
4430 fontDescriptionRun05.characterRun.characterIndex = 48u;
4431 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4432 fontDescriptionRun05.familyLength = fontLatin.size();
4433 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4434 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4435 fontDescriptionRun05.familyDefined = true;
4436 fontDescriptionRun05.weightDefined = false;
4437 fontDescriptionRun05.widthDefined = false;
4438 fontDescriptionRun05.slantDefined = false;
4439 fontDescriptionRun05.sizeDefined = false;
4441 FontDescriptionRun fontDescriptionRun06;
4442 fontDescriptionRun06.characterRun.characterIndex = 60u;
4443 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4444 fontDescriptionRun06.familyLength = fontArabic.size();
4445 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4446 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4447 fontDescriptionRun06.familyDefined = true;
4448 fontDescriptionRun06.weightDefined = false;
4449 fontDescriptionRun06.widthDefined = false;
4450 fontDescriptionRun06.slantDefined = false;
4451 fontDescriptionRun06.sizeDefined = false;
4453 Vector<FontDescriptionRun> fontDescriptionRuns;
4454 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4455 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4456 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4457 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4458 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4459 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4461 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4463 Size textArea( 100.f, 300.f );
4466 "Begin alignment for the last paragraph.",
4467 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4470 fontDescriptionRuns.Begin(),
4471 Text::HorizontalAlignment::BEGIN,
4472 Text::VerticalAlignment::TOP,
4479 if( !AlignTest( data ) )
4481 tet_result(TET_FAIL);
4484 tet_result(TET_PASS);
4488 int UtcDaliTextAlign04(void)
4490 ToolkitTestApplication application;
4491 tet_infoline(" UtcDaliTextAlign04");
4493 // Calculate text alignment.
4495 const std::string fontLatin( "TizenSans" );
4496 const std::string fontHebrew( "TizenSansHebrew" );
4497 const std::string fontArabic( "TizenSansArabic" );
4499 // Set a known font description
4500 FontDescriptionRun fontDescriptionRun01;
4501 fontDescriptionRun01.characterRun.characterIndex = 0u;
4502 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4503 fontDescriptionRun01.familyLength = fontLatin.size();
4504 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4505 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4506 fontDescriptionRun01.familyDefined = true;
4507 fontDescriptionRun01.weightDefined = false;
4508 fontDescriptionRun01.widthDefined = false;
4509 fontDescriptionRun01.slantDefined = false;
4510 fontDescriptionRun01.sizeDefined = false;
4512 FontDescriptionRun fontDescriptionRun02;
4513 fontDescriptionRun02.characterRun.characterIndex = 12u;
4514 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4515 fontDescriptionRun02.familyLength = fontHebrew.size();
4516 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4517 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4518 fontDescriptionRun02.familyDefined = true;
4519 fontDescriptionRun02.weightDefined = false;
4520 fontDescriptionRun02.widthDefined = false;
4521 fontDescriptionRun02.slantDefined = false;
4522 fontDescriptionRun02.sizeDefined = false;
4524 FontDescriptionRun fontDescriptionRun03;
4525 fontDescriptionRun03.characterRun.characterIndex = 22u;
4526 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4527 fontDescriptionRun03.familyLength = fontArabic.size();
4528 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4529 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4530 fontDescriptionRun03.familyDefined = true;
4531 fontDescriptionRun03.weightDefined = false;
4532 fontDescriptionRun03.widthDefined = false;
4533 fontDescriptionRun03.slantDefined = false;
4534 fontDescriptionRun03.sizeDefined = false;
4536 FontDescriptionRun fontDescriptionRun04;
4537 fontDescriptionRun04.characterRun.characterIndex = 36u;
4538 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4539 fontDescriptionRun04.familyLength = fontLatin.size();
4540 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4541 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4542 fontDescriptionRun04.familyDefined = true;
4543 fontDescriptionRun04.weightDefined = false;
4544 fontDescriptionRun04.widthDefined = false;
4545 fontDescriptionRun04.slantDefined = false;
4546 fontDescriptionRun04.sizeDefined = false;
4548 FontDescriptionRun fontDescriptionRun05;
4549 fontDescriptionRun05.characterRun.characterIndex = 48u;
4550 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4551 fontDescriptionRun05.familyLength = fontLatin.size();
4552 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4553 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4554 fontDescriptionRun05.familyDefined = true;
4555 fontDescriptionRun05.weightDefined = false;
4556 fontDescriptionRun05.widthDefined = false;
4557 fontDescriptionRun05.slantDefined = false;
4558 fontDescriptionRun05.sizeDefined = false;
4560 FontDescriptionRun fontDescriptionRun06;
4561 fontDescriptionRun06.characterRun.characterIndex = 60u;
4562 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4563 fontDescriptionRun06.familyLength = fontArabic.size();
4564 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4565 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4566 fontDescriptionRun06.familyDefined = true;
4567 fontDescriptionRun06.weightDefined = false;
4568 fontDescriptionRun06.widthDefined = false;
4569 fontDescriptionRun06.slantDefined = false;
4570 fontDescriptionRun06.sizeDefined = false;
4572 Vector<FontDescriptionRun> fontDescriptionRuns;
4573 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4574 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4575 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4576 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4577 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4578 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4580 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4582 Size textArea( 100.f, 300.f );
4585 "Center alignment for the first paragraph.",
4586 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4589 fontDescriptionRuns.Begin(),
4590 Text::HorizontalAlignment::CENTER,
4591 Text::VerticalAlignment::TOP,
4598 if( !AlignTest( data ) )
4600 tet_result(TET_FAIL);
4603 tet_result(TET_PASS);
4607 int UtcDaliTextAlign05(void)
4609 ToolkitTestApplication application;
4610 tet_infoline(" UtcDaliTextAlign05");
4612 // Calculate text alignment.
4614 const std::string fontLatin( "TizenSans" );
4615 const std::string fontHebrew( "TizenSansHebrew" );
4616 const std::string fontArabic( "TizenSansArabic" );
4618 // Set a known font description
4619 FontDescriptionRun fontDescriptionRun01;
4620 fontDescriptionRun01.characterRun.characterIndex = 0u;
4621 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4622 fontDescriptionRun01.familyLength = fontLatin.size();
4623 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4624 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4625 fontDescriptionRun01.familyDefined = true;
4626 fontDescriptionRun01.weightDefined = false;
4627 fontDescriptionRun01.widthDefined = false;
4628 fontDescriptionRun01.slantDefined = false;
4629 fontDescriptionRun01.sizeDefined = false;
4631 FontDescriptionRun fontDescriptionRun02;
4632 fontDescriptionRun02.characterRun.characterIndex = 12u;
4633 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4634 fontDescriptionRun02.familyLength = fontHebrew.size();
4635 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4636 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4637 fontDescriptionRun02.familyDefined = true;
4638 fontDescriptionRun02.weightDefined = false;
4639 fontDescriptionRun02.widthDefined = false;
4640 fontDescriptionRun02.slantDefined = false;
4641 fontDescriptionRun02.sizeDefined = false;
4643 FontDescriptionRun fontDescriptionRun03;
4644 fontDescriptionRun03.characterRun.characterIndex = 22u;
4645 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4646 fontDescriptionRun03.familyLength = fontArabic.size();
4647 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4648 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4649 fontDescriptionRun03.familyDefined = true;
4650 fontDescriptionRun03.weightDefined = false;
4651 fontDescriptionRun03.widthDefined = false;
4652 fontDescriptionRun03.slantDefined = false;
4653 fontDescriptionRun03.sizeDefined = false;
4655 FontDescriptionRun fontDescriptionRun04;
4656 fontDescriptionRun04.characterRun.characterIndex = 36u;
4657 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4658 fontDescriptionRun04.familyLength = fontLatin.size();
4659 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4660 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4661 fontDescriptionRun04.familyDefined = true;
4662 fontDescriptionRun04.weightDefined = false;
4663 fontDescriptionRun04.widthDefined = false;
4664 fontDescriptionRun04.slantDefined = false;
4665 fontDescriptionRun04.sizeDefined = false;
4667 FontDescriptionRun fontDescriptionRun05;
4668 fontDescriptionRun05.characterRun.characterIndex = 48u;
4669 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4670 fontDescriptionRun05.familyLength = fontLatin.size();
4671 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4672 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4673 fontDescriptionRun05.familyDefined = true;
4674 fontDescriptionRun05.weightDefined = false;
4675 fontDescriptionRun05.widthDefined = false;
4676 fontDescriptionRun05.slantDefined = false;
4677 fontDescriptionRun05.sizeDefined = false;
4679 FontDescriptionRun fontDescriptionRun06;
4680 fontDescriptionRun06.characterRun.characterIndex = 60u;
4681 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4682 fontDescriptionRun06.familyLength = fontArabic.size();
4683 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4684 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4685 fontDescriptionRun06.familyDefined = true;
4686 fontDescriptionRun06.weightDefined = false;
4687 fontDescriptionRun06.widthDefined = false;
4688 fontDescriptionRun06.slantDefined = false;
4689 fontDescriptionRun06.sizeDefined = false;
4691 Vector<FontDescriptionRun> fontDescriptionRuns;
4692 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4693 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4694 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4695 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4696 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4697 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4699 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4701 Size textArea( 100.f, 300.f );
4704 "Center alignment for the mid paragraph.",
4705 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4708 fontDescriptionRuns.Begin(),
4709 Text::HorizontalAlignment::CENTER,
4710 Text::VerticalAlignment::TOP,
4717 if( !AlignTest( data ) )
4719 tet_result(TET_FAIL);
4722 tet_result(TET_PASS);
4726 int UtcDaliTextAlign06(void)
4728 ToolkitTestApplication application;
4729 tet_infoline(" UtcDaliTextAlign06");
4731 // Calculate text alignment.
4733 const std::string fontLatin( "TizenSans" );
4734 const std::string fontHebrew( "TizenSansHebrew" );
4735 const std::string fontArabic( "TizenSansArabic" );
4737 // Set a known font description
4738 FontDescriptionRun fontDescriptionRun01;
4739 fontDescriptionRun01.characterRun.characterIndex = 0u;
4740 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4741 fontDescriptionRun01.familyLength = fontLatin.size();
4742 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4743 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4744 fontDescriptionRun01.familyDefined = true;
4745 fontDescriptionRun01.weightDefined = false;
4746 fontDescriptionRun01.widthDefined = false;
4747 fontDescriptionRun01.slantDefined = false;
4748 fontDescriptionRun01.sizeDefined = false;
4750 FontDescriptionRun fontDescriptionRun02;
4751 fontDescriptionRun02.characterRun.characterIndex = 12u;
4752 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4753 fontDescriptionRun02.familyLength = fontHebrew.size();
4754 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4755 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4756 fontDescriptionRun02.familyDefined = true;
4757 fontDescriptionRun02.weightDefined = false;
4758 fontDescriptionRun02.widthDefined = false;
4759 fontDescriptionRun02.slantDefined = false;
4760 fontDescriptionRun02.sizeDefined = false;
4762 FontDescriptionRun fontDescriptionRun03;
4763 fontDescriptionRun03.characterRun.characterIndex = 22u;
4764 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4765 fontDescriptionRun03.familyLength = fontArabic.size();
4766 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4767 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4768 fontDescriptionRun03.familyDefined = true;
4769 fontDescriptionRun03.weightDefined = false;
4770 fontDescriptionRun03.widthDefined = false;
4771 fontDescriptionRun03.slantDefined = false;
4772 fontDescriptionRun03.sizeDefined = false;
4774 FontDescriptionRun fontDescriptionRun04;
4775 fontDescriptionRun04.characterRun.characterIndex = 36u;
4776 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4777 fontDescriptionRun04.familyLength = fontLatin.size();
4778 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4779 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4780 fontDescriptionRun04.familyDefined = true;
4781 fontDescriptionRun04.weightDefined = false;
4782 fontDescriptionRun04.widthDefined = false;
4783 fontDescriptionRun04.slantDefined = false;
4784 fontDescriptionRun04.sizeDefined = false;
4786 FontDescriptionRun fontDescriptionRun05;
4787 fontDescriptionRun05.characterRun.characterIndex = 48u;
4788 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4789 fontDescriptionRun05.familyLength = fontLatin.size();
4790 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4791 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4792 fontDescriptionRun05.familyDefined = true;
4793 fontDescriptionRun05.weightDefined = false;
4794 fontDescriptionRun05.widthDefined = false;
4795 fontDescriptionRun05.slantDefined = false;
4796 fontDescriptionRun05.sizeDefined = false;
4798 FontDescriptionRun fontDescriptionRun06;
4799 fontDescriptionRun06.characterRun.characterIndex = 60u;
4800 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4801 fontDescriptionRun06.familyLength = fontArabic.size();
4802 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4803 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4804 fontDescriptionRun06.familyDefined = true;
4805 fontDescriptionRun06.weightDefined = false;
4806 fontDescriptionRun06.widthDefined = false;
4807 fontDescriptionRun06.slantDefined = false;
4808 fontDescriptionRun06.sizeDefined = false;
4810 Vector<FontDescriptionRun> fontDescriptionRuns;
4811 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4812 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4813 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4814 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4815 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4816 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4818 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4820 Size textArea( 100.f, 300.f );
4823 "Center alignment for the last paragraph.",
4824 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4827 fontDescriptionRuns.Begin(),
4828 Text::HorizontalAlignment::CENTER,
4829 Text::VerticalAlignment::TOP,
4836 if( !AlignTest( data ) )
4838 tet_result(TET_FAIL);
4841 tet_result(TET_PASS);
4845 int UtcDaliTextAlign07(void)
4847 ToolkitTestApplication application;
4848 tet_infoline(" UtcDaliTextAlign07");
4850 // Calculate text alignment.
4852 const std::string fontLatin( "TizenSans" );
4853 const std::string fontHebrew( "TizenSansHebrew" );
4854 const std::string fontArabic( "TizenSansArabic" );
4856 // Set a known font description
4857 FontDescriptionRun fontDescriptionRun01;
4858 fontDescriptionRun01.characterRun.characterIndex = 0u;
4859 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4860 fontDescriptionRun01.familyLength = fontLatin.size();
4861 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4862 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4863 fontDescriptionRun01.familyDefined = true;
4864 fontDescriptionRun01.weightDefined = false;
4865 fontDescriptionRun01.widthDefined = false;
4866 fontDescriptionRun01.slantDefined = false;
4867 fontDescriptionRun01.sizeDefined = false;
4869 FontDescriptionRun fontDescriptionRun02;
4870 fontDescriptionRun02.characterRun.characterIndex = 12u;
4871 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4872 fontDescriptionRun02.familyLength = fontHebrew.size();
4873 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4874 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4875 fontDescriptionRun02.familyDefined = true;
4876 fontDescriptionRun02.weightDefined = false;
4877 fontDescriptionRun02.widthDefined = false;
4878 fontDescriptionRun02.slantDefined = false;
4879 fontDescriptionRun02.sizeDefined = false;
4881 FontDescriptionRun fontDescriptionRun03;
4882 fontDescriptionRun03.characterRun.characterIndex = 22u;
4883 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4884 fontDescriptionRun03.familyLength = fontArabic.size();
4885 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4886 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4887 fontDescriptionRun03.familyDefined = true;
4888 fontDescriptionRun03.weightDefined = false;
4889 fontDescriptionRun03.widthDefined = false;
4890 fontDescriptionRun03.slantDefined = false;
4891 fontDescriptionRun03.sizeDefined = false;
4893 FontDescriptionRun fontDescriptionRun04;
4894 fontDescriptionRun04.characterRun.characterIndex = 36u;
4895 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4896 fontDescriptionRun04.familyLength = fontLatin.size();
4897 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4898 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4899 fontDescriptionRun04.familyDefined = true;
4900 fontDescriptionRun04.weightDefined = false;
4901 fontDescriptionRun04.widthDefined = false;
4902 fontDescriptionRun04.slantDefined = false;
4903 fontDescriptionRun04.sizeDefined = false;
4905 FontDescriptionRun fontDescriptionRun05;
4906 fontDescriptionRun05.characterRun.characterIndex = 48u;
4907 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4908 fontDescriptionRun05.familyLength = fontLatin.size();
4909 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4910 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4911 fontDescriptionRun05.familyDefined = true;
4912 fontDescriptionRun05.weightDefined = false;
4913 fontDescriptionRun05.widthDefined = false;
4914 fontDescriptionRun05.slantDefined = false;
4915 fontDescriptionRun05.sizeDefined = false;
4917 FontDescriptionRun fontDescriptionRun06;
4918 fontDescriptionRun06.characterRun.characterIndex = 60u;
4919 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4920 fontDescriptionRun06.familyLength = fontArabic.size();
4921 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4922 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4923 fontDescriptionRun06.familyDefined = true;
4924 fontDescriptionRun06.weightDefined = false;
4925 fontDescriptionRun06.widthDefined = false;
4926 fontDescriptionRun06.slantDefined = false;
4927 fontDescriptionRun06.sizeDefined = false;
4929 Vector<FontDescriptionRun> fontDescriptionRuns;
4930 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4931 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4932 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4933 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4934 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4935 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4937 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4939 Size textArea( 100.f, 300.f );
4942 "End alignment for the first paragraph.",
4943 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4946 fontDescriptionRuns.Begin(),
4947 Text::HorizontalAlignment::END,
4948 Text::VerticalAlignment::TOP,
4955 if( !AlignTest( data ) )
4957 tet_result(TET_FAIL);
4960 tet_result(TET_PASS);
4964 int UtcDaliTextAlign08(void)
4966 ToolkitTestApplication application;
4967 tet_infoline(" UtcDaliTextAlign08");
4969 // Calculate text alignment.
4971 const std::string fontLatin( "TizenSans" );
4972 const std::string fontHebrew( "TizenSansHebrew" );
4973 const std::string fontArabic( "TizenSansArabic" );
4975 // Set a known font description
4976 FontDescriptionRun fontDescriptionRun01;
4977 fontDescriptionRun01.characterRun.characterIndex = 0u;
4978 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4979 fontDescriptionRun01.familyLength = fontLatin.size();
4980 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4981 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4982 fontDescriptionRun01.familyDefined = true;
4983 fontDescriptionRun01.weightDefined = false;
4984 fontDescriptionRun01.widthDefined = false;
4985 fontDescriptionRun01.slantDefined = false;
4986 fontDescriptionRun01.sizeDefined = false;
4988 FontDescriptionRun fontDescriptionRun02;
4989 fontDescriptionRun02.characterRun.characterIndex = 12u;
4990 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4991 fontDescriptionRun02.familyLength = fontHebrew.size();
4992 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4993 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4994 fontDescriptionRun02.familyDefined = true;
4995 fontDescriptionRun02.weightDefined = false;
4996 fontDescriptionRun02.widthDefined = false;
4997 fontDescriptionRun02.slantDefined = false;
4998 fontDescriptionRun02.sizeDefined = false;
5000 FontDescriptionRun fontDescriptionRun03;
5001 fontDescriptionRun03.characterRun.characterIndex = 22u;
5002 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5003 fontDescriptionRun03.familyLength = fontArabic.size();
5004 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5005 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5006 fontDescriptionRun03.familyDefined = true;
5007 fontDescriptionRun03.weightDefined = false;
5008 fontDescriptionRun03.widthDefined = false;
5009 fontDescriptionRun03.slantDefined = false;
5010 fontDescriptionRun03.sizeDefined = false;
5012 FontDescriptionRun fontDescriptionRun04;
5013 fontDescriptionRun04.characterRun.characterIndex = 36u;
5014 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5015 fontDescriptionRun04.familyLength = fontLatin.size();
5016 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5017 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5018 fontDescriptionRun04.familyDefined = true;
5019 fontDescriptionRun04.weightDefined = false;
5020 fontDescriptionRun04.widthDefined = false;
5021 fontDescriptionRun04.slantDefined = false;
5022 fontDescriptionRun04.sizeDefined = false;
5024 FontDescriptionRun fontDescriptionRun05;
5025 fontDescriptionRun05.characterRun.characterIndex = 48u;
5026 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5027 fontDescriptionRun05.familyLength = fontLatin.size();
5028 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5029 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5030 fontDescriptionRun05.familyDefined = true;
5031 fontDescriptionRun05.weightDefined = false;
5032 fontDescriptionRun05.widthDefined = false;
5033 fontDescriptionRun05.slantDefined = false;
5034 fontDescriptionRun05.sizeDefined = false;
5036 FontDescriptionRun fontDescriptionRun06;
5037 fontDescriptionRun06.characterRun.characterIndex = 60u;
5038 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5039 fontDescriptionRun06.familyLength = fontArabic.size();
5040 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5041 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5042 fontDescriptionRun06.familyDefined = true;
5043 fontDescriptionRun06.weightDefined = false;
5044 fontDescriptionRun06.widthDefined = false;
5045 fontDescriptionRun06.slantDefined = false;
5046 fontDescriptionRun06.sizeDefined = false;
5048 Vector<FontDescriptionRun> fontDescriptionRuns;
5049 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5050 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5051 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5052 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5053 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5054 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5056 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5058 Size textArea( 100.f, 300.f );
5061 "End alignment for the mid paragraph.",
5062 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5065 fontDescriptionRuns.Begin(),
5066 Text::HorizontalAlignment::END,
5067 Text::VerticalAlignment::TOP,
5074 if( !AlignTest( data ) )
5076 tet_result(TET_FAIL);
5079 tet_result(TET_PASS);
5083 int UtcDaliTextAlign09(void)
5085 ToolkitTestApplication application;
5086 tet_infoline(" UtcDaliTextAlign09");
5088 // Calculate text alignment.
5090 const std::string fontLatin( "TizenSans" );
5091 const std::string fontHebrew( "TizenSansHebrew" );
5092 const std::string fontArabic( "TizenSansArabic" );
5094 // Set a known font description
5095 FontDescriptionRun fontDescriptionRun01;
5096 fontDescriptionRun01.characterRun.characterIndex = 0u;
5097 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5098 fontDescriptionRun01.familyLength = fontLatin.size();
5099 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5100 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5101 fontDescriptionRun01.familyDefined = true;
5102 fontDescriptionRun01.weightDefined = false;
5103 fontDescriptionRun01.widthDefined = false;
5104 fontDescriptionRun01.slantDefined = false;
5105 fontDescriptionRun01.sizeDefined = false;
5107 FontDescriptionRun fontDescriptionRun02;
5108 fontDescriptionRun02.characterRun.characterIndex = 12u;
5109 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5110 fontDescriptionRun02.familyLength = fontHebrew.size();
5111 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5112 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5113 fontDescriptionRun02.familyDefined = true;
5114 fontDescriptionRun02.weightDefined = false;
5115 fontDescriptionRun02.widthDefined = false;
5116 fontDescriptionRun02.slantDefined = false;
5117 fontDescriptionRun02.sizeDefined = false;
5119 FontDescriptionRun fontDescriptionRun03;
5120 fontDescriptionRun03.characterRun.characterIndex = 22u;
5121 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5122 fontDescriptionRun03.familyLength = fontArabic.size();
5123 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5124 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5125 fontDescriptionRun03.familyDefined = true;
5126 fontDescriptionRun03.weightDefined = false;
5127 fontDescriptionRun03.widthDefined = false;
5128 fontDescriptionRun03.slantDefined = false;
5129 fontDescriptionRun03.sizeDefined = false;
5131 FontDescriptionRun fontDescriptionRun04;
5132 fontDescriptionRun04.characterRun.characterIndex = 36u;
5133 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5134 fontDescriptionRun04.familyLength = fontLatin.size();
5135 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5136 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5137 fontDescriptionRun04.familyDefined = true;
5138 fontDescriptionRun04.weightDefined = false;
5139 fontDescriptionRun04.widthDefined = false;
5140 fontDescriptionRun04.slantDefined = false;
5141 fontDescriptionRun04.sizeDefined = false;
5143 FontDescriptionRun fontDescriptionRun05;
5144 fontDescriptionRun05.characterRun.characterIndex = 48u;
5145 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5146 fontDescriptionRun05.familyLength = fontLatin.size();
5147 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5148 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5149 fontDescriptionRun05.familyDefined = true;
5150 fontDescriptionRun05.weightDefined = false;
5151 fontDescriptionRun05.widthDefined = false;
5152 fontDescriptionRun05.slantDefined = false;
5153 fontDescriptionRun05.sizeDefined = false;
5155 FontDescriptionRun fontDescriptionRun06;
5156 fontDescriptionRun06.characterRun.characterIndex = 60u;
5157 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5158 fontDescriptionRun06.familyLength = fontArabic.size();
5159 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5160 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5161 fontDescriptionRun06.familyDefined = true;
5162 fontDescriptionRun06.weightDefined = false;
5163 fontDescriptionRun06.widthDefined = false;
5164 fontDescriptionRun06.slantDefined = false;
5165 fontDescriptionRun06.sizeDefined = false;
5167 Vector<FontDescriptionRun> fontDescriptionRuns;
5168 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5169 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5170 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5171 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5172 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5173 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5175 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5177 Size textArea( 100.f, 300.f );
5180 "End alignment for the last paragraph.",
5181 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5184 fontDescriptionRuns.Begin(),
5185 Text::HorizontalAlignment::END,
5186 Text::VerticalAlignment::TOP,
5193 if( !AlignTest( data ) )
5195 tet_result(TET_FAIL);
5198 tet_result(TET_PASS);
5202 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5204 ToolkitTestApplication application;
5205 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5207 Layout::Engine engine;
5208 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5210 engine.SetDefaultLineSpacing( 10.f );
5211 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5213 tet_result(TET_PASS);