2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
114 // 2) Clear the layout.
115 Vector<LineRun>& lines = visualModel->mLines;
117 const Length numberOfCharacters = logicalModel->mText.Count();
118 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
119 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
120 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
122 LineIndex startRemoveIndex = 0u;
124 if( 0u != lines.Count() )
126 startRemoveIndex = lines.Count();
127 LineIndex endRemoveIndex = startRemoveIndex;
128 ClearGlyphRuns( data.startIndex,
129 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
134 // Update the character runs of the lines.
135 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
136 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
137 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
138 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
139 ClearCharacterRuns( startCharacterIndex,
140 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
145 lines.Erase( lines.Begin() + startRemoveIndex,
146 lines.Begin() + endRemoveIndex );
149 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
151 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
152 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
155 Layout::Engine engine;
156 engine.SetMetrics( metrics );
157 engine.SetLayout( data.layout );
159 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
160 float outlineWidth = visualModel->GetOutlineWidth();
162 Layout::Parameters layoutParameters( data.textArea,
163 logicalModel->mText.Begin(),
164 logicalModel->mLineBreakInfo.Begin(),
165 logicalModel->mWordBreakInfo.Begin(),
166 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
167 visualModel->mGlyphs.Begin(),
168 visualModel->mGlyphsToCharacters.Begin(),
169 visualModel->mCharactersPerGlyph.Begin(),
170 visualModel->mCharactersToGlyph.Begin(),
171 visualModel->mGlyphsPerCharacter.Begin(),
173 Text::HorizontalAlignment::BEGIN,
174 Text::LineWrap::WORD,
177 layoutParameters.isLastNewParagraph = isLastNewParagraph;
179 // The initial glyph and the number of glyphs to layout.
180 layoutParameters.startGlyphIndex = data.startIndex;
181 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
182 layoutParameters.startLineIndex = startRemoveIndex;
183 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
185 layoutSize = Vector2::ZERO;
187 const bool updated = engine.LayoutText( layoutParameters,
193 // 4) Compare the results.
195 if( updated != data.updated )
197 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
201 if( layoutSize != data.layoutSize )
203 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
207 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
209 const Vector2& position = *( glyphPositions.Begin() + index );
211 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
213 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
216 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
218 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
223 if( lines.Count() != data.numberOfLines )
225 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
229 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
231 const LineRun& line = *( lines.Begin() + index );
232 const LineRun& expectedLine = *( data.lines + index );
234 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
236 std::cout << " Different line info for line : " << index << std::endl;
238 std::cout << " expected" << std::endl;
239 Print( expectedLine );
242 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
244 std::cout << " Different line info for line : " << index << std::endl;
246 std::cout << " expected" << std::endl;
247 Print( expectedLine );
251 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
253 std::cout << " Different line info for line : " << index << std::endl;
255 std::cout << " expected" << std::endl;
256 Print( expectedLine );
259 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
261 std::cout << " Different line info for line : " << index << std::endl;
263 std::cout << " expected" << std::endl;
264 Print( expectedLine );
268 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
270 std::cout << " Different line info for line : " << index << std::endl;
272 std::cout << " expected" << std::endl;
273 Print( expectedLine );
277 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
279 std::cout << " Different line info for line : " << index << std::endl;
281 std::cout << " expected" << std::endl;
282 Print( expectedLine );
286 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
288 std::cout << " Different line info for line : " << index << std::endl;
290 std::cout << " expected" << std::endl;
291 Print( expectedLine );
295 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
297 std::cout << " Different line info for line : " << index << std::endl;
299 std::cout << " expected" << std::endl;
300 Print( expectedLine );
304 if( line.ellipsis != expectedLine.ellipsis )
306 std::cout << " Different line info for line : " << index << std::endl;
308 std::cout << " expected" << std::endl;
309 Print( expectedLine );
313 // Do not compare the alignment offset as it's not calculated in the layout.
314 // Do not compare the line direction as it's not set in the layout.
320 //////////////////////////////////////////////////////////
322 struct ReLayoutRightToLeftLinesData
324 std::string description;
327 unsigned int numberOfFonts;
328 FontDescriptionRun* fontDescriptions;
329 unsigned int totalNumberOfGlyphs;
331 unsigned int startIndex;
332 unsigned int numberOfCharacters;
335 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
338 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
339 fontClient.SetDpi( 96u, 96u );
341 char* pathNamePtr = get_current_dir_name();
342 const std::string pathName( pathNamePtr );
345 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
346 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
347 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
349 // 1) Create the model.
350 LogicalModelPtr logicalModel;
351 VisualModelPtr visualModel;
355 Vector<FontDescriptionRun> fontDescriptionRuns;
356 if( 0u != data.numberOfFonts )
358 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
359 data.fontDescriptions,
360 data.fontDescriptions + data.numberOfFonts );
363 LayoutOptions options;
364 options.reorder = false;
365 options.align = false;
366 CreateTextModel( data.text,
375 // 2) Call the ReLayoutRightToLeftLines() method.
376 Layout::Engine engine;
377 engine.SetMetrics( metrics );
379 float outlineWidth = visualModel->GetOutlineWidth();
380 Layout::Parameters layoutParameters( data.textArea,
381 logicalModel->mText.Begin(),
382 logicalModel->mLineBreakInfo.Begin(),
383 logicalModel->mWordBreakInfo.Begin(),
384 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
385 visualModel->mGlyphs.Begin(),
386 visualModel->mGlyphsToCharacters.Begin(),
387 visualModel->mCharactersPerGlyph.Begin(),
388 visualModel->mCharactersToGlyph.Begin(),
389 visualModel->mGlyphsPerCharacter.Begin(),
390 visualModel->mGlyphs.Count(),
391 Text::HorizontalAlignment::BEGIN,
392 Text::LineWrap::WORD,
395 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
396 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
398 engine.ReLayoutRightToLeftLines( layoutParameters,
400 data.numberOfCharacters,
401 visualModel->mGlyphPositions );
403 // 3) Compare the results.
404 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
406 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
408 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
412 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
414 const Vector2& position = *( glyphPositions.Begin() + index );
416 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
418 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
421 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
423 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
431 //////////////////////////////////////////////////////////
435 std::string description;
438 unsigned int numberOfFonts;
439 FontDescriptionRun* fontDescriptions;
440 Text::HorizontalAlignment::Type horizontalAlignment;
441 Text::VerticalAlignment::Type verticalAlignment;
442 unsigned int startIndex;
443 unsigned int numberOfCharacters;
444 unsigned int numberOfLines;
448 bool AlignTest( const AlignData& data )
451 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
452 fontClient.SetDpi( 96u, 96u );
454 char* pathNamePtr = get_current_dir_name();
455 const std::string pathName( pathNamePtr );
458 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
459 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
460 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
462 // 1) Create the model.
463 LogicalModelPtr logicalModel;
464 VisualModelPtr visualModel;
468 Vector<FontDescriptionRun> fontDescriptionRuns;
469 if( 0u != data.numberOfFonts )
471 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
472 data.fontDescriptions,
473 data.fontDescriptions + data.numberOfFonts );
476 LayoutOptions options;
477 options.align = false;
478 CreateTextModel( data.text,
487 // Call the Align method.
488 Layout::Engine engine;
489 engine.SetMetrics( metrics );
491 float alignmentOffset = 0.f;
492 engine.Align( data.textArea,
494 data.numberOfCharacters,
495 data.horizontalAlignment,
500 if( data.numberOfLines != visualModel->mLines.Count() )
502 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
506 const LineRun* const linesBuffer = visualModel->mLines.Begin();
507 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
509 const LineRun& line = *( linesBuffer + index );
511 if( line.alignmentOffset != *( data.lineOffsets + index ) )
513 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
523 //////////////////////////////////////////////////////////
525 // UtcDaliTextLayoutSetGetLayout
526 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
527 // UtcDaliTextLayoutSetGetHorizontalAlignment
528 // UtcDaliTextLayoutSetGetVerticalAlignment
529 // UtcDaliTextLayoutSetGetCursorWidth
530 // UtcDaliTextLayoutNoText
531 // UtcDaliTextLayoutSmallTextArea01
532 // UtcDaliTextLayoutSmallTextArea02
533 // UtcDaliTextLayoutMultilineText01
534 // UtcDaliTextLayoutMultilineText02
535 // UtcDaliTextLayoutMultilineText03
536 // UtcDaliTextLayoutMultilineText04
537 // UtcDaliTextLayoutMultilineText05
538 // UtcDaliTextUpdateLayout01
539 // UtcDaliTextUpdateLayout02
540 // UtcDaliTextUpdateLayout03
541 // UtcDaliTextLayoutEllipsis01
542 // UtcDaliTextLayoutEllipsis02
543 // UtcDaliTextLayoutEllipsis03
544 // UtcDaliTextLayoutEllipsis04
545 // UtcDaliTextLayoutEllipsis04
546 // UtcDaliTextReorderLayout01
547 // UtcDaliTextReorderLayout02
548 // UtcDaliTextReorderLayout03
549 // UtcDaliTextReorderLayout04
550 // UtcDaliTextAlign01
551 // UtcDaliTextAlign02
552 // UtcDaliTextAlign03
553 // UtcDaliTextAlign04
554 // UtcDaliTextAlign05
555 // UtcDaliTextAlign06
556 // UtcDaliTextAlign07
557 // UtcDaliTextAlign08
558 // UtcDaliTextAlign09
560 //////////////////////////////////////////////////////////
562 int UtcDaliTextLayoutSetGetLayout(void)
564 ToolkitTestApplication application;
565 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
567 Layout::Engine engine;
569 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
571 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
572 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
574 tet_result(TET_PASS);
578 int UtcDaliTextLayoutSetGetCursorWidth(void)
580 ToolkitTestApplication application;
583 Layout::Engine engine;
585 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
587 engine.SetCursorWidth( 2 );
588 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
590 tet_result(TET_PASS);
594 int UtcDaliTextLayoutNoText(void)
596 ToolkitTestApplication application;
597 tet_infoline(" UtcDaliTextLayoutNoText");
599 Size textArea(100.f, 60.f);
600 Size layoutSize = Vector2::ZERO;
601 LayoutTextData data =
613 Layout::Engine::MULTI_LINE_BOX,
620 if( !LayoutTextTest( data ) )
622 tet_result(TET_FAIL);
625 tet_result(TET_PASS);
629 int UtcDaliTextLayoutSmallTextArea01(void)
631 ToolkitTestApplication application;
632 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
634 // Won't layout the text in multi-line if the width is too small.
636 const std::string fontFamily( "TizenSans" );
638 // Set a known font description
639 FontDescriptionRun fontDescriptionRun;
640 fontDescriptionRun.characterRun.characterIndex = 0u;
641 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
642 fontDescriptionRun.familyLength = fontFamily.size();
643 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
644 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
645 fontDescriptionRun.familyDefined = true;
646 fontDescriptionRun.weightDefined = false;
647 fontDescriptionRun.widthDefined = false;
648 fontDescriptionRun.slantDefined = false;
649 fontDescriptionRun.sizeDefined = false;
651 Vector<FontDescriptionRun> fontDescriptionRuns;
652 fontDescriptionRuns.PushBack( fontDescriptionRun );
653 Size textArea(1.f, 1.f);
654 Size layoutSize = Vector2::ZERO;
655 LayoutTextData data =
657 "Layout text in a small area",
661 fontDescriptionRuns.Begin(),
667 Layout::Engine::MULTI_LINE_BOX,
674 if( !LayoutTextTest( data ) )
676 tet_result(TET_FAIL);
679 tet_result(TET_PASS);
683 int UtcDaliTextLayoutSmallTextArea02(void)
685 ToolkitTestApplication application;
686 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
688 // Will layout the text in single line as it can be scrolled.
690 const std::string fontFamily( "TizenSans" );
692 // Set a known font description
693 FontDescriptionRun fontDescriptionRun;
694 fontDescriptionRun.characterRun.characterIndex = 0u;
695 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
696 fontDescriptionRun.familyLength = fontFamily.size();
697 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
698 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
699 fontDescriptionRun.familyDefined = true;
700 fontDescriptionRun.weightDefined = false;
701 fontDescriptionRun.widthDefined = false;
702 fontDescriptionRun.slantDefined = false;
703 fontDescriptionRun.sizeDefined = false;
705 Vector<FontDescriptionRun> fontDescriptionRuns;
706 fontDescriptionRuns.PushBack( fontDescriptionRun );
707 Size textArea(1.f, 1.f);
708 Size layoutSize(80.f, 20.f);
709 float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
710 struct LineRun line =
722 Vector<LineRun> lines;
723 lines.PushBack( line );
725 LayoutTextData data =
727 "Layout text in a small area",
731 fontDescriptionRuns.Begin(),
737 Layout::Engine::SINGLE_LINE_BOX,
744 if( !LayoutTextTest( data ) )
746 tet_result(TET_FAIL);
749 tet_result(TET_PASS);
753 int UtcDaliTextLayoutMultilineText01(void)
755 ToolkitTestApplication application;
756 tet_infoline(" UtcDaliTextLayoutMultilineText01");
758 // Layout some lines of left to right text.
760 const std::string fontFamily( "TizenSans" );
762 // Set a known font description
763 FontDescriptionRun fontDescriptionRun1;
764 fontDescriptionRun1.characterRun.characterIndex = 0u;
765 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
766 fontDescriptionRun1.familyLength = fontFamily.size();
767 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
768 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
769 fontDescriptionRun1.familyDefined = true;
770 fontDescriptionRun1.weightDefined = false;
771 fontDescriptionRun1.widthDefined = false;
772 fontDescriptionRun1.slantDefined = false;
773 fontDescriptionRun1.sizeDefined = false;
775 FontDescriptionRun fontDescriptionRun2;
776 fontDescriptionRun2.characterRun.characterIndex = 18u;
777 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
778 fontDescriptionRun2.familyLength = fontFamily.size();
779 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
780 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
781 fontDescriptionRun2.familyDefined = true;
782 fontDescriptionRun2.weightDefined = false;
783 fontDescriptionRun2.widthDefined = false;
784 fontDescriptionRun2.slantDefined = false;
785 fontDescriptionRun2.sizeDefined = false;
787 Vector<FontDescriptionRun> fontDescriptionRuns;
788 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
789 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
790 Size textArea(100.f, 300.f);
791 Size layoutSize(95.f, 97.f);
794 1.f, -12.f, 12.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,
795 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
796 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,
797 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,
798 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
800 struct LineRun line0 =
812 struct LineRun line1 =
824 struct LineRun line2 =
836 struct LineRun line3 =
848 struct LineRun line4 =
860 Vector<LineRun> lines;
861 lines.PushBack( line0 );
862 lines.PushBack( line1 );
863 lines.PushBack( line2 );
864 lines.PushBack( line3 );
865 lines.PushBack( line4 );
867 LayoutTextData data =
869 "Layout simple multi-line text",
870 "Hello world demo.\n"
871 "Layout different lines of text.",
874 fontDescriptionRuns.Begin(),
880 Layout::Engine::MULTI_LINE_BOX,
887 if( !LayoutTextTest( data ) )
889 tet_result(TET_FAIL);
892 tet_result(TET_PASS);
896 int UtcDaliTextLayoutMultilineText02(void)
898 ToolkitTestApplication application;
899 tet_infoline(" UtcDaliTextLayoutMultilineText02");
901 // Layout some lines of bidirectional text.
903 const std::string fontFamily1( "TizenSans" );
905 // Set a known font description
906 FontDescriptionRun fontDescriptionRun1;
907 fontDescriptionRun1.characterRun.characterIndex = 0u;
908 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
909 fontDescriptionRun1.familyLength = fontFamily1.size();
910 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
911 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
912 fontDescriptionRun1.familyDefined = true;
913 fontDescriptionRun1.weightDefined = false;
914 fontDescriptionRun1.widthDefined = false;
915 fontDescriptionRun1.slantDefined = false;
916 fontDescriptionRun1.sizeDefined = false;
918 const std::string fontFamily2( "TizenSansHebrew" );
920 // Set a known font description
921 FontDescriptionRun fontDescriptionRun2;
922 fontDescriptionRun2.characterRun.characterIndex = 17u;
923 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
924 fontDescriptionRun2.familyLength = fontFamily2.size();
925 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
926 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
927 fontDescriptionRun2.familyDefined = true;
928 fontDescriptionRun2.weightDefined = false;
929 fontDescriptionRun2.widthDefined = false;
930 fontDescriptionRun2.slantDefined = false;
931 fontDescriptionRun2.sizeDefined = false;
933 const std::string fontFamily3( "TizenSans" );
935 // Set a known font description
936 FontDescriptionRun fontDescriptionRun3;
937 fontDescriptionRun3.characterRun.characterIndex = 26u;
938 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
939 fontDescriptionRun3.familyLength = fontFamily3.size();
940 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
941 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
942 fontDescriptionRun3.familyDefined = true;
943 fontDescriptionRun3.weightDefined = false;
944 fontDescriptionRun3.widthDefined = false;
945 fontDescriptionRun3.slantDefined = false;
946 fontDescriptionRun3.sizeDefined = false;
948 const std::string fontFamily4( "TizenSansHebrew" );
950 // Set a known font description
951 FontDescriptionRun fontDescriptionRun4;
952 fontDescriptionRun4.characterRun.characterIndex = 28u;
953 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
954 fontDescriptionRun4.familyLength = fontFamily4.size();
955 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
956 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
957 fontDescriptionRun4.familyDefined = true;
958 fontDescriptionRun4.weightDefined = false;
959 fontDescriptionRun4.widthDefined = false;
960 fontDescriptionRun4.slantDefined = false;
961 fontDescriptionRun4.sizeDefined = false;
963 const std::string fontFamily5( "TizenSans" );
965 // Set a known font description
966 FontDescriptionRun fontDescriptionRun5;
967 fontDescriptionRun5.characterRun.characterIndex = 38u;
968 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
969 fontDescriptionRun5.familyLength = fontFamily5.size();
970 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
971 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
972 fontDescriptionRun5.familyDefined = true;
973 fontDescriptionRun5.weightDefined = false;
974 fontDescriptionRun5.widthDefined = false;
975 fontDescriptionRun5.slantDefined = false;
976 fontDescriptionRun5.sizeDefined = false;
978 Vector<FontDescriptionRun> fontDescriptionRuns;
979 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
980 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
981 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
982 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
983 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
984 Size textArea(100.f, 300.f);
985 Size layoutSize(81.f, 120.f);
988 1.f, -12.f, 12.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,
989 0.f, -13.f, 10.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,
990 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
991 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,
992 1.f, -13.f, 10.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,
993 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
995 struct LineRun line0 =
1007 struct LineRun line1 =
1019 struct LineRun line2 =
1031 struct LineRun line3 =
1043 struct LineRun line4 =
1055 struct LineRun line5 =
1067 Vector<LineRun> lines;
1068 lines.PushBack( line0 );
1069 lines.PushBack( line1 );
1070 lines.PushBack( line2 );
1071 lines.PushBack( line3 );
1072 lines.PushBack( line4 );
1073 lines.PushBack( line5 );
1075 LayoutTextData data =
1077 "Layout bidirectional text.",
1078 "Hello world demo שלום עולם.\n"
1079 "שלום עולם hello world demo.",
1082 fontDescriptionRuns.Begin(),
1088 Layout::Engine::MULTI_LINE_BOX,
1095 if( !LayoutTextTest( data ) )
1097 tet_result(TET_FAIL);
1100 tet_result(TET_PASS);
1104 int UtcDaliTextLayoutMultilineText03(void)
1106 ToolkitTestApplication application;
1107 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1109 // Layout a long word which doesn't fit in the width of the text area.
1111 const std::string fontFamily( "TizenSans" );
1113 // Set a known font description
1114 FontDescriptionRun fontDescriptionRun;
1115 fontDescriptionRun.characterRun.characterIndex = 0u;
1116 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1117 fontDescriptionRun.familyLength = fontFamily.size();
1118 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1119 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1120 fontDescriptionRun.familyDefined = true;
1121 fontDescriptionRun.weightDefined = false;
1122 fontDescriptionRun.widthDefined = false;
1123 fontDescriptionRun.slantDefined = false;
1124 fontDescriptionRun.sizeDefined = false;
1126 Vector<FontDescriptionRun> fontDescriptionRuns;
1127 fontDescriptionRuns.PushBack( fontDescriptionRun );
1128 Size textArea(100.f, 300.f);
1129 Size layoutSize(96.f, 60.f);
1132 1.f, -12.f, 12.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, 85.f, -9.f,
1133 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 32.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,
1134 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1136 struct LineRun line0 =
1148 struct LineRun line1 =
1160 struct LineRun line2 =
1172 Vector<LineRun> lines;
1173 lines.PushBack( line0 );
1174 lines.PushBack( line1 );
1175 lines.PushBack( line2 );
1177 LayoutTextData data =
1179 "Layout a long word which doesn't fit in the width of the text area.",
1180 "Helloworlddemohelloworlddemo.",
1183 fontDescriptionRuns.Begin(),
1189 Layout::Engine::MULTI_LINE_BOX,
1196 if( !LayoutTextTest( data ) )
1198 tet_result(TET_FAIL);
1201 tet_result(TET_PASS);
1205 int UtcDaliTextLayoutMultilineText04(void)
1207 ToolkitTestApplication application;
1208 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1210 // Layout simple text ending with a \n. It has to add a void line at the end.
1212 const std::string fontFamily( "TizenSans" );
1214 // Set a known font description
1215 FontDescriptionRun fontDescriptionRun;
1216 fontDescriptionRun.characterRun.characterIndex = 0u;
1217 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1218 fontDescriptionRun.familyLength = fontFamily.size();
1219 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1220 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1221 fontDescriptionRun.familyDefined = true;
1222 fontDescriptionRun.weightDefined = false;
1223 fontDescriptionRun.widthDefined = false;
1224 fontDescriptionRun.slantDefined = false;
1225 fontDescriptionRun.sizeDefined = false;
1227 Vector<FontDescriptionRun> fontDescriptionRuns;
1228 fontDescriptionRuns.PushBack( fontDescriptionRun );
1229 Size textArea(100.f, 300.f);
1230 Size layoutSize(83.f, 40.f);
1233 1.f, -12.f, 12.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, -3.f, 82.f, -12.f
1235 struct LineRun line0 =
1247 struct LineRun line1 =
1259 Vector<LineRun> lines;
1260 lines.PushBack( line0 );
1261 lines.PushBack( line1 );
1263 LayoutTextData data =
1265 "Layout simple text ending with a \n.",
1269 fontDescriptionRuns.Begin(),
1275 Layout::Engine::MULTI_LINE_BOX,
1282 if( !LayoutTextTest( data ) )
1284 tet_result(TET_FAIL);
1287 tet_result(TET_PASS);
1291 int UtcDaliTextLayoutMultilineText05(void)
1293 ToolkitTestApplication application;
1294 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1296 // Layout simple text with one character with a different font size.
1298 const std::string fontFamily( "TizenSans" );
1300 // Set a known font description
1301 FontDescriptionRun fontDescriptionRun1;
1302 fontDescriptionRun1.characterRun.characterIndex = 0u;
1303 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1304 fontDescriptionRun1.familyLength = fontFamily.size();
1305 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1306 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1307 fontDescriptionRun1.familyDefined = true;
1308 fontDescriptionRun1.weightDefined = false;
1309 fontDescriptionRun1.widthDefined = false;
1310 fontDescriptionRun1.slantDefined = false;
1311 fontDescriptionRun1.sizeDefined = false;
1313 FontDescriptionRun fontDescriptionRun2;
1314 fontDescriptionRun2.characterRun.characterIndex = 6u;
1315 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1316 fontDescriptionRun2.familyLength = fontFamily.size();
1317 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1318 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1319 fontDescriptionRun2.size = 1280u;
1320 fontDescriptionRun2.familyDefined = true;
1321 fontDescriptionRun2.weightDefined = false;
1322 fontDescriptionRun2.widthDefined = false;
1323 fontDescriptionRun2.slantDefined = false;
1324 fontDescriptionRun2.sizeDefined = true;
1326 FontDescriptionRun fontDescriptionRun3;
1327 fontDescriptionRun3.characterRun.characterIndex = 7u;
1328 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1329 fontDescriptionRun3.familyLength = fontFamily.size();
1330 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1331 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1332 fontDescriptionRun3.familyDefined = true;
1333 fontDescriptionRun3.weightDefined = false;
1334 fontDescriptionRun3.widthDefined = false;
1335 fontDescriptionRun3.slantDefined = false;
1336 fontDescriptionRun3.sizeDefined = false;
1338 Vector<FontDescriptionRun> fontDescriptionRuns;
1339 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1340 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1341 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1342 Size textArea(100.f, 300.f);
1343 Size layoutSize(88.f, 53.f);
1346 1.f, -12.f, 12.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,
1347 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f
1349 struct LineRun line0 =
1361 struct LineRun line1 =
1373 Vector<LineRun> lines;
1374 lines.PushBack( line0 );
1375 lines.PushBack( line1 );
1377 LayoutTextData data =
1379 "Layout simple text with one character with a different font size.",
1380 "Hello world demo.",
1383 fontDescriptionRuns.Begin(),
1389 Layout::Engine::MULTI_LINE_BOX,
1396 if( !LayoutTextTest( data ) )
1398 tet_result(TET_FAIL);
1401 tet_result(TET_PASS);
1405 int UtcDaliTextUpdateLayout01(void)
1407 ToolkitTestApplication application;
1408 tet_infoline(" UtcDaliTextUpdateLayout01");
1410 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1412 const std::string fontLatin( "TizenSans" );
1413 const std::string fontHebrew( "TizenSansHebrew" );
1414 const std::string fontArabic( "TizenSansArabic" );
1416 // Set a known font description
1417 FontDescriptionRun fontDescriptionRun01;
1418 fontDescriptionRun01.characterRun.characterIndex = 0u;
1419 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1420 fontDescriptionRun01.familyLength = fontLatin.size();
1421 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1422 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1423 fontDescriptionRun01.familyDefined = true;
1424 fontDescriptionRun01.weightDefined = false;
1425 fontDescriptionRun01.widthDefined = false;
1426 fontDescriptionRun01.slantDefined = false;
1427 fontDescriptionRun01.sizeDefined = false;
1429 // Set a known font description
1430 FontDescriptionRun fontDescriptionRun02;
1431 fontDescriptionRun02.characterRun.characterIndex = 17u;
1432 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1433 fontDescriptionRun02.familyLength = fontHebrew.size();
1434 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1435 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1436 fontDescriptionRun02.familyDefined = true;
1437 fontDescriptionRun02.weightDefined = false;
1438 fontDescriptionRun02.widthDefined = false;
1439 fontDescriptionRun02.slantDefined = false;
1440 fontDescriptionRun02.sizeDefined = false;
1442 // Set a known font description
1443 FontDescriptionRun fontDescriptionRun03;
1444 fontDescriptionRun03.characterRun.characterIndex = 26u;
1445 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1446 fontDescriptionRun03.familyLength = fontLatin.size();
1447 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1448 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1449 fontDescriptionRun03.familyDefined = true;
1450 fontDescriptionRun03.weightDefined = false;
1451 fontDescriptionRun03.widthDefined = false;
1452 fontDescriptionRun03.slantDefined = false;
1453 fontDescriptionRun03.sizeDefined = false;
1455 // Set a known font description
1456 FontDescriptionRun fontDescriptionRun04;
1457 fontDescriptionRun04.characterRun.characterIndex = 28u;
1458 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1459 fontDescriptionRun04.familyLength = fontArabic.size();
1460 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1461 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1462 fontDescriptionRun04.familyDefined = true;
1463 fontDescriptionRun04.weightDefined = false;
1464 fontDescriptionRun04.widthDefined = false;
1465 fontDescriptionRun04.slantDefined = false;
1466 fontDescriptionRun04.sizeDefined = false;
1468 // Set a known font description
1469 FontDescriptionRun fontDescriptionRun05;
1470 fontDescriptionRun05.characterRun.characterIndex = 42u;
1471 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1472 fontDescriptionRun05.familyLength = fontLatin.size();
1473 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1474 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1475 fontDescriptionRun05.familyDefined = true;
1476 fontDescriptionRun05.weightDefined = false;
1477 fontDescriptionRun05.widthDefined = false;
1478 fontDescriptionRun05.slantDefined = false;
1479 fontDescriptionRun05.sizeDefined = false;
1481 // Set a known font description
1482 FontDescriptionRun fontDescriptionRun06;
1483 fontDescriptionRun06.characterRun.characterIndex = 54u;
1484 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1485 fontDescriptionRun06.familyLength = fontHebrew.size();
1486 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1487 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1488 fontDescriptionRun06.familyDefined = true;
1489 fontDescriptionRun06.weightDefined = false;
1490 fontDescriptionRun06.widthDefined = false;
1491 fontDescriptionRun06.slantDefined = false;
1492 fontDescriptionRun06.sizeDefined = false;
1494 // Set a known font description
1495 FontDescriptionRun fontDescriptionRun07;
1496 fontDescriptionRun07.characterRun.characterIndex = 64u;
1497 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1498 fontDescriptionRun07.familyLength = fontHebrew.size();
1499 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1500 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1501 fontDescriptionRun07.familyDefined = true;
1502 fontDescriptionRun07.weightDefined = false;
1503 fontDescriptionRun07.widthDefined = false;
1504 fontDescriptionRun07.slantDefined = false;
1505 fontDescriptionRun07.sizeDefined = false;
1507 // Set a known font description
1508 FontDescriptionRun fontDescriptionRun08;
1509 fontDescriptionRun08.characterRun.characterIndex = 74u;
1510 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1511 fontDescriptionRun08.familyLength = fontLatin.size();
1512 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1513 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1514 fontDescriptionRun08.familyDefined = true;
1515 fontDescriptionRun08.weightDefined = false;
1516 fontDescriptionRun08.widthDefined = false;
1517 fontDescriptionRun08.slantDefined = false;
1518 fontDescriptionRun08.sizeDefined = false;
1520 // Set a known font description
1521 FontDescriptionRun fontDescriptionRun09;
1522 fontDescriptionRun09.characterRun.characterIndex = 92u;
1523 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1524 fontDescriptionRun09.familyLength = fontLatin.size();
1525 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1526 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1527 fontDescriptionRun09.familyDefined = true;
1528 fontDescriptionRun09.weightDefined = false;
1529 fontDescriptionRun09.widthDefined = false;
1530 fontDescriptionRun09.slantDefined = false;
1531 fontDescriptionRun09.sizeDefined = false;
1533 // Set a known font description
1534 FontDescriptionRun fontDescriptionRun10;
1535 fontDescriptionRun10.characterRun.characterIndex = 104u;
1536 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1537 fontDescriptionRun10.familyLength = fontArabic.size();
1538 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1539 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1540 fontDescriptionRun10.familyDefined = true;
1541 fontDescriptionRun10.weightDefined = false;
1542 fontDescriptionRun10.widthDefined = false;
1543 fontDescriptionRun10.slantDefined = false;
1544 fontDescriptionRun10.sizeDefined = false;
1546 // Set a known font description
1547 FontDescriptionRun fontDescriptionRun11;
1548 fontDescriptionRun11.characterRun.characterIndex = 118u;
1549 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1550 fontDescriptionRun11.familyLength = fontHebrew.size();
1551 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1552 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1553 fontDescriptionRun11.familyDefined = true;
1554 fontDescriptionRun11.weightDefined = false;
1555 fontDescriptionRun11.widthDefined = false;
1556 fontDescriptionRun11.slantDefined = false;
1557 fontDescriptionRun11.sizeDefined = false;
1559 // Set a known font description
1560 FontDescriptionRun fontDescriptionRun12;
1561 fontDescriptionRun12.characterRun.characterIndex = 128u;
1562 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1563 fontDescriptionRun12.familyLength = fontLatin.size();
1564 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1565 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1566 fontDescriptionRun12.familyDefined = true;
1567 fontDescriptionRun12.weightDefined = false;
1568 fontDescriptionRun12.widthDefined = false;
1569 fontDescriptionRun12.slantDefined = false;
1570 fontDescriptionRun12.sizeDefined = false;
1572 // Set a known font description
1573 FontDescriptionRun fontDescriptionRun13;
1574 fontDescriptionRun13.characterRun.characterIndex = 145u;
1575 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1576 fontDescriptionRun13.familyLength = fontHebrew.size();
1577 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1578 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1579 fontDescriptionRun13.familyDefined = true;
1580 fontDescriptionRun13.weightDefined = false;
1581 fontDescriptionRun13.widthDefined = false;
1582 fontDescriptionRun13.slantDefined = false;
1583 fontDescriptionRun13.sizeDefined = false;
1585 // Set a known font description
1586 FontDescriptionRun fontDescriptionRun14;
1587 fontDescriptionRun14.characterRun.characterIndex = 154u;
1588 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1589 fontDescriptionRun14.familyLength = fontLatin.size();
1590 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1591 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1592 fontDescriptionRun14.familyDefined = true;
1593 fontDescriptionRun14.weightDefined = false;
1594 fontDescriptionRun14.widthDefined = false;
1595 fontDescriptionRun14.slantDefined = false;
1596 fontDescriptionRun14.sizeDefined = false;
1598 // Set a known font description
1599 FontDescriptionRun fontDescriptionRun15;
1600 fontDescriptionRun15.characterRun.characterIndex = 156u;
1601 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1602 fontDescriptionRun15.familyLength = fontHebrew.size();
1603 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1604 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1605 fontDescriptionRun15.familyDefined = true;
1606 fontDescriptionRun15.weightDefined = false;
1607 fontDescriptionRun15.widthDefined = false;
1608 fontDescriptionRun15.slantDefined = false;
1609 fontDescriptionRun15.sizeDefined = false;
1611 // Set a known font description
1612 FontDescriptionRun fontDescriptionRun16;
1613 fontDescriptionRun16.characterRun.characterIndex = 166u;
1614 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1615 fontDescriptionRun16.familyLength = fontLatin.size();
1616 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1617 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1618 fontDescriptionRun16.familyDefined = true;
1619 fontDescriptionRun16.weightDefined = false;
1620 fontDescriptionRun16.widthDefined = false;
1621 fontDescriptionRun16.slantDefined = false;
1622 fontDescriptionRun16.sizeDefined = false;
1624 // Set a known font description
1625 FontDescriptionRun fontDescriptionRun17;
1626 fontDescriptionRun17.characterRun.characterIndex = 178u;
1627 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1628 fontDescriptionRun17.familyLength = fontArabic.size();
1629 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1630 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1631 fontDescriptionRun17.familyDefined = true;
1632 fontDescriptionRun17.weightDefined = false;
1633 fontDescriptionRun17.widthDefined = false;
1634 fontDescriptionRun17.slantDefined = false;
1635 fontDescriptionRun17.sizeDefined = false;
1637 Vector<FontDescriptionRun> fontDescriptionRuns;
1638 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1639 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1640 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1641 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1642 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1643 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1644 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1645 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1646 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1647 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1648 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1649 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1650 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1651 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1652 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1653 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1654 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1655 Size textArea(100.f, 300.f);
1656 Size layoutSize(92.f, 380.f);
1659 1.f, -12.f, 12.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,
1660 0.f, -13.f, 10.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,
1661 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1662 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
1663 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,
1664 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1665 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,
1666 1.f, -13.f, 10.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,
1667 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
1668 1.f, -13.f, 10.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,
1669 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.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,
1670 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1671 1.f, -12.f, 12.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,
1672 0.f, -13.f, 10.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,
1673 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1674 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,
1675 1.f, -13.f, 10.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,
1676 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
1679 struct LineRun line01 =
1691 struct LineRun line02 =
1703 struct LineRun line03 =
1715 struct LineRun line04 =
1727 struct LineRun line05 =
1739 struct LineRun line06 =
1751 struct LineRun line07 =
1763 struct LineRun line08 =
1775 struct LineRun line09 =
1787 struct LineRun line10 =
1799 struct LineRun line11 =
1811 struct LineRun line12 =
1823 struct LineRun line13 =
1835 struct LineRun line14 =
1847 struct LineRun line15 =
1859 struct LineRun line16 =
1871 struct LineRun line17 =
1883 struct LineRun line18 =
1895 struct LineRun line19 =
1907 Vector<LineRun> lines;
1908 lines.PushBack( line01 );
1909 lines.PushBack( line02 );
1910 lines.PushBack( line03 );
1911 lines.PushBack( line04 );
1912 lines.PushBack( line05 );
1913 lines.PushBack( line06 );
1914 lines.PushBack( line07 );
1915 lines.PushBack( line08 );
1916 lines.PushBack( line09 );
1917 lines.PushBack( line10 );
1918 lines.PushBack( line11 );
1919 lines.PushBack( line12 );
1920 lines.PushBack( line13 );
1921 lines.PushBack( line14 );
1922 lines.PushBack( line15 );
1923 lines.PushBack( line16 );
1924 lines.PushBack( line17 );
1925 lines.PushBack( line18 );
1926 lines.PushBack( line19 );
1928 LayoutTextData data =
1930 "Layout bidirectional text.",
1931 "Hello world demo שלום עולם.\n"
1932 "مرحبا بالعالم hello world שלום עולם\n"
1933 "שלום עולם hello world demo.\n"
1934 "hello world مرحبا بالعالم שלום עולם\n"
1935 "Hello world demo שלום עולם.\n"
1936 "שלום עולם hello world مرحبا بالعالم\n",
1939 fontDescriptionRuns.Begin(),
1945 Layout::Engine::MULTI_LINE_BOX,
1952 if( !LayoutTextTest( data ) )
1954 tet_result(TET_FAIL);
1957 tet_result(TET_PASS);
1961 int UtcDaliTextUpdateLayout02(void)
1963 ToolkitTestApplication application;
1964 tet_infoline(" UtcDaliTextUpdateLayout02");
1966 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1968 const std::string fontLatin( "TizenSans" );
1969 const std::string fontHebrew( "TizenSansHebrew" );
1970 const std::string fontArabic( "TizenSansArabic" );
1972 // Set a known font description
1973 FontDescriptionRun fontDescriptionRun01;
1974 fontDescriptionRun01.characterRun.characterIndex = 0u;
1975 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1976 fontDescriptionRun01.familyLength = fontLatin.size();
1977 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1978 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1979 fontDescriptionRun01.familyDefined = true;
1980 fontDescriptionRun01.weightDefined = false;
1981 fontDescriptionRun01.widthDefined = false;
1982 fontDescriptionRun01.slantDefined = false;
1983 fontDescriptionRun01.sizeDefined = false;
1985 // Set a known font description
1986 FontDescriptionRun fontDescriptionRun02;
1987 fontDescriptionRun02.characterRun.characterIndex = 17u;
1988 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1989 fontDescriptionRun02.familyLength = fontHebrew.size();
1990 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1991 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1992 fontDescriptionRun02.familyDefined = true;
1993 fontDescriptionRun02.weightDefined = false;
1994 fontDescriptionRun02.widthDefined = false;
1995 fontDescriptionRun02.slantDefined = false;
1996 fontDescriptionRun02.sizeDefined = false;
1998 // Set a known font description
1999 FontDescriptionRun fontDescriptionRun03;
2000 fontDescriptionRun03.characterRun.characterIndex = 26u;
2001 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2002 fontDescriptionRun03.familyLength = fontLatin.size();
2003 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2004 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2005 fontDescriptionRun03.familyDefined = true;
2006 fontDescriptionRun03.weightDefined = false;
2007 fontDescriptionRun03.widthDefined = false;
2008 fontDescriptionRun03.slantDefined = false;
2009 fontDescriptionRun03.sizeDefined = false;
2011 // Set a known font description
2012 FontDescriptionRun fontDescriptionRun04;
2013 fontDescriptionRun04.characterRun.characterIndex = 28u;
2014 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2015 fontDescriptionRun04.familyLength = fontArabic.size();
2016 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2017 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2018 fontDescriptionRun04.familyDefined = true;
2019 fontDescriptionRun04.weightDefined = false;
2020 fontDescriptionRun04.widthDefined = false;
2021 fontDescriptionRun04.slantDefined = false;
2022 fontDescriptionRun04.sizeDefined = false;
2024 // Set a known font description
2025 FontDescriptionRun fontDescriptionRun05;
2026 fontDescriptionRun05.characterRun.characterIndex = 42u;
2027 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2028 fontDescriptionRun05.familyLength = fontLatin.size();
2029 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2030 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2031 fontDescriptionRun05.familyDefined = true;
2032 fontDescriptionRun05.weightDefined = false;
2033 fontDescriptionRun05.widthDefined = false;
2034 fontDescriptionRun05.slantDefined = false;
2035 fontDescriptionRun05.sizeDefined = false;
2037 // Set a known font description
2038 FontDescriptionRun fontDescriptionRun06;
2039 fontDescriptionRun06.characterRun.characterIndex = 54u;
2040 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2041 fontDescriptionRun06.familyLength = fontHebrew.size();
2042 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2043 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2044 fontDescriptionRun06.familyDefined = true;
2045 fontDescriptionRun06.weightDefined = false;
2046 fontDescriptionRun06.widthDefined = false;
2047 fontDescriptionRun06.slantDefined = false;
2048 fontDescriptionRun06.sizeDefined = false;
2050 // Set a known font description
2051 FontDescriptionRun fontDescriptionRun07;
2052 fontDescriptionRun07.characterRun.characterIndex = 64u;
2053 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2054 fontDescriptionRun07.familyLength = fontHebrew.size();
2055 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2056 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2057 fontDescriptionRun07.familyDefined = true;
2058 fontDescriptionRun07.weightDefined = false;
2059 fontDescriptionRun07.widthDefined = false;
2060 fontDescriptionRun07.slantDefined = false;
2061 fontDescriptionRun07.sizeDefined = false;
2063 // Set a known font description
2064 FontDescriptionRun fontDescriptionRun08;
2065 fontDescriptionRun08.characterRun.characterIndex = 74u;
2066 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2067 fontDescriptionRun08.familyLength = fontLatin.size();
2068 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2069 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2070 fontDescriptionRun08.familyDefined = true;
2071 fontDescriptionRun08.weightDefined = false;
2072 fontDescriptionRun08.widthDefined = false;
2073 fontDescriptionRun08.slantDefined = false;
2074 fontDescriptionRun08.sizeDefined = false;
2076 // Set a known font description
2077 FontDescriptionRun fontDescriptionRun09;
2078 fontDescriptionRun09.characterRun.characterIndex = 92u;
2079 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2080 fontDescriptionRun09.familyLength = fontLatin.size();
2081 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2082 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2083 fontDescriptionRun09.familyDefined = true;
2084 fontDescriptionRun09.weightDefined = false;
2085 fontDescriptionRun09.widthDefined = false;
2086 fontDescriptionRun09.slantDefined = false;
2087 fontDescriptionRun09.sizeDefined = false;
2089 // Set a known font description
2090 FontDescriptionRun fontDescriptionRun10;
2091 fontDescriptionRun10.characterRun.characterIndex = 104u;
2092 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2093 fontDescriptionRun10.familyLength = fontArabic.size();
2094 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2095 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2096 fontDescriptionRun10.familyDefined = true;
2097 fontDescriptionRun10.weightDefined = false;
2098 fontDescriptionRun10.widthDefined = false;
2099 fontDescriptionRun10.slantDefined = false;
2100 fontDescriptionRun10.sizeDefined = false;
2102 // Set a known font description
2103 FontDescriptionRun fontDescriptionRun11;
2104 fontDescriptionRun11.characterRun.characterIndex = 118u;
2105 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2106 fontDescriptionRun11.familyLength = fontHebrew.size();
2107 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2108 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2109 fontDescriptionRun11.familyDefined = true;
2110 fontDescriptionRun11.weightDefined = false;
2111 fontDescriptionRun11.widthDefined = false;
2112 fontDescriptionRun11.slantDefined = false;
2113 fontDescriptionRun11.sizeDefined = false;
2115 // Set a known font description
2116 FontDescriptionRun fontDescriptionRun12;
2117 fontDescriptionRun12.characterRun.characterIndex = 128u;
2118 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2119 fontDescriptionRun12.familyLength = fontLatin.size();
2120 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2121 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2122 fontDescriptionRun12.familyDefined = true;
2123 fontDescriptionRun12.weightDefined = false;
2124 fontDescriptionRun12.widthDefined = false;
2125 fontDescriptionRun12.slantDefined = false;
2126 fontDescriptionRun12.sizeDefined = false;
2128 // Set a known font description
2129 FontDescriptionRun fontDescriptionRun13;
2130 fontDescriptionRun13.characterRun.characterIndex = 145u;
2131 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2132 fontDescriptionRun13.familyLength = fontHebrew.size();
2133 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2134 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2135 fontDescriptionRun13.familyDefined = true;
2136 fontDescriptionRun13.weightDefined = false;
2137 fontDescriptionRun13.widthDefined = false;
2138 fontDescriptionRun13.slantDefined = false;
2139 fontDescriptionRun13.sizeDefined = false;
2141 // Set a known font description
2142 FontDescriptionRun fontDescriptionRun14;
2143 fontDescriptionRun14.characterRun.characterIndex = 154u;
2144 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2145 fontDescriptionRun14.familyLength = fontLatin.size();
2146 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2147 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2148 fontDescriptionRun14.familyDefined = true;
2149 fontDescriptionRun14.weightDefined = false;
2150 fontDescriptionRun14.widthDefined = false;
2151 fontDescriptionRun14.slantDefined = false;
2152 fontDescriptionRun14.sizeDefined = false;
2154 // Set a known font description
2155 FontDescriptionRun fontDescriptionRun15;
2156 fontDescriptionRun15.characterRun.characterIndex = 156u;
2157 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2158 fontDescriptionRun15.familyLength = fontHebrew.size();
2159 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2160 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2161 fontDescriptionRun15.familyDefined = true;
2162 fontDescriptionRun15.weightDefined = false;
2163 fontDescriptionRun15.widthDefined = false;
2164 fontDescriptionRun15.slantDefined = false;
2165 fontDescriptionRun15.sizeDefined = false;
2167 // Set a known font description
2168 FontDescriptionRun fontDescriptionRun16;
2169 fontDescriptionRun16.characterRun.characterIndex = 166u;
2170 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2171 fontDescriptionRun16.familyLength = fontLatin.size();
2172 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2173 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2174 fontDescriptionRun16.familyDefined = true;
2175 fontDescriptionRun16.weightDefined = false;
2176 fontDescriptionRun16.widthDefined = false;
2177 fontDescriptionRun16.slantDefined = false;
2178 fontDescriptionRun16.sizeDefined = false;
2180 // Set a known font description
2181 FontDescriptionRun fontDescriptionRun17;
2182 fontDescriptionRun17.characterRun.characterIndex = 178u;
2183 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2184 fontDescriptionRun17.familyLength = fontArabic.size();
2185 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2186 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2187 fontDescriptionRun17.familyDefined = true;
2188 fontDescriptionRun17.weightDefined = false;
2189 fontDescriptionRun17.widthDefined = false;
2190 fontDescriptionRun17.slantDefined = false;
2191 fontDescriptionRun17.sizeDefined = false;
2193 Vector<FontDescriptionRun> fontDescriptionRuns;
2194 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2195 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2196 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2197 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2198 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2199 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2200 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2201 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2202 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2203 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2204 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2205 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2206 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2207 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2208 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2209 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2210 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2211 Size textArea(100.f, 300.f);
2212 Size layoutSize(92.f, 380.f);
2215 1.f, -12.f, 12.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,
2216 0.f, -13.f, 10.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,
2217 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2218 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2219 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,
2220 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2221 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,
2222 1.f, -13.f, 10.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,
2223 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2224 1.f, -13.f, 10.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,
2225 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.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,
2226 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2227 1.f, -12.f, 12.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,
2228 0.f, -13.f, 10.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,
2229 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2230 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,
2231 1.f, -13.f, 10.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,
2232 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2235 struct LineRun line01 =
2247 struct LineRun line02 =
2259 struct LineRun line03 =
2271 struct LineRun line04 =
2283 struct LineRun line05 =
2295 struct LineRun line06 =
2307 struct LineRun line07 =
2319 struct LineRun line08 =
2331 struct LineRun line09 =
2343 struct LineRun line10 =
2355 struct LineRun line11 =
2367 struct LineRun line12 =
2379 struct LineRun line13 =
2391 struct LineRun line14 =
2403 struct LineRun line15 =
2415 struct LineRun line16 =
2427 struct LineRun line17 =
2439 struct LineRun line18 =
2451 struct LineRun line19 =
2463 Vector<LineRun> lines;
2464 lines.PushBack( line01 );
2465 lines.PushBack( line02 );
2466 lines.PushBack( line03 );
2467 lines.PushBack( line04 );
2468 lines.PushBack( line05 );
2469 lines.PushBack( line06 );
2470 lines.PushBack( line07 );
2471 lines.PushBack( line08 );
2472 lines.PushBack( line09 );
2473 lines.PushBack( line10 );
2474 lines.PushBack( line11 );
2475 lines.PushBack( line12 );
2476 lines.PushBack( line13 );
2477 lines.PushBack( line14 );
2478 lines.PushBack( line15 );
2479 lines.PushBack( line16 );
2480 lines.PushBack( line17 );
2481 lines.PushBack( line18 );
2482 lines.PushBack( line19 );
2484 LayoutTextData data =
2486 "Layout bidirectional text.",
2487 "Hello world demo שלום עולם.\n"
2488 "مرحبا بالعالم hello world שלום עולם\n"
2489 "שלום עולם hello world demo.\n"
2490 "hello world مرحبا بالعالم שלום עולם\n"
2491 "Hello world demo שלום עולם.\n"
2492 "שלום עולם hello world مرحبا بالعالم\n",
2495 fontDescriptionRuns.Begin(),
2501 Layout::Engine::MULTI_LINE_BOX,
2508 if( !LayoutTextTest( data ) )
2510 tet_result(TET_FAIL);
2513 tet_result(TET_PASS);
2517 int UtcDaliTextUpdateLayout03(void)
2519 ToolkitTestApplication application;
2520 tet_infoline(" UtcDaliTextUpdateLayout03");
2522 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2524 const std::string fontLatin( "TizenSans" );
2525 const std::string fontHebrew( "TizenSansHebrew" );
2526 const std::string fontArabic( "TizenSansArabic" );
2528 // Set a known font description
2529 FontDescriptionRun fontDescriptionRun01;
2530 fontDescriptionRun01.characterRun.characterIndex = 0u;
2531 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2532 fontDescriptionRun01.familyLength = fontLatin.size();
2533 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2534 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2535 fontDescriptionRun01.familyDefined = true;
2536 fontDescriptionRun01.weightDefined = false;
2537 fontDescriptionRun01.widthDefined = false;
2538 fontDescriptionRun01.slantDefined = false;
2539 fontDescriptionRun01.sizeDefined = false;
2541 // Set a known font description
2542 FontDescriptionRun fontDescriptionRun02;
2543 fontDescriptionRun02.characterRun.characterIndex = 17u;
2544 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2545 fontDescriptionRun02.familyLength = fontHebrew.size();
2546 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2547 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2548 fontDescriptionRun02.familyDefined = true;
2549 fontDescriptionRun02.weightDefined = false;
2550 fontDescriptionRun02.widthDefined = false;
2551 fontDescriptionRun02.slantDefined = false;
2552 fontDescriptionRun02.sizeDefined = false;
2554 // Set a known font description
2555 FontDescriptionRun fontDescriptionRun03;
2556 fontDescriptionRun03.characterRun.characterIndex = 26u;
2557 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2558 fontDescriptionRun03.familyLength = fontLatin.size();
2559 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2560 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2561 fontDescriptionRun03.familyDefined = true;
2562 fontDescriptionRun03.weightDefined = false;
2563 fontDescriptionRun03.widthDefined = false;
2564 fontDescriptionRun03.slantDefined = false;
2565 fontDescriptionRun03.sizeDefined = false;
2567 // Set a known font description
2568 FontDescriptionRun fontDescriptionRun04;
2569 fontDescriptionRun04.characterRun.characterIndex = 28u;
2570 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2571 fontDescriptionRun04.familyLength = fontArabic.size();
2572 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2573 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2574 fontDescriptionRun04.familyDefined = true;
2575 fontDescriptionRun04.weightDefined = false;
2576 fontDescriptionRun04.widthDefined = false;
2577 fontDescriptionRun04.slantDefined = false;
2578 fontDescriptionRun04.sizeDefined = false;
2580 // Set a known font description
2581 FontDescriptionRun fontDescriptionRun05;
2582 fontDescriptionRun05.characterRun.characterIndex = 42u;
2583 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2584 fontDescriptionRun05.familyLength = fontLatin.size();
2585 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2586 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2587 fontDescriptionRun05.familyDefined = true;
2588 fontDescriptionRun05.weightDefined = false;
2589 fontDescriptionRun05.widthDefined = false;
2590 fontDescriptionRun05.slantDefined = false;
2591 fontDescriptionRun05.sizeDefined = false;
2593 // Set a known font description
2594 FontDescriptionRun fontDescriptionRun06;
2595 fontDescriptionRun06.characterRun.characterIndex = 54u;
2596 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2597 fontDescriptionRun06.familyLength = fontHebrew.size();
2598 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2599 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2600 fontDescriptionRun06.familyDefined = true;
2601 fontDescriptionRun06.weightDefined = false;
2602 fontDescriptionRun06.widthDefined = false;
2603 fontDescriptionRun06.slantDefined = false;
2604 fontDescriptionRun06.sizeDefined = false;
2606 // Set a known font description
2607 FontDescriptionRun fontDescriptionRun07;
2608 fontDescriptionRun07.characterRun.characterIndex = 64u;
2609 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2610 fontDescriptionRun07.familyLength = fontHebrew.size();
2611 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2612 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2613 fontDescriptionRun07.familyDefined = true;
2614 fontDescriptionRun07.weightDefined = false;
2615 fontDescriptionRun07.widthDefined = false;
2616 fontDescriptionRun07.slantDefined = false;
2617 fontDescriptionRun07.sizeDefined = false;
2619 // Set a known font description
2620 FontDescriptionRun fontDescriptionRun08;
2621 fontDescriptionRun08.characterRun.characterIndex = 74u;
2622 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2623 fontDescriptionRun08.familyLength = fontLatin.size();
2624 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2625 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2626 fontDescriptionRun08.familyDefined = true;
2627 fontDescriptionRun08.weightDefined = false;
2628 fontDescriptionRun08.widthDefined = false;
2629 fontDescriptionRun08.slantDefined = false;
2630 fontDescriptionRun08.sizeDefined = false;
2632 // Set a known font description
2633 FontDescriptionRun fontDescriptionRun09;
2634 fontDescriptionRun09.characterRun.characterIndex = 92u;
2635 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2636 fontDescriptionRun09.familyLength = fontLatin.size();
2637 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2638 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2639 fontDescriptionRun09.familyDefined = true;
2640 fontDescriptionRun09.weightDefined = false;
2641 fontDescriptionRun09.widthDefined = false;
2642 fontDescriptionRun09.slantDefined = false;
2643 fontDescriptionRun09.sizeDefined = false;
2645 // Set a known font description
2646 FontDescriptionRun fontDescriptionRun10;
2647 fontDescriptionRun10.characterRun.characterIndex = 104u;
2648 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2649 fontDescriptionRun10.familyLength = fontArabic.size();
2650 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2651 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2652 fontDescriptionRun10.familyDefined = true;
2653 fontDescriptionRun10.weightDefined = false;
2654 fontDescriptionRun10.widthDefined = false;
2655 fontDescriptionRun10.slantDefined = false;
2656 fontDescriptionRun10.sizeDefined = false;
2658 // Set a known font description
2659 FontDescriptionRun fontDescriptionRun11;
2660 fontDescriptionRun11.characterRun.characterIndex = 118u;
2661 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2662 fontDescriptionRun11.familyLength = fontHebrew.size();
2663 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2664 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2665 fontDescriptionRun11.familyDefined = true;
2666 fontDescriptionRun11.weightDefined = false;
2667 fontDescriptionRun11.widthDefined = false;
2668 fontDescriptionRun11.slantDefined = false;
2669 fontDescriptionRun11.sizeDefined = false;
2671 // Set a known font description
2672 FontDescriptionRun fontDescriptionRun12;
2673 fontDescriptionRun12.characterRun.characterIndex = 128u;
2674 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2675 fontDescriptionRun12.familyLength = fontLatin.size();
2676 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2677 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2678 fontDescriptionRun12.familyDefined = true;
2679 fontDescriptionRun12.weightDefined = false;
2680 fontDescriptionRun12.widthDefined = false;
2681 fontDescriptionRun12.slantDefined = false;
2682 fontDescriptionRun12.sizeDefined = false;
2684 // Set a known font description
2685 FontDescriptionRun fontDescriptionRun13;
2686 fontDescriptionRun13.characterRun.characterIndex = 145u;
2687 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2688 fontDescriptionRun13.familyLength = fontHebrew.size();
2689 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2690 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2691 fontDescriptionRun13.familyDefined = true;
2692 fontDescriptionRun13.weightDefined = false;
2693 fontDescriptionRun13.widthDefined = false;
2694 fontDescriptionRun13.slantDefined = false;
2695 fontDescriptionRun13.sizeDefined = false;
2697 // Set a known font description
2698 FontDescriptionRun fontDescriptionRun14;
2699 fontDescriptionRun14.characterRun.characterIndex = 154u;
2700 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2701 fontDescriptionRun14.familyLength = fontLatin.size();
2702 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2703 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2704 fontDescriptionRun14.familyDefined = true;
2705 fontDescriptionRun14.weightDefined = false;
2706 fontDescriptionRun14.widthDefined = false;
2707 fontDescriptionRun14.slantDefined = false;
2708 fontDescriptionRun14.sizeDefined = false;
2710 // Set a known font description
2711 FontDescriptionRun fontDescriptionRun15;
2712 fontDescriptionRun15.characterRun.characterIndex = 156u;
2713 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2714 fontDescriptionRun15.familyLength = fontHebrew.size();
2715 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2716 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2717 fontDescriptionRun15.familyDefined = true;
2718 fontDescriptionRun15.weightDefined = false;
2719 fontDescriptionRun15.widthDefined = false;
2720 fontDescriptionRun15.slantDefined = false;
2721 fontDescriptionRun15.sizeDefined = false;
2723 // Set a known font description
2724 FontDescriptionRun fontDescriptionRun16;
2725 fontDescriptionRun16.characterRun.characterIndex = 166u;
2726 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2727 fontDescriptionRun16.familyLength = fontLatin.size();
2728 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2729 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2730 fontDescriptionRun16.familyDefined = true;
2731 fontDescriptionRun16.weightDefined = false;
2732 fontDescriptionRun16.widthDefined = false;
2733 fontDescriptionRun16.slantDefined = false;
2734 fontDescriptionRun16.sizeDefined = false;
2736 // Set a known font description
2737 FontDescriptionRun fontDescriptionRun17;
2738 fontDescriptionRun17.characterRun.characterIndex = 178u;
2739 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2740 fontDescriptionRun17.familyLength = fontArabic.size();
2741 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2742 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2743 fontDescriptionRun17.familyDefined = true;
2744 fontDescriptionRun17.weightDefined = false;
2745 fontDescriptionRun17.widthDefined = false;
2746 fontDescriptionRun17.slantDefined = false;
2747 fontDescriptionRun17.sizeDefined = false;
2749 Vector<FontDescriptionRun> fontDescriptionRuns;
2750 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2751 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2752 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2753 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2754 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2755 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2756 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2757 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2758 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2759 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2760 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2761 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2762 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2763 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2764 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2765 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2766 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2767 Size textArea(100.f, 300.f);
2768 Size layoutSize(92.f, 380.f);
2771 1.f, -12.f, 12.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,
2772 0.f, -13.f, 10.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,
2773 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2774 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2775 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,
2776 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2777 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,
2778 1.f, -13.f, 10.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,
2779 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2780 1.f, -13.f, 10.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,
2781 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.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,
2782 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2783 1.f, -12.f, 12.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,
2784 0.f, -13.f, 10.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,
2785 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2786 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,
2787 1.f, -13.f, 10.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,
2788 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2791 struct LineRun line01 =
2803 struct LineRun line02 =
2815 struct LineRun line03 =
2827 struct LineRun line04 =
2839 struct LineRun line05 =
2851 struct LineRun line06 =
2863 struct LineRun line07 =
2875 struct LineRun line08 =
2887 struct LineRun line09 =
2899 struct LineRun line10 =
2911 struct LineRun line11 =
2923 struct LineRun line12 =
2935 struct LineRun line13 =
2947 struct LineRun line14 =
2959 struct LineRun line15 =
2971 struct LineRun line16 =
2983 struct LineRun line17 =
2995 struct LineRun line18 =
3007 struct LineRun line19 =
3019 Vector<LineRun> lines;
3020 lines.PushBack( line01 );
3021 lines.PushBack( line02 );
3022 lines.PushBack( line03 );
3023 lines.PushBack( line04 );
3024 lines.PushBack( line05 );
3025 lines.PushBack( line06 );
3026 lines.PushBack( line07 );
3027 lines.PushBack( line08 );
3028 lines.PushBack( line09 );
3029 lines.PushBack( line10 );
3030 lines.PushBack( line11 );
3031 lines.PushBack( line12 );
3032 lines.PushBack( line13 );
3033 lines.PushBack( line14 );
3034 lines.PushBack( line15 );
3035 lines.PushBack( line16 );
3036 lines.PushBack( line17 );
3037 lines.PushBack( line18 );
3038 lines.PushBack( line19 );
3040 LayoutTextData data =
3042 "Layout bidirectional text.",
3043 "Hello world demo שלום עולם.\n"
3044 "مرحبا بالعالم hello world שלום עולם\n"
3045 "שלום עולם hello world demo.\n"
3046 "hello world مرحبا بالعالم שלום עולם\n"
3047 "Hello world demo שלום עולם.\n"
3048 "שלום עולם hello world مرحبا بالعالم\n",
3051 fontDescriptionRuns.Begin(),
3057 Layout::Engine::MULTI_LINE_BOX,
3064 if( !LayoutTextTest( data ) )
3066 tet_result(TET_FAIL);
3069 tet_result(TET_PASS);
3073 int UtcDaliTextLayoutEllipsis01(void)
3075 ToolkitTestApplication application;
3076 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3078 // Layout single-line LTR text with ellipsis.
3080 const std::string fontLatin( "TizenSans" );
3082 // Set a known font description
3083 FontDescriptionRun fontDescriptionRun01;
3084 fontDescriptionRun01.characterRun.characterIndex = 0u;
3085 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3086 fontDescriptionRun01.familyLength = fontLatin.size();
3087 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3088 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3089 fontDescriptionRun01.familyDefined = true;
3090 fontDescriptionRun01.weightDefined = false;
3091 fontDescriptionRun01.widthDefined = false;
3092 fontDescriptionRun01.slantDefined = false;
3093 fontDescriptionRun01.sizeDefined = false;
3095 Vector<FontDescriptionRun> fontDescriptionRuns;
3096 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3098 struct LineRun line01 =
3110 Vector<LineRun> lines;
3111 lines.PushBack( line01 );
3115 1.f, -12.f, 12.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,
3118 Size textArea( 100.f, 50.f );
3119 Size layoutSize( 100.f, 20.f );
3121 LayoutTextData data =
3123 "Layout single-line LTR text with ellipsis.",
3124 "Hello world demo hello world demo hello world demo.",
3127 fontDescriptionRuns.Begin(),
3133 Layout::Engine::SINGLE_LINE_BOX,
3140 if( !LayoutTextTest( data ) )
3142 tet_result(TET_FAIL);
3145 tet_result(TET_PASS);
3149 int UtcDaliTextLayoutEllipsis02(void)
3151 ToolkitTestApplication application;
3152 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3154 // Layout multi-line LTR text with ellipsis.
3156 const std::string fontLatin( "TizenSans" );
3158 // Set a known font description
3159 FontDescriptionRun fontDescriptionRun01;
3160 fontDescriptionRun01.characterRun.characterIndex = 0u;
3161 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3162 fontDescriptionRun01.familyLength = fontLatin.size();
3163 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3164 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3165 fontDescriptionRun01.familyDefined = true;
3166 fontDescriptionRun01.weightDefined = false;
3167 fontDescriptionRun01.widthDefined = false;
3168 fontDescriptionRun01.slantDefined = false;
3169 fontDescriptionRun01.sizeDefined = false;
3171 Vector<FontDescriptionRun> fontDescriptionRuns;
3172 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3174 struct LineRun line01 =
3186 struct LineRun line02 =
3198 Vector<LineRun> lines;
3199 lines.PushBack( line01 );
3200 lines.PushBack( line02 );
3204 1.f, -12.f, 12.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,
3205 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 53.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
3208 Size textArea( 100.f, 50.f );
3209 Size layoutSize( 100.f, 40.f );
3211 LayoutTextData data =
3213 "Layout multi-line LTR text with ellipsis.",
3214 "Hello world demo hello world demo hello world demo.",
3217 fontDescriptionRuns.Begin(),
3223 Layout::Engine::MULTI_LINE_BOX,
3230 if( !LayoutTextTest( data ) )
3232 tet_result(TET_FAIL);
3235 tet_result(TET_PASS);
3239 int UtcDaliTextLayoutEllipsis03(void)
3241 ToolkitTestApplication application;
3242 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3244 // Layout single-line RTL text with ellipsis.
3246 const std::string fontHebrew( "TizenSansHebrew" );
3247 const std::string fontArabic( "TizenSansArabic" );
3249 // Set a known font description
3250 FontDescriptionRun fontDescriptionRun01;
3251 fontDescriptionRun01.characterRun.characterIndex = 0u;
3252 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3253 fontDescriptionRun01.familyLength = fontHebrew.size();
3254 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3255 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3256 fontDescriptionRun01.familyDefined = true;
3257 fontDescriptionRun01.weightDefined = false;
3258 fontDescriptionRun01.widthDefined = false;
3259 fontDescriptionRun01.slantDefined = false;
3260 fontDescriptionRun01.sizeDefined = false;
3262 FontDescriptionRun fontDescriptionRun02;
3263 fontDescriptionRun02.characterRun.characterIndex = 10u;
3264 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3265 fontDescriptionRun02.familyLength = fontArabic.size();
3266 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3267 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3268 fontDescriptionRun02.familyDefined = true;
3269 fontDescriptionRun02.weightDefined = false;
3270 fontDescriptionRun02.widthDefined = false;
3271 fontDescriptionRun02.slantDefined = false;
3272 fontDescriptionRun02.sizeDefined = false;
3274 FontDescriptionRun fontDescriptionRun03;
3275 fontDescriptionRun03.characterRun.characterIndex = 24u;
3276 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3277 fontDescriptionRun03.familyLength = fontHebrew.size();
3278 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3279 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3280 fontDescriptionRun03.familyDefined = true;
3281 fontDescriptionRun03.weightDefined = false;
3282 fontDescriptionRun03.widthDefined = false;
3283 fontDescriptionRun03.slantDefined = false;
3284 fontDescriptionRun03.sizeDefined = false;
3286 FontDescriptionRun fontDescriptionRun04;
3287 fontDescriptionRun04.characterRun.characterIndex = 34u;
3288 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3289 fontDescriptionRun04.familyLength = fontArabic.size();
3290 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3291 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3292 fontDescriptionRun04.familyDefined = true;
3293 fontDescriptionRun04.weightDefined = false;
3294 fontDescriptionRun04.widthDefined = false;
3295 fontDescriptionRun04.slantDefined = false;
3296 fontDescriptionRun04.sizeDefined = false;
3298 FontDescriptionRun fontDescriptionRun05;
3299 fontDescriptionRun05.characterRun.characterIndex = 48u;
3300 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3301 fontDescriptionRun05.familyLength = fontHebrew.size();
3302 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3303 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3304 fontDescriptionRun05.familyDefined = true;
3305 fontDescriptionRun05.weightDefined = false;
3306 fontDescriptionRun05.widthDefined = false;
3307 fontDescriptionRun05.slantDefined = false;
3308 fontDescriptionRun05.sizeDefined = false;
3310 FontDescriptionRun fontDescriptionRun06;
3311 fontDescriptionRun06.characterRun.characterIndex = 58u;
3312 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3313 fontDescriptionRun06.familyLength = fontArabic.size();
3314 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3315 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3316 fontDescriptionRun06.familyDefined = true;
3317 fontDescriptionRun06.weightDefined = false;
3318 fontDescriptionRun06.widthDefined = false;
3319 fontDescriptionRun06.slantDefined = false;
3320 fontDescriptionRun06.sizeDefined = false;
3322 Vector<FontDescriptionRun> fontDescriptionRuns;
3323 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3324 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3325 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3326 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3327 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3328 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3330 struct LineRun line01 =
3342 Vector<LineRun> lines;
3343 lines.PushBack( line01 );
3347 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3350 Size textArea( 100.f, 50.f );
3351 Size layoutSize( 100.f, 20.f );
3353 LayoutTextData data =
3355 "Layout single-line RTL text with ellipsis.",
3356 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3359 fontDescriptionRuns.Begin(),
3365 Layout::Engine::SINGLE_LINE_BOX,
3372 if( !LayoutTextTest( data ) )
3374 tet_result(TET_FAIL);
3377 tet_result(TET_PASS);
3381 int UtcDaliTextLayoutEllipsis04(void)
3383 ToolkitTestApplication application;
3384 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3386 // Layout multi-line RTL text with ellipsis.
3388 const std::string fontHebrew( "TizenSansHebrew" );
3389 const std::string fontArabic( "TizenSansArabic" );
3391 // Set a known font description
3392 FontDescriptionRun fontDescriptionRun01;
3393 fontDescriptionRun01.characterRun.characterIndex = 0u;
3394 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3395 fontDescriptionRun01.familyLength = fontHebrew.size();
3396 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3397 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3398 fontDescriptionRun01.familyDefined = true;
3399 fontDescriptionRun01.weightDefined = false;
3400 fontDescriptionRun01.widthDefined = false;
3401 fontDescriptionRun01.slantDefined = false;
3402 fontDescriptionRun01.sizeDefined = false;
3404 FontDescriptionRun fontDescriptionRun02;
3405 fontDescriptionRun02.characterRun.characterIndex = 10u;
3406 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3407 fontDescriptionRun02.familyLength = fontArabic.size();
3408 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3409 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3410 fontDescriptionRun02.familyDefined = true;
3411 fontDescriptionRun02.weightDefined = false;
3412 fontDescriptionRun02.widthDefined = false;
3413 fontDescriptionRun02.slantDefined = false;
3414 fontDescriptionRun02.sizeDefined = false;
3416 FontDescriptionRun fontDescriptionRun03;
3417 fontDescriptionRun03.characterRun.characterIndex = 24u;
3418 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3419 fontDescriptionRun03.familyLength = fontHebrew.size();
3420 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3421 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3422 fontDescriptionRun03.familyDefined = true;
3423 fontDescriptionRun03.weightDefined = false;
3424 fontDescriptionRun03.widthDefined = false;
3425 fontDescriptionRun03.slantDefined = false;
3426 fontDescriptionRun03.sizeDefined = false;
3428 FontDescriptionRun fontDescriptionRun04;
3429 fontDescriptionRun04.characterRun.characterIndex = 34u;
3430 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3431 fontDescriptionRun04.familyLength = fontArabic.size();
3432 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3433 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3434 fontDescriptionRun04.familyDefined = true;
3435 fontDescriptionRun04.weightDefined = false;
3436 fontDescriptionRun04.widthDefined = false;
3437 fontDescriptionRun04.slantDefined = false;
3438 fontDescriptionRun04.sizeDefined = false;
3440 FontDescriptionRun fontDescriptionRun05;
3441 fontDescriptionRun05.characterRun.characterIndex = 48u;
3442 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3443 fontDescriptionRun05.familyLength = fontHebrew.size();
3444 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3445 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3446 fontDescriptionRun05.familyDefined = true;
3447 fontDescriptionRun05.weightDefined = false;
3448 fontDescriptionRun05.widthDefined = false;
3449 fontDescriptionRun05.slantDefined = false;
3450 fontDescriptionRun05.sizeDefined = false;
3452 FontDescriptionRun fontDescriptionRun06;
3453 fontDescriptionRun06.characterRun.characterIndex = 58u;
3454 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3455 fontDescriptionRun06.familyLength = fontArabic.size();
3456 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3457 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3458 fontDescriptionRun06.familyDefined = true;
3459 fontDescriptionRun06.weightDefined = false;
3460 fontDescriptionRun06.widthDefined = false;
3461 fontDescriptionRun06.slantDefined = false;
3462 fontDescriptionRun06.sizeDefined = false;
3464 Vector<FontDescriptionRun> fontDescriptionRuns;
3465 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3466 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3467 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3468 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3469 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3470 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3472 struct LineRun line01 =
3484 struct LineRun line02 =
3496 Vector<LineRun> lines;
3497 lines.PushBack( line01 );
3498 lines.PushBack( line02 );
3502 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3503 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.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,
3506 Size textArea( 100.f, 50.f );
3507 Size layoutSize( 100.f, 40.f );
3509 LayoutTextData data =
3511 "Layout single-line RTL text with ellipsis.",
3512 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3515 fontDescriptionRuns.Begin(),
3521 Layout::Engine::MULTI_LINE_BOX,
3528 if( !LayoutTextTest( data ) )
3530 tet_result(TET_FAIL);
3533 tet_result(TET_PASS);
3537 int UtcDaliTextLayoutEllipsis05(void)
3539 ToolkitTestApplication application;
3540 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3542 const std::string fontLatin( "TizenSans" );
3544 // Set a known font description
3545 FontDescriptionRun fontDescriptionRun01;
3546 fontDescriptionRun01.characterRun.characterIndex = 0u;
3547 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3548 fontDescriptionRun01.familyLength = fontLatin.size();
3549 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3550 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3551 fontDescriptionRun01.familyDefined = true;
3552 fontDescriptionRun01.weightDefined = false;
3553 fontDescriptionRun01.widthDefined = false;
3554 fontDescriptionRun01.slantDefined = false;
3555 fontDescriptionRun01.sizeDefined = false;
3557 Vector<FontDescriptionRun> fontDescriptionRuns;
3558 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3560 struct LineRun line01 =
3572 Vector<LineRun> lines;
3573 lines.PushBack( line01 );
3580 Size textArea( 100.f, 19.f );
3581 Size layoutSize( 100.f, 20.f );
3583 LayoutTextData data =
3585 "Not enough height.",
3589 fontDescriptionRuns.Begin(),
3595 Layout::Engine::MULTI_LINE_BOX,
3602 if( !LayoutTextTest( data ) )
3604 tet_result(TET_FAIL);
3607 tet_result(TET_PASS);
3611 int UtcDaliTextReorderLayout01(void)
3613 ToolkitTestApplication application;
3614 tet_infoline(" UtcDaliTextReorderLayout01");
3616 // Reorder lines. No right to left characters.
3618 const std::string fontLatin( "TizenSans" );
3620 // Set a known font description
3621 FontDescriptionRun fontDescriptionRun01;
3622 fontDescriptionRun01.characterRun.characterIndex = 0u;
3623 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3624 fontDescriptionRun01.familyLength = fontLatin.size();
3625 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3626 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3627 fontDescriptionRun01.familyDefined = true;
3628 fontDescriptionRun01.weightDefined = false;
3629 fontDescriptionRun01.widthDefined = false;
3630 fontDescriptionRun01.slantDefined = false;
3631 fontDescriptionRun01.sizeDefined = false;
3633 Vector<FontDescriptionRun> fontDescriptionRuns;
3634 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3638 1.f, -12.f, 12.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,
3641 Size textArea( 100.f, 300.f );
3643 ReLayoutRightToLeftLinesData data =
3645 "Text with no right to left text.",
3649 fontDescriptionRuns.Begin(),
3656 if( !ReLayoutRightToLeftLinesTest( data ) )
3658 tet_result(TET_FAIL);
3661 tet_result(TET_PASS);
3665 int UtcDaliTextReorderLayout02(void)
3667 ToolkitTestApplication application;
3668 tet_infoline(" UtcDaliTextReorderLayout02");
3670 // Reorder lines of the first paragraph.
3672 const std::string fontHebrew( "TizenSansHebrew" );
3673 const std::string fontArabic( "TizenSansArabic" );
3675 // Set a known font description
3676 FontDescriptionRun fontDescriptionRun01;
3677 fontDescriptionRun01.characterRun.characterIndex = 0u;
3678 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3679 fontDescriptionRun01.familyLength = fontHebrew.size();
3680 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3681 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3682 fontDescriptionRun01.familyDefined = true;
3683 fontDescriptionRun01.weightDefined = false;
3684 fontDescriptionRun01.widthDefined = false;
3685 fontDescriptionRun01.slantDefined = false;
3686 fontDescriptionRun01.sizeDefined = false;
3688 FontDescriptionRun fontDescriptionRun02;
3689 fontDescriptionRun02.characterRun.characterIndex = 10u;
3690 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3691 fontDescriptionRun02.familyLength = fontArabic.size();
3692 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3693 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3694 fontDescriptionRun02.familyDefined = true;
3695 fontDescriptionRun02.weightDefined = false;
3696 fontDescriptionRun02.widthDefined = false;
3697 fontDescriptionRun02.slantDefined = false;
3698 fontDescriptionRun02.sizeDefined = false;
3700 FontDescriptionRun fontDescriptionRun03;
3701 fontDescriptionRun03.characterRun.characterIndex = 24u;
3702 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3703 fontDescriptionRun03.familyLength = fontArabic.size();
3704 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3705 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3706 fontDescriptionRun03.familyDefined = true;
3707 fontDescriptionRun03.weightDefined = false;
3708 fontDescriptionRun03.widthDefined = false;
3709 fontDescriptionRun03.slantDefined = false;
3710 fontDescriptionRun03.sizeDefined = false;
3712 FontDescriptionRun fontDescriptionRun04;
3713 fontDescriptionRun04.characterRun.characterIndex = 38u;
3714 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3715 fontDescriptionRun04.familyLength = fontHebrew.size();
3716 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3717 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3718 fontDescriptionRun04.familyDefined = true;
3719 fontDescriptionRun04.weightDefined = false;
3720 fontDescriptionRun04.widthDefined = false;
3721 fontDescriptionRun04.slantDefined = false;
3722 fontDescriptionRun04.sizeDefined = false;
3724 FontDescriptionRun fontDescriptionRun05;
3725 fontDescriptionRun05.characterRun.characterIndex = 48u;
3726 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3727 fontDescriptionRun05.familyLength = fontHebrew.size();
3728 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3729 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3730 fontDescriptionRun05.familyDefined = true;
3731 fontDescriptionRun05.weightDefined = false;
3732 fontDescriptionRun05.widthDefined = false;
3733 fontDescriptionRun05.slantDefined = false;
3734 fontDescriptionRun05.sizeDefined = false;
3736 FontDescriptionRun fontDescriptionRun06;
3737 fontDescriptionRun06.characterRun.characterIndex = 58u;
3738 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3739 fontDescriptionRun06.familyLength = fontArabic.size();
3740 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3741 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3742 fontDescriptionRun06.familyDefined = true;
3743 fontDescriptionRun06.weightDefined = false;
3744 fontDescriptionRun06.widthDefined = false;
3745 fontDescriptionRun06.slantDefined = false;
3746 fontDescriptionRun06.sizeDefined = false;
3748 Vector<FontDescriptionRun> fontDescriptionRuns;
3749 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3750 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3751 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3752 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3753 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3754 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3758 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, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
3759 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 12.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,
3760 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.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,
3761 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3762 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3763 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3766 Size textArea( 100.f, 300.f );
3768 ReLayoutRightToLeftLinesData data =
3770 "Paragraphs with right to left text.",
3771 "שלום עולם مرحبا بالعالم\n"
3772 "مرحبا بالعالم שלום עולם\n"
3773 "שלום עולם مرحبا بالعالم.",
3776 fontDescriptionRuns.Begin(),
3783 if( !ReLayoutRightToLeftLinesTest( data ) )
3785 tet_result(TET_FAIL);
3788 tet_result(TET_PASS);
3792 int UtcDaliTextReorderLayout03(void)
3794 ToolkitTestApplication application;
3795 tet_infoline(" UtcDaliTextReorderLayout03");
3797 // Reorder lines of the mid paragraph.
3799 const std::string fontHebrew( "TizenSansHebrew" );
3800 const std::string fontArabic( "TizenSansArabic" );
3802 // Set a known font description
3803 FontDescriptionRun fontDescriptionRun01;
3804 fontDescriptionRun01.characterRun.characterIndex = 0u;
3805 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3806 fontDescriptionRun01.familyLength = fontHebrew.size();
3807 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3808 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3809 fontDescriptionRun01.familyDefined = true;
3810 fontDescriptionRun01.weightDefined = false;
3811 fontDescriptionRun01.widthDefined = false;
3812 fontDescriptionRun01.slantDefined = false;
3813 fontDescriptionRun01.sizeDefined = false;
3815 FontDescriptionRun fontDescriptionRun02;
3816 fontDescriptionRun02.characterRun.characterIndex = 10u;
3817 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3818 fontDescriptionRun02.familyLength = fontArabic.size();
3819 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3820 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3821 fontDescriptionRun02.familyDefined = true;
3822 fontDescriptionRun02.weightDefined = false;
3823 fontDescriptionRun02.widthDefined = false;
3824 fontDescriptionRun02.slantDefined = false;
3825 fontDescriptionRun02.sizeDefined = false;
3827 FontDescriptionRun fontDescriptionRun03;
3828 fontDescriptionRun03.characterRun.characterIndex = 24u;
3829 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3830 fontDescriptionRun03.familyLength = fontArabic.size();
3831 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3832 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3833 fontDescriptionRun03.familyDefined = true;
3834 fontDescriptionRun03.weightDefined = false;
3835 fontDescriptionRun03.widthDefined = false;
3836 fontDescriptionRun03.slantDefined = false;
3837 fontDescriptionRun03.sizeDefined = false;
3839 FontDescriptionRun fontDescriptionRun04;
3840 fontDescriptionRun04.characterRun.characterIndex = 38u;
3841 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3842 fontDescriptionRun04.familyLength = fontHebrew.size();
3843 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3844 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3845 fontDescriptionRun04.familyDefined = true;
3846 fontDescriptionRun04.weightDefined = false;
3847 fontDescriptionRun04.widthDefined = false;
3848 fontDescriptionRun04.slantDefined = false;
3849 fontDescriptionRun04.sizeDefined = false;
3851 FontDescriptionRun fontDescriptionRun05;
3852 fontDescriptionRun05.characterRun.characterIndex = 48u;
3853 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3854 fontDescriptionRun05.familyLength = fontHebrew.size();
3855 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3856 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3857 fontDescriptionRun05.familyDefined = true;
3858 fontDescriptionRun05.weightDefined = false;
3859 fontDescriptionRun05.widthDefined = false;
3860 fontDescriptionRun05.slantDefined = false;
3861 fontDescriptionRun05.sizeDefined = false;
3863 FontDescriptionRun fontDescriptionRun06;
3864 fontDescriptionRun06.characterRun.characterIndex = 58u;
3865 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3866 fontDescriptionRun06.familyLength = fontArabic.size();
3867 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3868 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3869 fontDescriptionRun06.familyDefined = true;
3870 fontDescriptionRun06.weightDefined = false;
3871 fontDescriptionRun06.widthDefined = false;
3872 fontDescriptionRun06.slantDefined = false;
3873 fontDescriptionRun06.sizeDefined = false;
3875 Vector<FontDescriptionRun> fontDescriptionRuns;
3876 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3877 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3878 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3879 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3880 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3881 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3885 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3886 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3887 86.f, -8.f, 81.f, -6.f, 74.f, -7.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, 51.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,
3888 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3889 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3890 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3893 Size textArea( 100.f, 300.f );
3895 ReLayoutRightToLeftLinesData data =
3897 "Paragraphs with right to left text.",
3898 "שלום עולם مرحبا بالعالم\n"
3899 "مرحبا بالعالم שלום עולם\n"
3900 "שלום עולם مرحبا بالعالم.",
3903 fontDescriptionRuns.Begin(),
3910 if( !ReLayoutRightToLeftLinesTest( data ) )
3912 tet_result(TET_FAIL);
3915 tet_result(TET_PASS);
3919 int UtcDaliTextReorderLayout04(void)
3921 ToolkitTestApplication application;
3922 tet_infoline(" UtcDaliTextReorderLayout04");
3924 // Reorder lines of the last paragraph.
3926 const std::string fontHebrew( "TizenSansHebrew" );
3927 const std::string fontArabic( "TizenSansArabic" );
3929 // Set a known font description
3930 FontDescriptionRun fontDescriptionRun01;
3931 fontDescriptionRun01.characterRun.characterIndex = 0u;
3932 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3933 fontDescriptionRun01.familyLength = fontHebrew.size();
3934 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3935 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3936 fontDescriptionRun01.familyDefined = true;
3937 fontDescriptionRun01.weightDefined = false;
3938 fontDescriptionRun01.widthDefined = false;
3939 fontDescriptionRun01.slantDefined = false;
3940 fontDescriptionRun01.sizeDefined = false;
3942 FontDescriptionRun fontDescriptionRun02;
3943 fontDescriptionRun02.characterRun.characterIndex = 10u;
3944 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3945 fontDescriptionRun02.familyLength = fontArabic.size();
3946 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3947 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3948 fontDescriptionRun02.familyDefined = true;
3949 fontDescriptionRun02.weightDefined = false;
3950 fontDescriptionRun02.widthDefined = false;
3951 fontDescriptionRun02.slantDefined = false;
3952 fontDescriptionRun02.sizeDefined = false;
3954 FontDescriptionRun fontDescriptionRun03;
3955 fontDescriptionRun03.characterRun.characterIndex = 24u;
3956 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3957 fontDescriptionRun03.familyLength = fontArabic.size();
3958 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3959 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3960 fontDescriptionRun03.familyDefined = true;
3961 fontDescriptionRun03.weightDefined = false;
3962 fontDescriptionRun03.widthDefined = false;
3963 fontDescriptionRun03.slantDefined = false;
3964 fontDescriptionRun03.sizeDefined = false;
3966 FontDescriptionRun fontDescriptionRun04;
3967 fontDescriptionRun04.characterRun.characterIndex = 38u;
3968 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3969 fontDescriptionRun04.familyLength = fontHebrew.size();
3970 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3971 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3972 fontDescriptionRun04.familyDefined = true;
3973 fontDescriptionRun04.weightDefined = false;
3974 fontDescriptionRun04.widthDefined = false;
3975 fontDescriptionRun04.slantDefined = false;
3976 fontDescriptionRun04.sizeDefined = false;
3978 FontDescriptionRun fontDescriptionRun05;
3979 fontDescriptionRun05.characterRun.characterIndex = 48u;
3980 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3981 fontDescriptionRun05.familyLength = fontHebrew.size();
3982 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3983 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3984 fontDescriptionRun05.familyDefined = true;
3985 fontDescriptionRun05.weightDefined = false;
3986 fontDescriptionRun05.widthDefined = false;
3987 fontDescriptionRun05.slantDefined = false;
3988 fontDescriptionRun05.sizeDefined = false;
3990 FontDescriptionRun fontDescriptionRun06;
3991 fontDescriptionRun06.characterRun.characterIndex = 58u;
3992 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3993 fontDescriptionRun06.familyLength = fontArabic.size();
3994 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3995 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3996 fontDescriptionRun06.familyDefined = true;
3997 fontDescriptionRun06.weightDefined = false;
3998 fontDescriptionRun06.widthDefined = false;
3999 fontDescriptionRun06.slantDefined = false;
4000 fontDescriptionRun06.sizeDefined = false;
4002 Vector<FontDescriptionRun> fontDescriptionRuns;
4003 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4004 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4005 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4006 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4007 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4008 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4012 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, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4013 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
4014 0.f, -8.f, 7.f, -6.f, 12.f, -7.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, 37.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,
4015 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4016 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, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
4017 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 17.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4020 Size textArea( 100.f, 300.f );
4022 ReLayoutRightToLeftLinesData data =
4024 "Paragraphs with right to left text.",
4025 "שלום עולם مرحبا بالعالم\n"
4026 "مرحبا بالعالم שלום עולם\n"
4027 "שלום עולם مرحبا بالعالم.",
4030 fontDescriptionRuns.Begin(),
4037 if( !ReLayoutRightToLeftLinesTest( data ) )
4039 tet_result(TET_FAIL);
4042 tet_result(TET_PASS);
4046 int UtcDaliTextAlign01(void)
4048 ToolkitTestApplication application;
4049 tet_infoline(" UtcDaliTextAlign01");
4051 // Calculate text alignment.
4053 const std::string fontLatin( "TizenSans" );
4054 const std::string fontHebrew( "TizenSansHebrew" );
4055 const std::string fontArabic( "TizenSansArabic" );
4057 // Set a known font description
4058 FontDescriptionRun fontDescriptionRun01;
4059 fontDescriptionRun01.characterRun.characterIndex = 0u;
4060 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4061 fontDescriptionRun01.familyLength = fontLatin.size();
4062 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4063 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4064 fontDescriptionRun01.familyDefined = true;
4065 fontDescriptionRun01.weightDefined = false;
4066 fontDescriptionRun01.widthDefined = false;
4067 fontDescriptionRun01.slantDefined = false;
4068 fontDescriptionRun01.sizeDefined = false;
4070 FontDescriptionRun fontDescriptionRun02;
4071 fontDescriptionRun02.characterRun.characterIndex = 12u;
4072 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4073 fontDescriptionRun02.familyLength = fontHebrew.size();
4074 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4075 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4076 fontDescriptionRun02.familyDefined = true;
4077 fontDescriptionRun02.weightDefined = false;
4078 fontDescriptionRun02.widthDefined = false;
4079 fontDescriptionRun02.slantDefined = false;
4080 fontDescriptionRun02.sizeDefined = false;
4082 FontDescriptionRun fontDescriptionRun03;
4083 fontDescriptionRun03.characterRun.characterIndex = 22u;
4084 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4085 fontDescriptionRun03.familyLength = fontArabic.size();
4086 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4087 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4088 fontDescriptionRun03.familyDefined = true;
4089 fontDescriptionRun03.weightDefined = false;
4090 fontDescriptionRun03.widthDefined = false;
4091 fontDescriptionRun03.slantDefined = false;
4092 fontDescriptionRun03.sizeDefined = false;
4094 FontDescriptionRun fontDescriptionRun04;
4095 fontDescriptionRun04.characterRun.characterIndex = 36u;
4096 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4097 fontDescriptionRun04.familyLength = fontLatin.size();
4098 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4099 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4100 fontDescriptionRun04.familyDefined = true;
4101 fontDescriptionRun04.weightDefined = false;
4102 fontDescriptionRun04.widthDefined = false;
4103 fontDescriptionRun04.slantDefined = false;
4104 fontDescriptionRun04.sizeDefined = false;
4106 FontDescriptionRun fontDescriptionRun05;
4107 fontDescriptionRun05.characterRun.characterIndex = 48u;
4108 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4109 fontDescriptionRun05.familyLength = fontLatin.size();
4110 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4111 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4112 fontDescriptionRun05.familyDefined = true;
4113 fontDescriptionRun05.weightDefined = false;
4114 fontDescriptionRun05.widthDefined = false;
4115 fontDescriptionRun05.slantDefined = false;
4116 fontDescriptionRun05.sizeDefined = false;
4118 FontDescriptionRun fontDescriptionRun06;
4119 fontDescriptionRun06.characterRun.characterIndex = 60u;
4120 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4121 fontDescriptionRun06.familyLength = fontArabic.size();
4122 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4123 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4124 fontDescriptionRun06.familyDefined = true;
4125 fontDescriptionRun06.weightDefined = false;
4126 fontDescriptionRun06.widthDefined = false;
4127 fontDescriptionRun06.slantDefined = false;
4128 fontDescriptionRun06.sizeDefined = false;
4130 Vector<FontDescriptionRun> fontDescriptionRuns;
4131 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4132 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4133 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4134 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4135 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4136 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4138 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4140 Size textArea( 100.f, 300.f );
4143 "Begin alignment for the first paragraph.",
4144 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4147 fontDescriptionRuns.Begin(),
4148 Text::HorizontalAlignment::BEGIN,
4149 Text::VerticalAlignment::TOP,
4156 if( !AlignTest( data ) )
4158 tet_result(TET_FAIL);
4161 tet_result(TET_PASS);
4165 int UtcDaliTextAlign02(void)
4167 ToolkitTestApplication application;
4168 tet_infoline(" UtcDaliTextAlign02");
4170 // Calculate text alignment.
4172 const std::string fontLatin( "TizenSans" );
4173 const std::string fontHebrew( "TizenSansHebrew" );
4174 const std::string fontArabic( "TizenSansArabic" );
4176 // Set a known font description
4177 FontDescriptionRun fontDescriptionRun01;
4178 fontDescriptionRun01.characterRun.characterIndex = 0u;
4179 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4180 fontDescriptionRun01.familyLength = fontLatin.size();
4181 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4182 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4183 fontDescriptionRun01.familyDefined = true;
4184 fontDescriptionRun01.weightDefined = false;
4185 fontDescriptionRun01.widthDefined = false;
4186 fontDescriptionRun01.slantDefined = false;
4187 fontDescriptionRun01.sizeDefined = false;
4189 FontDescriptionRun fontDescriptionRun02;
4190 fontDescriptionRun02.characterRun.characterIndex = 12u;
4191 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4192 fontDescriptionRun02.familyLength = fontHebrew.size();
4193 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4194 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4195 fontDescriptionRun02.familyDefined = true;
4196 fontDescriptionRun02.weightDefined = false;
4197 fontDescriptionRun02.widthDefined = false;
4198 fontDescriptionRun02.slantDefined = false;
4199 fontDescriptionRun02.sizeDefined = false;
4201 FontDescriptionRun fontDescriptionRun03;
4202 fontDescriptionRun03.characterRun.characterIndex = 22u;
4203 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4204 fontDescriptionRun03.familyLength = fontArabic.size();
4205 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4206 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4207 fontDescriptionRun03.familyDefined = true;
4208 fontDescriptionRun03.weightDefined = false;
4209 fontDescriptionRun03.widthDefined = false;
4210 fontDescriptionRun03.slantDefined = false;
4211 fontDescriptionRun03.sizeDefined = false;
4213 FontDescriptionRun fontDescriptionRun04;
4214 fontDescriptionRun04.characterRun.characterIndex = 36u;
4215 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4216 fontDescriptionRun04.familyLength = fontLatin.size();
4217 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4218 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4219 fontDescriptionRun04.familyDefined = true;
4220 fontDescriptionRun04.weightDefined = false;
4221 fontDescriptionRun04.widthDefined = false;
4222 fontDescriptionRun04.slantDefined = false;
4223 fontDescriptionRun04.sizeDefined = false;
4225 FontDescriptionRun fontDescriptionRun05;
4226 fontDescriptionRun05.characterRun.characterIndex = 48u;
4227 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4228 fontDescriptionRun05.familyLength = fontLatin.size();
4229 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4230 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4231 fontDescriptionRun05.familyDefined = true;
4232 fontDescriptionRun05.weightDefined = false;
4233 fontDescriptionRun05.widthDefined = false;
4234 fontDescriptionRun05.slantDefined = false;
4235 fontDescriptionRun05.sizeDefined = false;
4237 FontDescriptionRun fontDescriptionRun06;
4238 fontDescriptionRun06.characterRun.characterIndex = 60u;
4239 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4240 fontDescriptionRun06.familyLength = fontArabic.size();
4241 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4242 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4243 fontDescriptionRun06.familyDefined = true;
4244 fontDescriptionRun06.weightDefined = false;
4245 fontDescriptionRun06.widthDefined = false;
4246 fontDescriptionRun06.slantDefined = false;
4247 fontDescriptionRun06.sizeDefined = false;
4249 Vector<FontDescriptionRun> fontDescriptionRuns;
4250 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4251 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4252 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4253 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4254 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4255 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4257 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4259 Size textArea( 100.f, 300.f );
4262 "Begin alignment for the mid paragraph.",
4263 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4266 fontDescriptionRuns.Begin(),
4267 Text::HorizontalAlignment::BEGIN,
4268 Text::VerticalAlignment::TOP,
4275 if( !AlignTest( data ) )
4277 tet_result(TET_FAIL);
4280 tet_result(TET_PASS);
4284 int UtcDaliTextAlign03(void)
4286 ToolkitTestApplication application;
4287 tet_infoline(" UtcDaliTextAlign03");
4289 // Calculate text alignment.
4291 const std::string fontLatin( "TizenSans" );
4292 const std::string fontHebrew( "TizenSansHebrew" );
4293 const std::string fontArabic( "TizenSansArabic" );
4295 // Set a known font description
4296 FontDescriptionRun fontDescriptionRun01;
4297 fontDescriptionRun01.characterRun.characterIndex = 0u;
4298 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4299 fontDescriptionRun01.familyLength = fontLatin.size();
4300 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4301 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4302 fontDescriptionRun01.familyDefined = true;
4303 fontDescriptionRun01.weightDefined = false;
4304 fontDescriptionRun01.widthDefined = false;
4305 fontDescriptionRun01.slantDefined = false;
4306 fontDescriptionRun01.sizeDefined = false;
4308 FontDescriptionRun fontDescriptionRun02;
4309 fontDescriptionRun02.characterRun.characterIndex = 12u;
4310 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4311 fontDescriptionRun02.familyLength = fontHebrew.size();
4312 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4313 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4314 fontDescriptionRun02.familyDefined = true;
4315 fontDescriptionRun02.weightDefined = false;
4316 fontDescriptionRun02.widthDefined = false;
4317 fontDescriptionRun02.slantDefined = false;
4318 fontDescriptionRun02.sizeDefined = false;
4320 FontDescriptionRun fontDescriptionRun03;
4321 fontDescriptionRun03.characterRun.characterIndex = 22u;
4322 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4323 fontDescriptionRun03.familyLength = fontArabic.size();
4324 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4325 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4326 fontDescriptionRun03.familyDefined = true;
4327 fontDescriptionRun03.weightDefined = false;
4328 fontDescriptionRun03.widthDefined = false;
4329 fontDescriptionRun03.slantDefined = false;
4330 fontDescriptionRun03.sizeDefined = false;
4332 FontDescriptionRun fontDescriptionRun04;
4333 fontDescriptionRun04.characterRun.characterIndex = 36u;
4334 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4335 fontDescriptionRun04.familyLength = fontLatin.size();
4336 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4337 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4338 fontDescriptionRun04.familyDefined = true;
4339 fontDescriptionRun04.weightDefined = false;
4340 fontDescriptionRun04.widthDefined = false;
4341 fontDescriptionRun04.slantDefined = false;
4342 fontDescriptionRun04.sizeDefined = false;
4344 FontDescriptionRun fontDescriptionRun05;
4345 fontDescriptionRun05.characterRun.characterIndex = 48u;
4346 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4347 fontDescriptionRun05.familyLength = fontLatin.size();
4348 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4349 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4350 fontDescriptionRun05.familyDefined = true;
4351 fontDescriptionRun05.weightDefined = false;
4352 fontDescriptionRun05.widthDefined = false;
4353 fontDescriptionRun05.slantDefined = false;
4354 fontDescriptionRun05.sizeDefined = false;
4356 FontDescriptionRun fontDescriptionRun06;
4357 fontDescriptionRun06.characterRun.characterIndex = 60u;
4358 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4359 fontDescriptionRun06.familyLength = fontArabic.size();
4360 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4361 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4362 fontDescriptionRun06.familyDefined = true;
4363 fontDescriptionRun06.weightDefined = false;
4364 fontDescriptionRun06.widthDefined = false;
4365 fontDescriptionRun06.slantDefined = false;
4366 fontDescriptionRun06.sizeDefined = false;
4368 Vector<FontDescriptionRun> fontDescriptionRuns;
4369 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4370 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4371 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4372 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4373 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4374 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4376 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4378 Size textArea( 100.f, 300.f );
4381 "Begin alignment for the last paragraph.",
4382 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4385 fontDescriptionRuns.Begin(),
4386 Text::HorizontalAlignment::BEGIN,
4387 Text::VerticalAlignment::TOP,
4394 if( !AlignTest( data ) )
4396 tet_result(TET_FAIL);
4399 tet_result(TET_PASS);
4403 int UtcDaliTextAlign04(void)
4405 ToolkitTestApplication application;
4406 tet_infoline(" UtcDaliTextAlign04");
4408 // Calculate text alignment.
4410 const std::string fontLatin( "TizenSans" );
4411 const std::string fontHebrew( "TizenSansHebrew" );
4412 const std::string fontArabic( "TizenSansArabic" );
4414 // Set a known font description
4415 FontDescriptionRun fontDescriptionRun01;
4416 fontDescriptionRun01.characterRun.characterIndex = 0u;
4417 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4418 fontDescriptionRun01.familyLength = fontLatin.size();
4419 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4420 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4421 fontDescriptionRun01.familyDefined = true;
4422 fontDescriptionRun01.weightDefined = false;
4423 fontDescriptionRun01.widthDefined = false;
4424 fontDescriptionRun01.slantDefined = false;
4425 fontDescriptionRun01.sizeDefined = false;
4427 FontDescriptionRun fontDescriptionRun02;
4428 fontDescriptionRun02.characterRun.characterIndex = 12u;
4429 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4430 fontDescriptionRun02.familyLength = fontHebrew.size();
4431 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4432 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4433 fontDescriptionRun02.familyDefined = true;
4434 fontDescriptionRun02.weightDefined = false;
4435 fontDescriptionRun02.widthDefined = false;
4436 fontDescriptionRun02.slantDefined = false;
4437 fontDescriptionRun02.sizeDefined = false;
4439 FontDescriptionRun fontDescriptionRun03;
4440 fontDescriptionRun03.characterRun.characterIndex = 22u;
4441 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4442 fontDescriptionRun03.familyLength = fontArabic.size();
4443 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4444 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4445 fontDescriptionRun03.familyDefined = true;
4446 fontDescriptionRun03.weightDefined = false;
4447 fontDescriptionRun03.widthDefined = false;
4448 fontDescriptionRun03.slantDefined = false;
4449 fontDescriptionRun03.sizeDefined = false;
4451 FontDescriptionRun fontDescriptionRun04;
4452 fontDescriptionRun04.characterRun.characterIndex = 36u;
4453 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4454 fontDescriptionRun04.familyLength = fontLatin.size();
4455 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4456 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4457 fontDescriptionRun04.familyDefined = true;
4458 fontDescriptionRun04.weightDefined = false;
4459 fontDescriptionRun04.widthDefined = false;
4460 fontDescriptionRun04.slantDefined = false;
4461 fontDescriptionRun04.sizeDefined = false;
4463 FontDescriptionRun fontDescriptionRun05;
4464 fontDescriptionRun05.characterRun.characterIndex = 48u;
4465 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4466 fontDescriptionRun05.familyLength = fontLatin.size();
4467 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4468 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4469 fontDescriptionRun05.familyDefined = true;
4470 fontDescriptionRun05.weightDefined = false;
4471 fontDescriptionRun05.widthDefined = false;
4472 fontDescriptionRun05.slantDefined = false;
4473 fontDescriptionRun05.sizeDefined = false;
4475 FontDescriptionRun fontDescriptionRun06;
4476 fontDescriptionRun06.characterRun.characterIndex = 60u;
4477 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4478 fontDescriptionRun06.familyLength = fontArabic.size();
4479 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4480 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4481 fontDescriptionRun06.familyDefined = true;
4482 fontDescriptionRun06.weightDefined = false;
4483 fontDescriptionRun06.widthDefined = false;
4484 fontDescriptionRun06.slantDefined = false;
4485 fontDescriptionRun06.sizeDefined = false;
4487 Vector<FontDescriptionRun> fontDescriptionRuns;
4488 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4489 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4490 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4491 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4492 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4493 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4495 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4497 Size textArea( 100.f, 300.f );
4500 "Center alignment for the first paragraph.",
4501 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4504 fontDescriptionRuns.Begin(),
4505 Text::HorizontalAlignment::CENTER,
4506 Text::VerticalAlignment::TOP,
4513 if( !AlignTest( data ) )
4515 tet_result(TET_FAIL);
4518 tet_result(TET_PASS);
4522 int UtcDaliTextAlign05(void)
4524 ToolkitTestApplication application;
4525 tet_infoline(" UtcDaliTextAlign05");
4527 // Calculate text alignment.
4529 const std::string fontLatin( "TizenSans" );
4530 const std::string fontHebrew( "TizenSansHebrew" );
4531 const std::string fontArabic( "TizenSansArabic" );
4533 // Set a known font description
4534 FontDescriptionRun fontDescriptionRun01;
4535 fontDescriptionRun01.characterRun.characterIndex = 0u;
4536 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4537 fontDescriptionRun01.familyLength = fontLatin.size();
4538 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4539 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4540 fontDescriptionRun01.familyDefined = true;
4541 fontDescriptionRun01.weightDefined = false;
4542 fontDescriptionRun01.widthDefined = false;
4543 fontDescriptionRun01.slantDefined = false;
4544 fontDescriptionRun01.sizeDefined = false;
4546 FontDescriptionRun fontDescriptionRun02;
4547 fontDescriptionRun02.characterRun.characterIndex = 12u;
4548 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4549 fontDescriptionRun02.familyLength = fontHebrew.size();
4550 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4551 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4552 fontDescriptionRun02.familyDefined = true;
4553 fontDescriptionRun02.weightDefined = false;
4554 fontDescriptionRun02.widthDefined = false;
4555 fontDescriptionRun02.slantDefined = false;
4556 fontDescriptionRun02.sizeDefined = false;
4558 FontDescriptionRun fontDescriptionRun03;
4559 fontDescriptionRun03.characterRun.characterIndex = 22u;
4560 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4561 fontDescriptionRun03.familyLength = fontArabic.size();
4562 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4563 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4564 fontDescriptionRun03.familyDefined = true;
4565 fontDescriptionRun03.weightDefined = false;
4566 fontDescriptionRun03.widthDefined = false;
4567 fontDescriptionRun03.slantDefined = false;
4568 fontDescriptionRun03.sizeDefined = false;
4570 FontDescriptionRun fontDescriptionRun04;
4571 fontDescriptionRun04.characterRun.characterIndex = 36u;
4572 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4573 fontDescriptionRun04.familyLength = fontLatin.size();
4574 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4575 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4576 fontDescriptionRun04.familyDefined = true;
4577 fontDescriptionRun04.weightDefined = false;
4578 fontDescriptionRun04.widthDefined = false;
4579 fontDescriptionRun04.slantDefined = false;
4580 fontDescriptionRun04.sizeDefined = false;
4582 FontDescriptionRun fontDescriptionRun05;
4583 fontDescriptionRun05.characterRun.characterIndex = 48u;
4584 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4585 fontDescriptionRun05.familyLength = fontLatin.size();
4586 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4587 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4588 fontDescriptionRun05.familyDefined = true;
4589 fontDescriptionRun05.weightDefined = false;
4590 fontDescriptionRun05.widthDefined = false;
4591 fontDescriptionRun05.slantDefined = false;
4592 fontDescriptionRun05.sizeDefined = false;
4594 FontDescriptionRun fontDescriptionRun06;
4595 fontDescriptionRun06.characterRun.characterIndex = 60u;
4596 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4597 fontDescriptionRun06.familyLength = fontArabic.size();
4598 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4599 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4600 fontDescriptionRun06.familyDefined = true;
4601 fontDescriptionRun06.weightDefined = false;
4602 fontDescriptionRun06.widthDefined = false;
4603 fontDescriptionRun06.slantDefined = false;
4604 fontDescriptionRun06.sizeDefined = false;
4606 Vector<FontDescriptionRun> fontDescriptionRuns;
4607 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4608 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4609 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4610 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4611 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4612 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4614 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4616 Size textArea( 100.f, 300.f );
4619 "Center alignment for the mid paragraph.",
4620 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4623 fontDescriptionRuns.Begin(),
4624 Text::HorizontalAlignment::CENTER,
4625 Text::VerticalAlignment::TOP,
4632 if( !AlignTest( data ) )
4634 tet_result(TET_FAIL);
4637 tet_result(TET_PASS);
4641 int UtcDaliTextAlign06(void)
4643 ToolkitTestApplication application;
4644 tet_infoline(" UtcDaliTextAlign06");
4646 // Calculate text alignment.
4648 const std::string fontLatin( "TizenSans" );
4649 const std::string fontHebrew( "TizenSansHebrew" );
4650 const std::string fontArabic( "TizenSansArabic" );
4652 // Set a known font description
4653 FontDescriptionRun fontDescriptionRun01;
4654 fontDescriptionRun01.characterRun.characterIndex = 0u;
4655 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4656 fontDescriptionRun01.familyLength = fontLatin.size();
4657 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4658 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4659 fontDescriptionRun01.familyDefined = true;
4660 fontDescriptionRun01.weightDefined = false;
4661 fontDescriptionRun01.widthDefined = false;
4662 fontDescriptionRun01.slantDefined = false;
4663 fontDescriptionRun01.sizeDefined = false;
4665 FontDescriptionRun fontDescriptionRun02;
4666 fontDescriptionRun02.characterRun.characterIndex = 12u;
4667 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4668 fontDescriptionRun02.familyLength = fontHebrew.size();
4669 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4670 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4671 fontDescriptionRun02.familyDefined = true;
4672 fontDescriptionRun02.weightDefined = false;
4673 fontDescriptionRun02.widthDefined = false;
4674 fontDescriptionRun02.slantDefined = false;
4675 fontDescriptionRun02.sizeDefined = false;
4677 FontDescriptionRun fontDescriptionRun03;
4678 fontDescriptionRun03.characterRun.characterIndex = 22u;
4679 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4680 fontDescriptionRun03.familyLength = fontArabic.size();
4681 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4682 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4683 fontDescriptionRun03.familyDefined = true;
4684 fontDescriptionRun03.weightDefined = false;
4685 fontDescriptionRun03.widthDefined = false;
4686 fontDescriptionRun03.slantDefined = false;
4687 fontDescriptionRun03.sizeDefined = false;
4689 FontDescriptionRun fontDescriptionRun04;
4690 fontDescriptionRun04.characterRun.characterIndex = 36u;
4691 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4692 fontDescriptionRun04.familyLength = fontLatin.size();
4693 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4694 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4695 fontDescriptionRun04.familyDefined = true;
4696 fontDescriptionRun04.weightDefined = false;
4697 fontDescriptionRun04.widthDefined = false;
4698 fontDescriptionRun04.slantDefined = false;
4699 fontDescriptionRun04.sizeDefined = false;
4701 FontDescriptionRun fontDescriptionRun05;
4702 fontDescriptionRun05.characterRun.characterIndex = 48u;
4703 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4704 fontDescriptionRun05.familyLength = fontLatin.size();
4705 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4706 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4707 fontDescriptionRun05.familyDefined = true;
4708 fontDescriptionRun05.weightDefined = false;
4709 fontDescriptionRun05.widthDefined = false;
4710 fontDescriptionRun05.slantDefined = false;
4711 fontDescriptionRun05.sizeDefined = false;
4713 FontDescriptionRun fontDescriptionRun06;
4714 fontDescriptionRun06.characterRun.characterIndex = 60u;
4715 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4716 fontDescriptionRun06.familyLength = fontArabic.size();
4717 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4718 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4719 fontDescriptionRun06.familyDefined = true;
4720 fontDescriptionRun06.weightDefined = false;
4721 fontDescriptionRun06.widthDefined = false;
4722 fontDescriptionRun06.slantDefined = false;
4723 fontDescriptionRun06.sizeDefined = false;
4725 Vector<FontDescriptionRun> fontDescriptionRuns;
4726 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4727 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4728 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4729 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4730 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4731 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4733 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4735 Size textArea( 100.f, 300.f );
4738 "Center alignment for the last paragraph.",
4739 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4742 fontDescriptionRuns.Begin(),
4743 Text::HorizontalAlignment::CENTER,
4744 Text::VerticalAlignment::TOP,
4751 if( !AlignTest( data ) )
4753 tet_result(TET_FAIL);
4756 tet_result(TET_PASS);
4760 int UtcDaliTextAlign07(void)
4762 ToolkitTestApplication application;
4763 tet_infoline(" UtcDaliTextAlign07");
4765 // Calculate text alignment.
4767 const std::string fontLatin( "TizenSans" );
4768 const std::string fontHebrew( "TizenSansHebrew" );
4769 const std::string fontArabic( "TizenSansArabic" );
4771 // Set a known font description
4772 FontDescriptionRun fontDescriptionRun01;
4773 fontDescriptionRun01.characterRun.characterIndex = 0u;
4774 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4775 fontDescriptionRun01.familyLength = fontLatin.size();
4776 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4777 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4778 fontDescriptionRun01.familyDefined = true;
4779 fontDescriptionRun01.weightDefined = false;
4780 fontDescriptionRun01.widthDefined = false;
4781 fontDescriptionRun01.slantDefined = false;
4782 fontDescriptionRun01.sizeDefined = false;
4784 FontDescriptionRun fontDescriptionRun02;
4785 fontDescriptionRun02.characterRun.characterIndex = 12u;
4786 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4787 fontDescriptionRun02.familyLength = fontHebrew.size();
4788 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4789 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4790 fontDescriptionRun02.familyDefined = true;
4791 fontDescriptionRun02.weightDefined = false;
4792 fontDescriptionRun02.widthDefined = false;
4793 fontDescriptionRun02.slantDefined = false;
4794 fontDescriptionRun02.sizeDefined = false;
4796 FontDescriptionRun fontDescriptionRun03;
4797 fontDescriptionRun03.characterRun.characterIndex = 22u;
4798 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4799 fontDescriptionRun03.familyLength = fontArabic.size();
4800 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4801 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4802 fontDescriptionRun03.familyDefined = true;
4803 fontDescriptionRun03.weightDefined = false;
4804 fontDescriptionRun03.widthDefined = false;
4805 fontDescriptionRun03.slantDefined = false;
4806 fontDescriptionRun03.sizeDefined = false;
4808 FontDescriptionRun fontDescriptionRun04;
4809 fontDescriptionRun04.characterRun.characterIndex = 36u;
4810 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4811 fontDescriptionRun04.familyLength = fontLatin.size();
4812 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4813 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4814 fontDescriptionRun04.familyDefined = true;
4815 fontDescriptionRun04.weightDefined = false;
4816 fontDescriptionRun04.widthDefined = false;
4817 fontDescriptionRun04.slantDefined = false;
4818 fontDescriptionRun04.sizeDefined = false;
4820 FontDescriptionRun fontDescriptionRun05;
4821 fontDescriptionRun05.characterRun.characterIndex = 48u;
4822 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4823 fontDescriptionRun05.familyLength = fontLatin.size();
4824 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4825 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4826 fontDescriptionRun05.familyDefined = true;
4827 fontDescriptionRun05.weightDefined = false;
4828 fontDescriptionRun05.widthDefined = false;
4829 fontDescriptionRun05.slantDefined = false;
4830 fontDescriptionRun05.sizeDefined = false;
4832 FontDescriptionRun fontDescriptionRun06;
4833 fontDescriptionRun06.characterRun.characterIndex = 60u;
4834 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4835 fontDescriptionRun06.familyLength = fontArabic.size();
4836 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4837 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4838 fontDescriptionRun06.familyDefined = true;
4839 fontDescriptionRun06.weightDefined = false;
4840 fontDescriptionRun06.widthDefined = false;
4841 fontDescriptionRun06.slantDefined = false;
4842 fontDescriptionRun06.sizeDefined = false;
4844 Vector<FontDescriptionRun> fontDescriptionRuns;
4845 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4846 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4847 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4848 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4849 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4850 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4852 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4854 Size textArea( 100.f, 300.f );
4857 "End alignment for the first paragraph.",
4858 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4861 fontDescriptionRuns.Begin(),
4862 Text::HorizontalAlignment::END,
4863 Text::VerticalAlignment::TOP,
4870 if( !AlignTest( data ) )
4872 tet_result(TET_FAIL);
4875 tet_result(TET_PASS);
4879 int UtcDaliTextAlign08(void)
4881 ToolkitTestApplication application;
4882 tet_infoline(" UtcDaliTextAlign08");
4884 // Calculate text alignment.
4886 const std::string fontLatin( "TizenSans" );
4887 const std::string fontHebrew( "TizenSansHebrew" );
4888 const std::string fontArabic( "TizenSansArabic" );
4890 // Set a known font description
4891 FontDescriptionRun fontDescriptionRun01;
4892 fontDescriptionRun01.characterRun.characterIndex = 0u;
4893 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4894 fontDescriptionRun01.familyLength = fontLatin.size();
4895 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4896 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4897 fontDescriptionRun01.familyDefined = true;
4898 fontDescriptionRun01.weightDefined = false;
4899 fontDescriptionRun01.widthDefined = false;
4900 fontDescriptionRun01.slantDefined = false;
4901 fontDescriptionRun01.sizeDefined = false;
4903 FontDescriptionRun fontDescriptionRun02;
4904 fontDescriptionRun02.characterRun.characterIndex = 12u;
4905 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4906 fontDescriptionRun02.familyLength = fontHebrew.size();
4907 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4908 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4909 fontDescriptionRun02.familyDefined = true;
4910 fontDescriptionRun02.weightDefined = false;
4911 fontDescriptionRun02.widthDefined = false;
4912 fontDescriptionRun02.slantDefined = false;
4913 fontDescriptionRun02.sizeDefined = false;
4915 FontDescriptionRun fontDescriptionRun03;
4916 fontDescriptionRun03.characterRun.characterIndex = 22u;
4917 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4918 fontDescriptionRun03.familyLength = fontArabic.size();
4919 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4920 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4921 fontDescriptionRun03.familyDefined = true;
4922 fontDescriptionRun03.weightDefined = false;
4923 fontDescriptionRun03.widthDefined = false;
4924 fontDescriptionRun03.slantDefined = false;
4925 fontDescriptionRun03.sizeDefined = false;
4927 FontDescriptionRun fontDescriptionRun04;
4928 fontDescriptionRun04.characterRun.characterIndex = 36u;
4929 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4930 fontDescriptionRun04.familyLength = fontLatin.size();
4931 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4932 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4933 fontDescriptionRun04.familyDefined = true;
4934 fontDescriptionRun04.weightDefined = false;
4935 fontDescriptionRun04.widthDefined = false;
4936 fontDescriptionRun04.slantDefined = false;
4937 fontDescriptionRun04.sizeDefined = false;
4939 FontDescriptionRun fontDescriptionRun05;
4940 fontDescriptionRun05.characterRun.characterIndex = 48u;
4941 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4942 fontDescriptionRun05.familyLength = fontLatin.size();
4943 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4944 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4945 fontDescriptionRun05.familyDefined = true;
4946 fontDescriptionRun05.weightDefined = false;
4947 fontDescriptionRun05.widthDefined = false;
4948 fontDescriptionRun05.slantDefined = false;
4949 fontDescriptionRun05.sizeDefined = false;
4951 FontDescriptionRun fontDescriptionRun06;
4952 fontDescriptionRun06.characterRun.characterIndex = 60u;
4953 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4954 fontDescriptionRun06.familyLength = fontArabic.size();
4955 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4956 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4957 fontDescriptionRun06.familyDefined = true;
4958 fontDescriptionRun06.weightDefined = false;
4959 fontDescriptionRun06.widthDefined = false;
4960 fontDescriptionRun06.slantDefined = false;
4961 fontDescriptionRun06.sizeDefined = false;
4963 Vector<FontDescriptionRun> fontDescriptionRuns;
4964 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4965 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4966 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4967 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4968 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4969 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4971 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
4973 Size textArea( 100.f, 300.f );
4976 "End alignment for the mid paragraph.",
4977 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4980 fontDescriptionRuns.Begin(),
4981 Text::HorizontalAlignment::END,
4982 Text::VerticalAlignment::TOP,
4989 if( !AlignTest( data ) )
4991 tet_result(TET_FAIL);
4994 tet_result(TET_PASS);
4998 int UtcDaliTextAlign09(void)
5000 ToolkitTestApplication application;
5001 tet_infoline(" UtcDaliTextAlign09");
5003 // Calculate text alignment.
5005 const std::string fontLatin( "TizenSans" );
5006 const std::string fontHebrew( "TizenSansHebrew" );
5007 const std::string fontArabic( "TizenSansArabic" );
5009 // Set a known font description
5010 FontDescriptionRun fontDescriptionRun01;
5011 fontDescriptionRun01.characterRun.characterIndex = 0u;
5012 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5013 fontDescriptionRun01.familyLength = fontLatin.size();
5014 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5015 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5016 fontDescriptionRun01.familyDefined = true;
5017 fontDescriptionRun01.weightDefined = false;
5018 fontDescriptionRun01.widthDefined = false;
5019 fontDescriptionRun01.slantDefined = false;
5020 fontDescriptionRun01.sizeDefined = false;
5022 FontDescriptionRun fontDescriptionRun02;
5023 fontDescriptionRun02.characterRun.characterIndex = 12u;
5024 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5025 fontDescriptionRun02.familyLength = fontHebrew.size();
5026 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5027 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5028 fontDescriptionRun02.familyDefined = true;
5029 fontDescriptionRun02.weightDefined = false;
5030 fontDescriptionRun02.widthDefined = false;
5031 fontDescriptionRun02.slantDefined = false;
5032 fontDescriptionRun02.sizeDefined = false;
5034 FontDescriptionRun fontDescriptionRun03;
5035 fontDescriptionRun03.characterRun.characterIndex = 22u;
5036 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5037 fontDescriptionRun03.familyLength = fontArabic.size();
5038 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5039 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5040 fontDescriptionRun03.familyDefined = true;
5041 fontDescriptionRun03.weightDefined = false;
5042 fontDescriptionRun03.widthDefined = false;
5043 fontDescriptionRun03.slantDefined = false;
5044 fontDescriptionRun03.sizeDefined = false;
5046 FontDescriptionRun fontDescriptionRun04;
5047 fontDescriptionRun04.characterRun.characterIndex = 36u;
5048 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5049 fontDescriptionRun04.familyLength = fontLatin.size();
5050 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5051 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5052 fontDescriptionRun04.familyDefined = true;
5053 fontDescriptionRun04.weightDefined = false;
5054 fontDescriptionRun04.widthDefined = false;
5055 fontDescriptionRun04.slantDefined = false;
5056 fontDescriptionRun04.sizeDefined = false;
5058 FontDescriptionRun fontDescriptionRun05;
5059 fontDescriptionRun05.characterRun.characterIndex = 48u;
5060 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5061 fontDescriptionRun05.familyLength = fontLatin.size();
5062 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5063 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5064 fontDescriptionRun05.familyDefined = true;
5065 fontDescriptionRun05.weightDefined = false;
5066 fontDescriptionRun05.widthDefined = false;
5067 fontDescriptionRun05.slantDefined = false;
5068 fontDescriptionRun05.sizeDefined = false;
5070 FontDescriptionRun fontDescriptionRun06;
5071 fontDescriptionRun06.characterRun.characterIndex = 60u;
5072 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5073 fontDescriptionRun06.familyLength = fontArabic.size();
5074 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5075 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5076 fontDescriptionRun06.familyDefined = true;
5077 fontDescriptionRun06.weightDefined = false;
5078 fontDescriptionRun06.widthDefined = false;
5079 fontDescriptionRun06.slantDefined = false;
5080 fontDescriptionRun06.sizeDefined = false;
5082 Vector<FontDescriptionRun> fontDescriptionRuns;
5083 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5084 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5085 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5086 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5087 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5088 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5090 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5092 Size textArea( 100.f, 300.f );
5095 "End alignment for the last paragraph.",
5096 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5099 fontDescriptionRuns.Begin(),
5100 Text::HorizontalAlignment::END,
5101 Text::VerticalAlignment::TOP,
5108 if( !AlignTest( data ) )
5110 tet_result(TET_FAIL);
5113 tet_result(TET_PASS);
5117 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5119 ToolkitTestApplication application;
5120 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5122 Layout::Engine engine;
5123 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5125 engine.SetDefaultLineSpacing( 10.f );
5126 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5128 tet_result(TET_PASS);