2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
115 // 2) Clear the layout.
116 Vector<LineRun>& lines = visualModel->mLines;
118 const Length numberOfCharacters = logicalModel->mText.Count();
119 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
120 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
121 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
123 LineIndex startRemoveIndex = 0u;
125 if( 0u != lines.Count() )
127 startRemoveIndex = lines.Count();
128 LineIndex endRemoveIndex = startRemoveIndex;
129 ClearGlyphRuns( data.startIndex,
130 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
135 // Update the character runs of the lines.
136 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
137 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
138 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
139 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
140 ClearCharacterRuns( startCharacterIndex,
141 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
146 lines.Erase( lines.Begin() + startRemoveIndex,
147 lines.Begin() + endRemoveIndex );
150 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
152 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
153 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
156 Layout::Engine engine;
157 engine.SetMetrics( metrics );
158 engine.SetLayout( data.layout );
160 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 float outlineWidth = visualModel->GetOutlineWidth();
163 Layout::Parameters layoutParameters( data.textArea,
164 logicalModel->mText.Begin(),
165 logicalModel->mLineBreakInfo.Begin(),
166 logicalModel->mWordBreakInfo.Begin(),
167 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
168 visualModel->mGlyphs.Begin(),
169 visualModel->mGlyphsToCharacters.Begin(),
170 visualModel->mCharactersPerGlyph.Begin(),
171 visualModel->mCharactersToGlyph.Begin(),
172 visualModel->mGlyphsPerCharacter.Begin(),
174 Text::HorizontalAlignment::BEGIN,
175 Text::LineWrap::WORD,
179 layoutParameters.isLastNewParagraph = isLastNewParagraph;
181 // The initial glyph and the number of glyphs to layout.
182 layoutParameters.startGlyphIndex = data.startIndex;
183 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
184 layoutParameters.startLineIndex = startRemoveIndex;
185 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
187 layoutSize = Vector2::ZERO;
189 const bool updated = engine.LayoutText( layoutParameters,
195 // 4) Compare the results.
197 if( updated != data.updated )
199 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
203 if( layoutSize != data.layoutSize )
205 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
209 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
211 const Vector2& position = *( glyphPositions.Begin() + index );
213 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
215 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
218 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
220 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
225 if( lines.Count() != data.numberOfLines )
227 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
231 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
233 const LineRun& line = *( lines.Begin() + index );
234 const LineRun& expectedLine = *( data.lines + index );
236 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
238 std::cout << " Different line info for line : " << index << std::endl;
240 std::cout << " expected" << std::endl;
241 Print( expectedLine );
244 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
246 std::cout << " Different line info for line : " << index << std::endl;
248 std::cout << " expected" << std::endl;
249 Print( expectedLine );
253 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
255 std::cout << " Different line info for line : " << index << std::endl;
257 std::cout << " expected" << std::endl;
258 Print( expectedLine );
261 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
263 std::cout << " Different line info for line : " << index << std::endl;
265 std::cout << " expected" << std::endl;
266 Print( expectedLine );
270 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
272 std::cout << " Different line info for line : " << index << std::endl;
274 std::cout << " expected" << std::endl;
275 Print( expectedLine );
279 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
281 std::cout << " Different line info for line : " << index << std::endl;
283 std::cout << " expected" << std::endl;
284 Print( expectedLine );
288 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
290 std::cout << " Different line info for line : " << index << std::endl;
292 std::cout << " expected" << std::endl;
293 Print( expectedLine );
297 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
299 std::cout << " Different line info for line : " << index << std::endl;
301 std::cout << " expected" << std::endl;
302 Print( expectedLine );
306 if( line.ellipsis != expectedLine.ellipsis )
308 std::cout << " Different line info for line : " << index << std::endl;
310 std::cout << " expected" << std::endl;
311 Print( expectedLine );
315 // Do not compare the alignment offset as it's not calculated in the layout.
316 // Do not compare the line direction as it's not set in the layout.
322 //////////////////////////////////////////////////////////
324 struct ReLayoutRightToLeftLinesData
326 std::string description;
329 unsigned int numberOfFonts;
330 FontDescriptionRun* fontDescriptions;
331 unsigned int totalNumberOfGlyphs;
333 unsigned int startIndex;
334 unsigned int numberOfCharacters;
337 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
340 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
341 fontClient.SetDpi( 96u, 96u );
343 char* pathNamePtr = get_current_dir_name();
344 const std::string pathName( pathNamePtr );
347 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
348 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
349 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
351 // 1) Create the model.
352 LogicalModelPtr logicalModel;
353 VisualModelPtr visualModel;
357 Vector<FontDescriptionRun> fontDescriptionRuns;
358 if( 0u != data.numberOfFonts )
360 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
361 data.fontDescriptions,
362 data.fontDescriptions + data.numberOfFonts );
365 LayoutOptions options;
366 options.reorder = false;
367 options.align = false;
368 CreateTextModel( data.text,
378 // 2) Call the ReLayoutRightToLeftLines() method.
379 Layout::Engine engine;
380 engine.SetMetrics( metrics );
382 float outlineWidth = visualModel->GetOutlineWidth();
383 Layout::Parameters layoutParameters( data.textArea,
384 logicalModel->mText.Begin(),
385 logicalModel->mLineBreakInfo.Begin(),
386 logicalModel->mWordBreakInfo.Begin(),
387 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
388 visualModel->mGlyphs.Begin(),
389 visualModel->mGlyphsToCharacters.Begin(),
390 visualModel->mCharactersPerGlyph.Begin(),
391 visualModel->mCharactersToGlyph.Begin(),
392 visualModel->mGlyphsPerCharacter.Begin(),
393 visualModel->mGlyphs.Count(),
394 Text::HorizontalAlignment::BEGIN,
395 Text::LineWrap::WORD,
399 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
400 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
402 engine.ReLayoutRightToLeftLines( layoutParameters,
404 data.numberOfCharacters,
405 visualModel->mGlyphPositions );
407 // 3) Compare the results.
408 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
410 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
412 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
416 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
418 const Vector2& position = *( glyphPositions.Begin() + index );
420 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
422 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
425 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
427 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
435 //////////////////////////////////////////////////////////
439 std::string description;
442 unsigned int numberOfFonts;
443 FontDescriptionRun* fontDescriptions;
444 Text::HorizontalAlignment::Type horizontalAlignment;
445 Text::VerticalAlignment::Type verticalAlignment;
446 unsigned int startIndex;
447 unsigned int numberOfCharacters;
448 unsigned int numberOfLines;
452 bool AlignTest( const AlignData& data )
455 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
456 fontClient.SetDpi( 96u, 96u );
458 char* pathNamePtr = get_current_dir_name();
459 const std::string pathName( pathNamePtr );
462 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
463 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
464 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
466 // 1) Create the model.
467 LogicalModelPtr logicalModel;
468 VisualModelPtr visualModel;
472 Vector<FontDescriptionRun> fontDescriptionRuns;
473 if( 0u != data.numberOfFonts )
475 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
476 data.fontDescriptions,
477 data.fontDescriptions + data.numberOfFonts );
480 LayoutOptions options;
481 options.align = false;
482 CreateTextModel( data.text,
492 // Call the Align method.
493 Layout::Engine engine;
494 engine.SetMetrics( metrics );
496 float alignmentOffset = 0.f;
497 engine.Align( data.textArea,
499 data.numberOfCharacters,
500 data.horizontalAlignment,
505 if( data.numberOfLines != visualModel->mLines.Count() )
507 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
511 const LineRun* const linesBuffer = visualModel->mLines.Begin();
512 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
514 const LineRun& line = *( linesBuffer + index );
516 if( line.alignmentOffset != *( data.lineOffsets + index ) )
518 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
528 //////////////////////////////////////////////////////////
530 // UtcDaliTextLayoutSetGetLayout
531 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
532 // UtcDaliTextLayoutSetGetHorizontalAlignment
533 // UtcDaliTextLayoutSetGetVerticalAlignment
534 // UtcDaliTextLayoutSetGetCursorWidth
535 // UtcDaliTextLayoutNoText
536 // UtcDaliTextLayoutSmallTextArea01
537 // UtcDaliTextLayoutSmallTextArea02
538 // UtcDaliTextLayoutMultilineText01
539 // UtcDaliTextLayoutMultilineText02
540 // UtcDaliTextLayoutMultilineText03
541 // UtcDaliTextLayoutMultilineText04
542 // UtcDaliTextLayoutMultilineText05
543 // UtcDaliTextUpdateLayout01
544 // UtcDaliTextUpdateLayout02
545 // UtcDaliTextUpdateLayout03
546 // UtcDaliTextLayoutEllipsis01
547 // UtcDaliTextLayoutEllipsis02
548 // UtcDaliTextLayoutEllipsis03
549 // UtcDaliTextLayoutEllipsis04
550 // UtcDaliTextLayoutEllipsis04
551 // UtcDaliTextReorderLayout01
552 // UtcDaliTextReorderLayout02
553 // UtcDaliTextReorderLayout03
554 // UtcDaliTextReorderLayout04
555 // UtcDaliTextAlign01
556 // UtcDaliTextAlign02
557 // UtcDaliTextAlign03
558 // UtcDaliTextAlign04
559 // UtcDaliTextAlign05
560 // UtcDaliTextAlign06
561 // UtcDaliTextAlign07
562 // UtcDaliTextAlign08
563 // UtcDaliTextAlign09
565 //////////////////////////////////////////////////////////
567 int UtcDaliTextLayoutSetGetLayout(void)
569 ToolkitTestApplication application;
570 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
572 Layout::Engine engine;
574 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
576 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
577 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
579 tet_result(TET_PASS);
583 int UtcDaliTextLayoutSetGetCursorWidth(void)
585 ToolkitTestApplication application;
588 Layout::Engine engine;
590 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
592 engine.SetCursorWidth( 2 );
593 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
595 tet_result(TET_PASS);
599 int UtcDaliTextLayoutNoText(void)
601 ToolkitTestApplication application;
602 tet_infoline(" UtcDaliTextLayoutNoText");
604 Size textArea(100.f, 60.f);
605 Size layoutSize = Vector2::ZERO;
606 LayoutTextData data =
618 Layout::Engine::MULTI_LINE_BOX,
625 if( !LayoutTextTest( data ) )
627 tet_result(TET_FAIL);
630 tet_result(TET_PASS);
634 int UtcDaliTextLayoutSmallTextArea01(void)
636 ToolkitTestApplication application;
637 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
639 // Won't layout the text in multi-line if the width is too small.
641 const std::string fontFamily( "TizenSans" );
643 // Set a known font description
644 FontDescriptionRun fontDescriptionRun;
645 fontDescriptionRun.characterRun.characterIndex = 0u;
646 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
647 fontDescriptionRun.familyLength = fontFamily.size();
648 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
649 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
650 fontDescriptionRun.familyDefined = true;
651 fontDescriptionRun.weightDefined = false;
652 fontDescriptionRun.widthDefined = false;
653 fontDescriptionRun.slantDefined = false;
654 fontDescriptionRun.sizeDefined = false;
656 Vector<FontDescriptionRun> fontDescriptionRuns;
657 fontDescriptionRuns.PushBack( fontDescriptionRun );
658 Size textArea(1.f, 1.f);
659 Size layoutSize = Vector2::ZERO;
660 LayoutTextData data =
662 "Layout text in a small area",
666 fontDescriptionRuns.Begin(),
672 Layout::Engine::MULTI_LINE_BOX,
679 if( !LayoutTextTest( data ) )
681 tet_result(TET_FAIL);
684 tet_result(TET_PASS);
688 int UtcDaliTextLayoutSmallTextArea02(void)
690 ToolkitTestApplication application;
691 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
693 // Will layout the text in single line as it can be scrolled.
695 const std::string fontFamily( "TizenSans" );
697 // Set a known font description
698 FontDescriptionRun fontDescriptionRun;
699 fontDescriptionRun.characterRun.characterIndex = 0u;
700 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
701 fontDescriptionRun.familyLength = fontFamily.size();
702 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
703 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
704 fontDescriptionRun.familyDefined = true;
705 fontDescriptionRun.weightDefined = false;
706 fontDescriptionRun.widthDefined = false;
707 fontDescriptionRun.slantDefined = false;
708 fontDescriptionRun.sizeDefined = false;
710 Vector<FontDescriptionRun> fontDescriptionRuns;
711 fontDescriptionRuns.PushBack( fontDescriptionRun );
712 Size textArea(1.f, 1.f);
713 Size layoutSize(80.f, 20.f);
714 float positions[] = { 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
715 struct LineRun line =
728 Vector<LineRun> lines;
729 lines.PushBack( line );
731 LayoutTextData data =
733 "Layout text in a small area",
737 fontDescriptionRuns.Begin(),
743 Layout::Engine::SINGLE_LINE_BOX,
750 if( !LayoutTextTest( data ) )
752 tet_result(TET_FAIL);
755 tet_result(TET_PASS);
759 int UtcDaliTextLayoutMultilineText01(void)
761 ToolkitTestApplication application;
762 tet_infoline(" UtcDaliTextLayoutMultilineText01");
764 // Layout some lines of left to right text.
766 const std::string fontFamily( "TizenSans" );
768 // Set a known font description
769 FontDescriptionRun fontDescriptionRun1;
770 fontDescriptionRun1.characterRun.characterIndex = 0u;
771 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
772 fontDescriptionRun1.familyLength = fontFamily.size();
773 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
774 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
775 fontDescriptionRun1.familyDefined = true;
776 fontDescriptionRun1.weightDefined = false;
777 fontDescriptionRun1.widthDefined = false;
778 fontDescriptionRun1.slantDefined = false;
779 fontDescriptionRun1.sizeDefined = false;
781 FontDescriptionRun fontDescriptionRun2;
782 fontDescriptionRun2.characterRun.characterIndex = 18u;
783 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
784 fontDescriptionRun2.familyLength = fontFamily.size();
785 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
786 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
787 fontDescriptionRun2.familyDefined = true;
788 fontDescriptionRun2.weightDefined = false;
789 fontDescriptionRun2.widthDefined = false;
790 fontDescriptionRun2.slantDefined = false;
791 fontDescriptionRun2.sizeDefined = false;
793 Vector<FontDescriptionRun> fontDescriptionRuns;
794 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
795 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
796 Size textArea(100.f, 300.f);
797 Size layoutSize(95.f, 97.f);
800 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
801 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
802 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,
803 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,
804 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
806 struct LineRun line0 =
819 struct LineRun line1 =
832 struct LineRun line2 =
845 struct LineRun line3 =
858 struct LineRun line4 =
871 Vector<LineRun> lines;
872 lines.PushBack( line0 );
873 lines.PushBack( line1 );
874 lines.PushBack( line2 );
875 lines.PushBack( line3 );
876 lines.PushBack( line4 );
878 LayoutTextData data =
880 "Layout simple multi-line text",
881 "Hello world demo.\n"
882 "Layout different lines of text.",
885 fontDescriptionRuns.Begin(),
891 Layout::Engine::MULTI_LINE_BOX,
898 if( !LayoutTextTest( data ) )
900 tet_result(TET_FAIL);
903 tet_result(TET_PASS);
907 int UtcDaliTextLayoutMultilineText02(void)
909 ToolkitTestApplication application;
910 tet_infoline(" UtcDaliTextLayoutMultilineText02");
912 // Layout some lines of bidirectional text.
914 const std::string fontFamily1( "TizenSans" );
916 // Set a known font description
917 FontDescriptionRun fontDescriptionRun1;
918 fontDescriptionRun1.characterRun.characterIndex = 0u;
919 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
920 fontDescriptionRun1.familyLength = fontFamily1.size();
921 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
922 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
923 fontDescriptionRun1.familyDefined = true;
924 fontDescriptionRun1.weightDefined = false;
925 fontDescriptionRun1.widthDefined = false;
926 fontDescriptionRun1.slantDefined = false;
927 fontDescriptionRun1.sizeDefined = false;
929 const std::string fontFamily2( "TizenSansHebrew" );
931 // Set a known font description
932 FontDescriptionRun fontDescriptionRun2;
933 fontDescriptionRun2.characterRun.characterIndex = 17u;
934 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
935 fontDescriptionRun2.familyLength = fontFamily2.size();
936 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
937 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
938 fontDescriptionRun2.familyDefined = true;
939 fontDescriptionRun2.weightDefined = false;
940 fontDescriptionRun2.widthDefined = false;
941 fontDescriptionRun2.slantDefined = false;
942 fontDescriptionRun2.sizeDefined = false;
944 const std::string fontFamily3( "TizenSans" );
946 // Set a known font description
947 FontDescriptionRun fontDescriptionRun3;
948 fontDescriptionRun3.characterRun.characterIndex = 26u;
949 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
950 fontDescriptionRun3.familyLength = fontFamily3.size();
951 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
952 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
953 fontDescriptionRun3.familyDefined = true;
954 fontDescriptionRun3.weightDefined = false;
955 fontDescriptionRun3.widthDefined = false;
956 fontDescriptionRun3.slantDefined = false;
957 fontDescriptionRun3.sizeDefined = false;
959 const std::string fontFamily4( "TizenSansHebrew" );
961 // Set a known font description
962 FontDescriptionRun fontDescriptionRun4;
963 fontDescriptionRun4.characterRun.characterIndex = 28u;
964 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
965 fontDescriptionRun4.familyLength = fontFamily4.size();
966 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
967 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
968 fontDescriptionRun4.familyDefined = true;
969 fontDescriptionRun4.weightDefined = false;
970 fontDescriptionRun4.widthDefined = false;
971 fontDescriptionRun4.slantDefined = false;
972 fontDescriptionRun4.sizeDefined = false;
974 const std::string fontFamily5( "TizenSans" );
976 // Set a known font description
977 FontDescriptionRun fontDescriptionRun5;
978 fontDescriptionRun5.characterRun.characterIndex = 38u;
979 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
980 fontDescriptionRun5.familyLength = fontFamily5.size();
981 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
982 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
983 fontDescriptionRun5.familyDefined = true;
984 fontDescriptionRun5.weightDefined = false;
985 fontDescriptionRun5.widthDefined = false;
986 fontDescriptionRun5.slantDefined = false;
987 fontDescriptionRun5.sizeDefined = false;
989 Vector<FontDescriptionRun> fontDescriptionRuns;
990 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
991 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
992 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
993 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
994 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
995 Size textArea(100.f, 300.f);
996 Size layoutSize(80.f, 120.f);
999 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1000 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1001 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1002 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,
1003 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1004 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1006 struct LineRun line0 =
1019 struct LineRun line1 =
1032 struct LineRun line2 =
1045 struct LineRun line3 =
1058 struct LineRun line4 =
1071 struct LineRun line5 =
1084 Vector<LineRun> lines;
1085 lines.PushBack( line0 );
1086 lines.PushBack( line1 );
1087 lines.PushBack( line2 );
1088 lines.PushBack( line3 );
1089 lines.PushBack( line4 );
1090 lines.PushBack( line5 );
1092 LayoutTextData data =
1094 "Layout bidirectional text.",
1095 "Hello world demo שלום עולם.\n"
1096 "שלום עולם hello world demo.",
1099 fontDescriptionRuns.Begin(),
1105 Layout::Engine::MULTI_LINE_BOX,
1112 if( !LayoutTextTest( data ) )
1114 tet_result(TET_FAIL);
1117 tet_result(TET_PASS);
1121 int UtcDaliTextLayoutMultilineText03(void)
1123 ToolkitTestApplication application;
1124 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1126 // Layout a long word which doesn't fit in the width of the text area.
1128 const std::string fontFamily( "TizenSans" );
1130 // Set a known font description
1131 FontDescriptionRun fontDescriptionRun;
1132 fontDescriptionRun.characterRun.characterIndex = 0u;
1133 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1134 fontDescriptionRun.familyLength = fontFamily.size();
1135 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1136 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1137 fontDescriptionRun.familyDefined = true;
1138 fontDescriptionRun.weightDefined = false;
1139 fontDescriptionRun.widthDefined = false;
1140 fontDescriptionRun.slantDefined = false;
1141 fontDescriptionRun.sizeDefined = false;
1143 Vector<FontDescriptionRun> fontDescriptionRuns;
1144 fontDescriptionRuns.PushBack( fontDescriptionRun );
1145 Size textArea(100.f, 300.f);
1146 Size layoutSize(96.f, 60.f);
1149 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f,
1150 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f,
1151 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f,
1153 struct LineRun line0 =
1166 struct LineRun line1 =
1179 struct LineRun line2 =
1192 Vector<LineRun> lines;
1193 lines.PushBack( line0 );
1194 lines.PushBack( line1 );
1195 lines.PushBack( line2 );
1197 LayoutTextData data =
1199 "Layout a long word which doesn't fit in the width of the text area.",
1200 "Helloworlddemohelloworlddemo.",
1203 fontDescriptionRuns.Begin(),
1209 Layout::Engine::MULTI_LINE_BOX,
1216 if( !LayoutTextTest( data ) )
1218 tet_result(TET_FAIL);
1221 tet_result(TET_PASS);
1225 int UtcDaliTextLayoutMultilineText04(void)
1227 ToolkitTestApplication application;
1228 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1230 // Layout simple text ending with a \n. It has to add a void line at the end.
1232 const std::string fontFamily( "TizenSans" );
1234 // Set a known font description
1235 FontDescriptionRun fontDescriptionRun;
1236 fontDescriptionRun.characterRun.characterIndex = 0u;
1237 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1238 fontDescriptionRun.familyLength = fontFamily.size();
1239 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1240 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1241 fontDescriptionRun.familyDefined = true;
1242 fontDescriptionRun.weightDefined = false;
1243 fontDescriptionRun.widthDefined = false;
1244 fontDescriptionRun.slantDefined = false;
1245 fontDescriptionRun.sizeDefined = false;
1247 Vector<FontDescriptionRun> fontDescriptionRuns;
1248 fontDescriptionRuns.PushBack( fontDescriptionRun );
1249 Size textArea(100.f, 300.f);
1250 Size layoutSize(83.f, 40.f);
1253 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 82.f, -12.f
1255 struct LineRun line0 =
1267 struct LineRun line1 =
1280 Vector<LineRun> lines;
1281 lines.PushBack( line0 );
1282 lines.PushBack( line1 );
1284 LayoutTextData data =
1286 "Layout simple text ending with a \n.",
1290 fontDescriptionRuns.Begin(),
1296 Layout::Engine::MULTI_LINE_BOX,
1303 if( !LayoutTextTest( data ) )
1305 tet_result(TET_FAIL);
1308 tet_result(TET_PASS);
1312 int UtcDaliTextLayoutMultilineText05(void)
1314 ToolkitTestApplication application;
1315 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1317 // Layout simple text with one character with a different font size.
1319 const std::string fontFamily( "TizenSans" );
1321 // Set a known font description
1322 FontDescriptionRun fontDescriptionRun1;
1323 fontDescriptionRun1.characterRun.characterIndex = 0u;
1324 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1325 fontDescriptionRun1.familyLength = fontFamily.size();
1326 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1327 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1328 fontDescriptionRun1.familyDefined = true;
1329 fontDescriptionRun1.weightDefined = false;
1330 fontDescriptionRun1.widthDefined = false;
1331 fontDescriptionRun1.slantDefined = false;
1332 fontDescriptionRun1.sizeDefined = false;
1334 FontDescriptionRun fontDescriptionRun2;
1335 fontDescriptionRun2.characterRun.characterIndex = 6u;
1336 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1337 fontDescriptionRun2.familyLength = fontFamily.size();
1338 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1339 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1340 fontDescriptionRun2.size = 1280u;
1341 fontDescriptionRun2.familyDefined = true;
1342 fontDescriptionRun2.weightDefined = false;
1343 fontDescriptionRun2.widthDefined = false;
1344 fontDescriptionRun2.slantDefined = false;
1345 fontDescriptionRun2.sizeDefined = true;
1347 FontDescriptionRun fontDescriptionRun3;
1348 fontDescriptionRun3.characterRun.characterIndex = 7u;
1349 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1350 fontDescriptionRun3.familyLength = fontFamily.size();
1351 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1352 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1353 fontDescriptionRun3.familyDefined = true;
1354 fontDescriptionRun3.weightDefined = false;
1355 fontDescriptionRun3.widthDefined = false;
1356 fontDescriptionRun3.slantDefined = false;
1357 fontDescriptionRun3.sizeDefined = false;
1359 Vector<FontDescriptionRun> fontDescriptionRuns;
1360 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1361 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1362 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1363 Size textArea(100.f, 300.f);
1364 Size layoutSize(88.f, 53.f);
1367 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1368 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f
1370 struct LineRun line0 =
1383 struct LineRun line1 =
1396 Vector<LineRun> lines;
1397 lines.PushBack( line0 );
1398 lines.PushBack( line1 );
1400 LayoutTextData data =
1402 "Layout simple text with one character with a different font size.",
1403 "Hello world demo.",
1406 fontDescriptionRuns.Begin(),
1412 Layout::Engine::MULTI_LINE_BOX,
1419 if( !LayoutTextTest( data ) )
1421 tet_result(TET_FAIL);
1424 tet_result(TET_PASS);
1428 int UtcDaliTextUpdateLayout01(void)
1430 ToolkitTestApplication application;
1431 tet_infoline(" UtcDaliTextUpdateLayout01");
1433 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1435 const std::string fontLatin( "TizenSans" );
1436 const std::string fontHebrew( "TizenSansHebrew" );
1437 const std::string fontArabic( "TizenSansArabic" );
1439 // Set a known font description
1440 FontDescriptionRun fontDescriptionRun01;
1441 fontDescriptionRun01.characterRun.characterIndex = 0u;
1442 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1443 fontDescriptionRun01.familyLength = fontLatin.size();
1444 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1445 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1446 fontDescriptionRun01.familyDefined = true;
1447 fontDescriptionRun01.weightDefined = false;
1448 fontDescriptionRun01.widthDefined = false;
1449 fontDescriptionRun01.slantDefined = false;
1450 fontDescriptionRun01.sizeDefined = false;
1452 // Set a known font description
1453 FontDescriptionRun fontDescriptionRun02;
1454 fontDescriptionRun02.characterRun.characterIndex = 17u;
1455 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1456 fontDescriptionRun02.familyLength = fontHebrew.size();
1457 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1458 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1459 fontDescriptionRun02.familyDefined = true;
1460 fontDescriptionRun02.weightDefined = false;
1461 fontDescriptionRun02.widthDefined = false;
1462 fontDescriptionRun02.slantDefined = false;
1463 fontDescriptionRun02.sizeDefined = false;
1465 // Set a known font description
1466 FontDescriptionRun fontDescriptionRun03;
1467 fontDescriptionRun03.characterRun.characterIndex = 26u;
1468 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1469 fontDescriptionRun03.familyLength = fontLatin.size();
1470 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1471 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1472 fontDescriptionRun03.familyDefined = true;
1473 fontDescriptionRun03.weightDefined = false;
1474 fontDescriptionRun03.widthDefined = false;
1475 fontDescriptionRun03.slantDefined = false;
1476 fontDescriptionRun03.sizeDefined = false;
1478 // Set a known font description
1479 FontDescriptionRun fontDescriptionRun04;
1480 fontDescriptionRun04.characterRun.characterIndex = 28u;
1481 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1482 fontDescriptionRun04.familyLength = fontArabic.size();
1483 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1484 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1485 fontDescriptionRun04.familyDefined = true;
1486 fontDescriptionRun04.weightDefined = false;
1487 fontDescriptionRun04.widthDefined = false;
1488 fontDescriptionRun04.slantDefined = false;
1489 fontDescriptionRun04.sizeDefined = false;
1491 // Set a known font description
1492 FontDescriptionRun fontDescriptionRun05;
1493 fontDescriptionRun05.characterRun.characterIndex = 42u;
1494 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1495 fontDescriptionRun05.familyLength = fontLatin.size();
1496 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1497 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1498 fontDescriptionRun05.familyDefined = true;
1499 fontDescriptionRun05.weightDefined = false;
1500 fontDescriptionRun05.widthDefined = false;
1501 fontDescriptionRun05.slantDefined = false;
1502 fontDescriptionRun05.sizeDefined = false;
1504 // Set a known font description
1505 FontDescriptionRun fontDescriptionRun06;
1506 fontDescriptionRun06.characterRun.characterIndex = 54u;
1507 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1508 fontDescriptionRun06.familyLength = fontHebrew.size();
1509 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1510 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1511 fontDescriptionRun06.familyDefined = true;
1512 fontDescriptionRun06.weightDefined = false;
1513 fontDescriptionRun06.widthDefined = false;
1514 fontDescriptionRun06.slantDefined = false;
1515 fontDescriptionRun06.sizeDefined = false;
1517 // Set a known font description
1518 FontDescriptionRun fontDescriptionRun07;
1519 fontDescriptionRun07.characterRun.characterIndex = 64u;
1520 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1521 fontDescriptionRun07.familyLength = fontHebrew.size();
1522 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1523 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1524 fontDescriptionRun07.familyDefined = true;
1525 fontDescriptionRun07.weightDefined = false;
1526 fontDescriptionRun07.widthDefined = false;
1527 fontDescriptionRun07.slantDefined = false;
1528 fontDescriptionRun07.sizeDefined = false;
1530 // Set a known font description
1531 FontDescriptionRun fontDescriptionRun08;
1532 fontDescriptionRun08.characterRun.characterIndex = 74u;
1533 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1534 fontDescriptionRun08.familyLength = fontLatin.size();
1535 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1536 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1537 fontDescriptionRun08.familyDefined = true;
1538 fontDescriptionRun08.weightDefined = false;
1539 fontDescriptionRun08.widthDefined = false;
1540 fontDescriptionRun08.slantDefined = false;
1541 fontDescriptionRun08.sizeDefined = false;
1543 // Set a known font description
1544 FontDescriptionRun fontDescriptionRun09;
1545 fontDescriptionRun09.characterRun.characterIndex = 92u;
1546 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1547 fontDescriptionRun09.familyLength = fontLatin.size();
1548 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1549 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1550 fontDescriptionRun09.familyDefined = true;
1551 fontDescriptionRun09.weightDefined = false;
1552 fontDescriptionRun09.widthDefined = false;
1553 fontDescriptionRun09.slantDefined = false;
1554 fontDescriptionRun09.sizeDefined = false;
1556 // Set a known font description
1557 FontDescriptionRun fontDescriptionRun10;
1558 fontDescriptionRun10.characterRun.characterIndex = 104u;
1559 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1560 fontDescriptionRun10.familyLength = fontArabic.size();
1561 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1562 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1563 fontDescriptionRun10.familyDefined = true;
1564 fontDescriptionRun10.weightDefined = false;
1565 fontDescriptionRun10.widthDefined = false;
1566 fontDescriptionRun10.slantDefined = false;
1567 fontDescriptionRun10.sizeDefined = false;
1569 // Set a known font description
1570 FontDescriptionRun fontDescriptionRun11;
1571 fontDescriptionRun11.characterRun.characterIndex = 118u;
1572 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1573 fontDescriptionRun11.familyLength = fontHebrew.size();
1574 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1575 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1576 fontDescriptionRun11.familyDefined = true;
1577 fontDescriptionRun11.weightDefined = false;
1578 fontDescriptionRun11.widthDefined = false;
1579 fontDescriptionRun11.slantDefined = false;
1580 fontDescriptionRun11.sizeDefined = false;
1582 // Set a known font description
1583 FontDescriptionRun fontDescriptionRun12;
1584 fontDescriptionRun12.characterRun.characterIndex = 128u;
1585 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1586 fontDescriptionRun12.familyLength = fontLatin.size();
1587 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1588 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1589 fontDescriptionRun12.familyDefined = true;
1590 fontDescriptionRun12.weightDefined = false;
1591 fontDescriptionRun12.widthDefined = false;
1592 fontDescriptionRun12.slantDefined = false;
1593 fontDescriptionRun12.sizeDefined = false;
1595 // Set a known font description
1596 FontDescriptionRun fontDescriptionRun13;
1597 fontDescriptionRun13.characterRun.characterIndex = 145u;
1598 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1599 fontDescriptionRun13.familyLength = fontHebrew.size();
1600 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1601 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1602 fontDescriptionRun13.familyDefined = true;
1603 fontDescriptionRun13.weightDefined = false;
1604 fontDescriptionRun13.widthDefined = false;
1605 fontDescriptionRun13.slantDefined = false;
1606 fontDescriptionRun13.sizeDefined = false;
1608 // Set a known font description
1609 FontDescriptionRun fontDescriptionRun14;
1610 fontDescriptionRun14.characterRun.characterIndex = 154u;
1611 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1612 fontDescriptionRun14.familyLength = fontLatin.size();
1613 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1614 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1615 fontDescriptionRun14.familyDefined = true;
1616 fontDescriptionRun14.weightDefined = false;
1617 fontDescriptionRun14.widthDefined = false;
1618 fontDescriptionRun14.slantDefined = false;
1619 fontDescriptionRun14.sizeDefined = false;
1621 // Set a known font description
1622 FontDescriptionRun fontDescriptionRun15;
1623 fontDescriptionRun15.characterRun.characterIndex = 156u;
1624 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1625 fontDescriptionRun15.familyLength = fontHebrew.size();
1626 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1627 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1628 fontDescriptionRun15.familyDefined = true;
1629 fontDescriptionRun15.weightDefined = false;
1630 fontDescriptionRun15.widthDefined = false;
1631 fontDescriptionRun15.slantDefined = false;
1632 fontDescriptionRun15.sizeDefined = false;
1634 // Set a known font description
1635 FontDescriptionRun fontDescriptionRun16;
1636 fontDescriptionRun16.characterRun.characterIndex = 166u;
1637 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1638 fontDescriptionRun16.familyLength = fontLatin.size();
1639 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1640 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1641 fontDescriptionRun16.familyDefined = true;
1642 fontDescriptionRun16.weightDefined = false;
1643 fontDescriptionRun16.widthDefined = false;
1644 fontDescriptionRun16.slantDefined = false;
1645 fontDescriptionRun16.sizeDefined = false;
1647 // Set a known font description
1648 FontDescriptionRun fontDescriptionRun17;
1649 fontDescriptionRun17.characterRun.characterIndex = 178u;
1650 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1651 fontDescriptionRun17.familyLength = fontArabic.size();
1652 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1653 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1654 fontDescriptionRun17.familyDefined = true;
1655 fontDescriptionRun17.weightDefined = false;
1656 fontDescriptionRun17.widthDefined = false;
1657 fontDescriptionRun17.slantDefined = false;
1658 fontDescriptionRun17.sizeDefined = false;
1660 Vector<FontDescriptionRun> fontDescriptionRuns;
1661 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1662 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1663 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1664 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1665 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1666 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1667 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1668 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1669 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1670 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1671 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1672 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1673 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1674 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1675 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1676 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1677 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1678 Size textArea(100.f, 300.f);
1679 Size layoutSize(92.f, 380.f);
1682 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1683 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1684 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1685 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
1686 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,
1687 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1688 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,
1689 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1690 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
1691 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1692 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
1693 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1694 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1695 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1696 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
1697 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,
1698 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1699 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
1702 struct LineRun line01 =
1715 struct LineRun line02 =
1728 struct LineRun line03 =
1741 struct LineRun line04 =
1754 struct LineRun line05 =
1767 struct LineRun line06 =
1780 struct LineRun line07 =
1793 struct LineRun line08 =
1806 struct LineRun line09 =
1819 struct LineRun line10 =
1832 struct LineRun line11 =
1845 struct LineRun line12 =
1858 struct LineRun line13 =
1871 struct LineRun line14 =
1884 struct LineRun line15 =
1897 struct LineRun line16 =
1910 struct LineRun line17 =
1923 struct LineRun line18 =
1936 struct LineRun line19 =
1949 Vector<LineRun> lines;
1950 lines.PushBack( line01 );
1951 lines.PushBack( line02 );
1952 lines.PushBack( line03 );
1953 lines.PushBack( line04 );
1954 lines.PushBack( line05 );
1955 lines.PushBack( line06 );
1956 lines.PushBack( line07 );
1957 lines.PushBack( line08 );
1958 lines.PushBack( line09 );
1959 lines.PushBack( line10 );
1960 lines.PushBack( line11 );
1961 lines.PushBack( line12 );
1962 lines.PushBack( line13 );
1963 lines.PushBack( line14 );
1964 lines.PushBack( line15 );
1965 lines.PushBack( line16 );
1966 lines.PushBack( line17 );
1967 lines.PushBack( line18 );
1968 lines.PushBack( line19 );
1970 LayoutTextData data =
1972 "Layout bidirectional text.",
1973 "Hello world demo שלום עולם.\n"
1974 "مرحبا بالعالم hello world שלום עולם\n"
1975 "שלום עולם hello world demo.\n"
1976 "hello world مرحبا بالعالم שלום עולם\n"
1977 "Hello world demo שלום עולם.\n"
1978 "שלום עולם hello world مرحبا بالعالم\n",
1981 fontDescriptionRuns.Begin(),
1987 Layout::Engine::MULTI_LINE_BOX,
1994 if( !LayoutTextTest( data ) )
1996 tet_result(TET_FAIL);
1999 tet_result(TET_PASS);
2003 int UtcDaliTextUpdateLayout02(void)
2005 ToolkitTestApplication application;
2006 tet_infoline(" UtcDaliTextUpdateLayout02");
2008 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2010 const std::string fontLatin( "TizenSans" );
2011 const std::string fontHebrew( "TizenSansHebrew" );
2012 const std::string fontArabic( "TizenSansArabic" );
2014 // Set a known font description
2015 FontDescriptionRun fontDescriptionRun01;
2016 fontDescriptionRun01.characterRun.characterIndex = 0u;
2017 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2018 fontDescriptionRun01.familyLength = fontLatin.size();
2019 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2020 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2021 fontDescriptionRun01.familyDefined = true;
2022 fontDescriptionRun01.weightDefined = false;
2023 fontDescriptionRun01.widthDefined = false;
2024 fontDescriptionRun01.slantDefined = false;
2025 fontDescriptionRun01.sizeDefined = false;
2027 // Set a known font description
2028 FontDescriptionRun fontDescriptionRun02;
2029 fontDescriptionRun02.characterRun.characterIndex = 17u;
2030 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2031 fontDescriptionRun02.familyLength = fontHebrew.size();
2032 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2033 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2034 fontDescriptionRun02.familyDefined = true;
2035 fontDescriptionRun02.weightDefined = false;
2036 fontDescriptionRun02.widthDefined = false;
2037 fontDescriptionRun02.slantDefined = false;
2038 fontDescriptionRun02.sizeDefined = false;
2040 // Set a known font description
2041 FontDescriptionRun fontDescriptionRun03;
2042 fontDescriptionRun03.characterRun.characterIndex = 26u;
2043 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2044 fontDescriptionRun03.familyLength = fontLatin.size();
2045 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2046 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2047 fontDescriptionRun03.familyDefined = true;
2048 fontDescriptionRun03.weightDefined = false;
2049 fontDescriptionRun03.widthDefined = false;
2050 fontDescriptionRun03.slantDefined = false;
2051 fontDescriptionRun03.sizeDefined = false;
2053 // Set a known font description
2054 FontDescriptionRun fontDescriptionRun04;
2055 fontDescriptionRun04.characterRun.characterIndex = 28u;
2056 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2057 fontDescriptionRun04.familyLength = fontArabic.size();
2058 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2059 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2060 fontDescriptionRun04.familyDefined = true;
2061 fontDescriptionRun04.weightDefined = false;
2062 fontDescriptionRun04.widthDefined = false;
2063 fontDescriptionRun04.slantDefined = false;
2064 fontDescriptionRun04.sizeDefined = false;
2066 // Set a known font description
2067 FontDescriptionRun fontDescriptionRun05;
2068 fontDescriptionRun05.characterRun.characterIndex = 42u;
2069 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2070 fontDescriptionRun05.familyLength = fontLatin.size();
2071 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2072 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2073 fontDescriptionRun05.familyDefined = true;
2074 fontDescriptionRun05.weightDefined = false;
2075 fontDescriptionRun05.widthDefined = false;
2076 fontDescriptionRun05.slantDefined = false;
2077 fontDescriptionRun05.sizeDefined = false;
2079 // Set a known font description
2080 FontDescriptionRun fontDescriptionRun06;
2081 fontDescriptionRun06.characterRun.characterIndex = 54u;
2082 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2083 fontDescriptionRun06.familyLength = fontHebrew.size();
2084 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2085 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2086 fontDescriptionRun06.familyDefined = true;
2087 fontDescriptionRun06.weightDefined = false;
2088 fontDescriptionRun06.widthDefined = false;
2089 fontDescriptionRun06.slantDefined = false;
2090 fontDescriptionRun06.sizeDefined = false;
2092 // Set a known font description
2093 FontDescriptionRun fontDescriptionRun07;
2094 fontDescriptionRun07.characterRun.characterIndex = 64u;
2095 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2096 fontDescriptionRun07.familyLength = fontHebrew.size();
2097 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2098 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2099 fontDescriptionRun07.familyDefined = true;
2100 fontDescriptionRun07.weightDefined = false;
2101 fontDescriptionRun07.widthDefined = false;
2102 fontDescriptionRun07.slantDefined = false;
2103 fontDescriptionRun07.sizeDefined = false;
2105 // Set a known font description
2106 FontDescriptionRun fontDescriptionRun08;
2107 fontDescriptionRun08.characterRun.characterIndex = 74u;
2108 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2109 fontDescriptionRun08.familyLength = fontLatin.size();
2110 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2111 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2112 fontDescriptionRun08.familyDefined = true;
2113 fontDescriptionRun08.weightDefined = false;
2114 fontDescriptionRun08.widthDefined = false;
2115 fontDescriptionRun08.slantDefined = false;
2116 fontDescriptionRun08.sizeDefined = false;
2118 // Set a known font description
2119 FontDescriptionRun fontDescriptionRun09;
2120 fontDescriptionRun09.characterRun.characterIndex = 92u;
2121 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2122 fontDescriptionRun09.familyLength = fontLatin.size();
2123 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2124 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2125 fontDescriptionRun09.familyDefined = true;
2126 fontDescriptionRun09.weightDefined = false;
2127 fontDescriptionRun09.widthDefined = false;
2128 fontDescriptionRun09.slantDefined = false;
2129 fontDescriptionRun09.sizeDefined = false;
2131 // Set a known font description
2132 FontDescriptionRun fontDescriptionRun10;
2133 fontDescriptionRun10.characterRun.characterIndex = 104u;
2134 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2135 fontDescriptionRun10.familyLength = fontArabic.size();
2136 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2137 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2138 fontDescriptionRun10.familyDefined = true;
2139 fontDescriptionRun10.weightDefined = false;
2140 fontDescriptionRun10.widthDefined = false;
2141 fontDescriptionRun10.slantDefined = false;
2142 fontDescriptionRun10.sizeDefined = false;
2144 // Set a known font description
2145 FontDescriptionRun fontDescriptionRun11;
2146 fontDescriptionRun11.characterRun.characterIndex = 118u;
2147 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2148 fontDescriptionRun11.familyLength = fontHebrew.size();
2149 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2150 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2151 fontDescriptionRun11.familyDefined = true;
2152 fontDescriptionRun11.weightDefined = false;
2153 fontDescriptionRun11.widthDefined = false;
2154 fontDescriptionRun11.slantDefined = false;
2155 fontDescriptionRun11.sizeDefined = false;
2157 // Set a known font description
2158 FontDescriptionRun fontDescriptionRun12;
2159 fontDescriptionRun12.characterRun.characterIndex = 128u;
2160 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2161 fontDescriptionRun12.familyLength = fontLatin.size();
2162 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2163 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2164 fontDescriptionRun12.familyDefined = true;
2165 fontDescriptionRun12.weightDefined = false;
2166 fontDescriptionRun12.widthDefined = false;
2167 fontDescriptionRun12.slantDefined = false;
2168 fontDescriptionRun12.sizeDefined = false;
2170 // Set a known font description
2171 FontDescriptionRun fontDescriptionRun13;
2172 fontDescriptionRun13.characterRun.characterIndex = 145u;
2173 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2174 fontDescriptionRun13.familyLength = fontHebrew.size();
2175 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2176 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2177 fontDescriptionRun13.familyDefined = true;
2178 fontDescriptionRun13.weightDefined = false;
2179 fontDescriptionRun13.widthDefined = false;
2180 fontDescriptionRun13.slantDefined = false;
2181 fontDescriptionRun13.sizeDefined = false;
2183 // Set a known font description
2184 FontDescriptionRun fontDescriptionRun14;
2185 fontDescriptionRun14.characterRun.characterIndex = 154u;
2186 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2187 fontDescriptionRun14.familyLength = fontLatin.size();
2188 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2189 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2190 fontDescriptionRun14.familyDefined = true;
2191 fontDescriptionRun14.weightDefined = false;
2192 fontDescriptionRun14.widthDefined = false;
2193 fontDescriptionRun14.slantDefined = false;
2194 fontDescriptionRun14.sizeDefined = false;
2196 // Set a known font description
2197 FontDescriptionRun fontDescriptionRun15;
2198 fontDescriptionRun15.characterRun.characterIndex = 156u;
2199 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2200 fontDescriptionRun15.familyLength = fontHebrew.size();
2201 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2202 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2203 fontDescriptionRun15.familyDefined = true;
2204 fontDescriptionRun15.weightDefined = false;
2205 fontDescriptionRun15.widthDefined = false;
2206 fontDescriptionRun15.slantDefined = false;
2207 fontDescriptionRun15.sizeDefined = false;
2209 // Set a known font description
2210 FontDescriptionRun fontDescriptionRun16;
2211 fontDescriptionRun16.characterRun.characterIndex = 166u;
2212 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2213 fontDescriptionRun16.familyLength = fontLatin.size();
2214 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2215 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2216 fontDescriptionRun16.familyDefined = true;
2217 fontDescriptionRun16.weightDefined = false;
2218 fontDescriptionRun16.widthDefined = false;
2219 fontDescriptionRun16.slantDefined = false;
2220 fontDescriptionRun16.sizeDefined = false;
2222 // Set a known font description
2223 FontDescriptionRun fontDescriptionRun17;
2224 fontDescriptionRun17.characterRun.characterIndex = 178u;
2225 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2226 fontDescriptionRun17.familyLength = fontArabic.size();
2227 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2228 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2229 fontDescriptionRun17.familyDefined = true;
2230 fontDescriptionRun17.weightDefined = false;
2231 fontDescriptionRun17.widthDefined = false;
2232 fontDescriptionRun17.slantDefined = false;
2233 fontDescriptionRun17.sizeDefined = false;
2235 Vector<FontDescriptionRun> fontDescriptionRuns;
2236 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2240 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2241 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2251 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2252 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2253 Size textArea(100.f, 300.f);
2254 Size layoutSize(92.f, 380.f);
2257 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2258 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2259 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2260 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2261 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,
2262 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2263 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,
2264 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2265 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2266 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2267 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2268 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2269 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2270 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2271 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2272 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,
2273 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2274 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2277 struct LineRun line01 =
2290 struct LineRun line02 =
2303 struct LineRun line03 =
2316 struct LineRun line04 =
2329 struct LineRun line05 =
2342 struct LineRun line06 =
2355 struct LineRun line07 =
2368 struct LineRun line08 =
2381 struct LineRun line09 =
2394 struct LineRun line10 =
2407 struct LineRun line11 =
2420 struct LineRun line12 =
2433 struct LineRun line13 =
2446 struct LineRun line14 =
2459 struct LineRun line15 =
2472 struct LineRun line16 =
2485 struct LineRun line17 =
2498 struct LineRun line18 =
2511 struct LineRun line19 =
2524 Vector<LineRun> lines;
2525 lines.PushBack( line01 );
2526 lines.PushBack( line02 );
2527 lines.PushBack( line03 );
2528 lines.PushBack( line04 );
2529 lines.PushBack( line05 );
2530 lines.PushBack( line06 );
2531 lines.PushBack( line07 );
2532 lines.PushBack( line08 );
2533 lines.PushBack( line09 );
2534 lines.PushBack( line10 );
2535 lines.PushBack( line11 );
2536 lines.PushBack( line12 );
2537 lines.PushBack( line13 );
2538 lines.PushBack( line14 );
2539 lines.PushBack( line15 );
2540 lines.PushBack( line16 );
2541 lines.PushBack( line17 );
2542 lines.PushBack( line18 );
2543 lines.PushBack( line19 );
2545 LayoutTextData data =
2547 "Layout bidirectional text.",
2548 "Hello world demo שלום עולם.\n"
2549 "مرحبا بالعالم hello world שלום עולם\n"
2550 "שלום עולם hello world demo.\n"
2551 "hello world مرحبا بالعالم שלום עולם\n"
2552 "Hello world demo שלום עולם.\n"
2553 "שלום עולם hello world مرحبا بالعالم\n",
2556 fontDescriptionRuns.Begin(),
2562 Layout::Engine::MULTI_LINE_BOX,
2569 if( !LayoutTextTest( data ) )
2571 tet_result(TET_FAIL);
2574 tet_result(TET_PASS);
2578 int UtcDaliTextUpdateLayout03(void)
2580 ToolkitTestApplication application;
2581 tet_infoline(" UtcDaliTextUpdateLayout03");
2583 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2585 const std::string fontLatin( "TizenSans" );
2586 const std::string fontHebrew( "TizenSansHebrew" );
2587 const std::string fontArabic( "TizenSansArabic" );
2589 // Set a known font description
2590 FontDescriptionRun fontDescriptionRun01;
2591 fontDescriptionRun01.characterRun.characterIndex = 0u;
2592 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2593 fontDescriptionRun01.familyLength = fontLatin.size();
2594 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2595 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2596 fontDescriptionRun01.familyDefined = true;
2597 fontDescriptionRun01.weightDefined = false;
2598 fontDescriptionRun01.widthDefined = false;
2599 fontDescriptionRun01.slantDefined = false;
2600 fontDescriptionRun01.sizeDefined = false;
2602 // Set a known font description
2603 FontDescriptionRun fontDescriptionRun02;
2604 fontDescriptionRun02.characterRun.characterIndex = 17u;
2605 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2606 fontDescriptionRun02.familyLength = fontHebrew.size();
2607 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2608 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2609 fontDescriptionRun02.familyDefined = true;
2610 fontDescriptionRun02.weightDefined = false;
2611 fontDescriptionRun02.widthDefined = false;
2612 fontDescriptionRun02.slantDefined = false;
2613 fontDescriptionRun02.sizeDefined = false;
2615 // Set a known font description
2616 FontDescriptionRun fontDescriptionRun03;
2617 fontDescriptionRun03.characterRun.characterIndex = 26u;
2618 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2619 fontDescriptionRun03.familyLength = fontLatin.size();
2620 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2621 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2622 fontDescriptionRun03.familyDefined = true;
2623 fontDescriptionRun03.weightDefined = false;
2624 fontDescriptionRun03.widthDefined = false;
2625 fontDescriptionRun03.slantDefined = false;
2626 fontDescriptionRun03.sizeDefined = false;
2628 // Set a known font description
2629 FontDescriptionRun fontDescriptionRun04;
2630 fontDescriptionRun04.characterRun.characterIndex = 28u;
2631 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2632 fontDescriptionRun04.familyLength = fontArabic.size();
2633 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2634 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2635 fontDescriptionRun04.familyDefined = true;
2636 fontDescriptionRun04.weightDefined = false;
2637 fontDescriptionRun04.widthDefined = false;
2638 fontDescriptionRun04.slantDefined = false;
2639 fontDescriptionRun04.sizeDefined = false;
2641 // Set a known font description
2642 FontDescriptionRun fontDescriptionRun05;
2643 fontDescriptionRun05.characterRun.characterIndex = 42u;
2644 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2645 fontDescriptionRun05.familyLength = fontLatin.size();
2646 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2647 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2648 fontDescriptionRun05.familyDefined = true;
2649 fontDescriptionRun05.weightDefined = false;
2650 fontDescriptionRun05.widthDefined = false;
2651 fontDescriptionRun05.slantDefined = false;
2652 fontDescriptionRun05.sizeDefined = false;
2654 // Set a known font description
2655 FontDescriptionRun fontDescriptionRun06;
2656 fontDescriptionRun06.characterRun.characterIndex = 54u;
2657 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2658 fontDescriptionRun06.familyLength = fontHebrew.size();
2659 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2660 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2661 fontDescriptionRun06.familyDefined = true;
2662 fontDescriptionRun06.weightDefined = false;
2663 fontDescriptionRun06.widthDefined = false;
2664 fontDescriptionRun06.slantDefined = false;
2665 fontDescriptionRun06.sizeDefined = false;
2667 // Set a known font description
2668 FontDescriptionRun fontDescriptionRun07;
2669 fontDescriptionRun07.characterRun.characterIndex = 64u;
2670 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2671 fontDescriptionRun07.familyLength = fontHebrew.size();
2672 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2673 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2674 fontDescriptionRun07.familyDefined = true;
2675 fontDescriptionRun07.weightDefined = false;
2676 fontDescriptionRun07.widthDefined = false;
2677 fontDescriptionRun07.slantDefined = false;
2678 fontDescriptionRun07.sizeDefined = false;
2680 // Set a known font description
2681 FontDescriptionRun fontDescriptionRun08;
2682 fontDescriptionRun08.characterRun.characterIndex = 74u;
2683 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2684 fontDescriptionRun08.familyLength = fontLatin.size();
2685 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2686 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2687 fontDescriptionRun08.familyDefined = true;
2688 fontDescriptionRun08.weightDefined = false;
2689 fontDescriptionRun08.widthDefined = false;
2690 fontDescriptionRun08.slantDefined = false;
2691 fontDescriptionRun08.sizeDefined = false;
2693 // Set a known font description
2694 FontDescriptionRun fontDescriptionRun09;
2695 fontDescriptionRun09.characterRun.characterIndex = 92u;
2696 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2697 fontDescriptionRun09.familyLength = fontLatin.size();
2698 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2699 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2700 fontDescriptionRun09.familyDefined = true;
2701 fontDescriptionRun09.weightDefined = false;
2702 fontDescriptionRun09.widthDefined = false;
2703 fontDescriptionRun09.slantDefined = false;
2704 fontDescriptionRun09.sizeDefined = false;
2706 // Set a known font description
2707 FontDescriptionRun fontDescriptionRun10;
2708 fontDescriptionRun10.characterRun.characterIndex = 104u;
2709 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2710 fontDescriptionRun10.familyLength = fontArabic.size();
2711 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2712 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2713 fontDescriptionRun10.familyDefined = true;
2714 fontDescriptionRun10.weightDefined = false;
2715 fontDescriptionRun10.widthDefined = false;
2716 fontDescriptionRun10.slantDefined = false;
2717 fontDescriptionRun10.sizeDefined = false;
2719 // Set a known font description
2720 FontDescriptionRun fontDescriptionRun11;
2721 fontDescriptionRun11.characterRun.characterIndex = 118u;
2722 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2723 fontDescriptionRun11.familyLength = fontHebrew.size();
2724 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2725 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2726 fontDescriptionRun11.familyDefined = true;
2727 fontDescriptionRun11.weightDefined = false;
2728 fontDescriptionRun11.widthDefined = false;
2729 fontDescriptionRun11.slantDefined = false;
2730 fontDescriptionRun11.sizeDefined = false;
2732 // Set a known font description
2733 FontDescriptionRun fontDescriptionRun12;
2734 fontDescriptionRun12.characterRun.characterIndex = 128u;
2735 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2736 fontDescriptionRun12.familyLength = fontLatin.size();
2737 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2738 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2739 fontDescriptionRun12.familyDefined = true;
2740 fontDescriptionRun12.weightDefined = false;
2741 fontDescriptionRun12.widthDefined = false;
2742 fontDescriptionRun12.slantDefined = false;
2743 fontDescriptionRun12.sizeDefined = false;
2745 // Set a known font description
2746 FontDescriptionRun fontDescriptionRun13;
2747 fontDescriptionRun13.characterRun.characterIndex = 145u;
2748 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2749 fontDescriptionRun13.familyLength = fontHebrew.size();
2750 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2751 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2752 fontDescriptionRun13.familyDefined = true;
2753 fontDescriptionRun13.weightDefined = false;
2754 fontDescriptionRun13.widthDefined = false;
2755 fontDescriptionRun13.slantDefined = false;
2756 fontDescriptionRun13.sizeDefined = false;
2758 // Set a known font description
2759 FontDescriptionRun fontDescriptionRun14;
2760 fontDescriptionRun14.characterRun.characterIndex = 154u;
2761 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2762 fontDescriptionRun14.familyLength = fontLatin.size();
2763 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2764 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2765 fontDescriptionRun14.familyDefined = true;
2766 fontDescriptionRun14.weightDefined = false;
2767 fontDescriptionRun14.widthDefined = false;
2768 fontDescriptionRun14.slantDefined = false;
2769 fontDescriptionRun14.sizeDefined = false;
2771 // Set a known font description
2772 FontDescriptionRun fontDescriptionRun15;
2773 fontDescriptionRun15.characterRun.characterIndex = 156u;
2774 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2775 fontDescriptionRun15.familyLength = fontHebrew.size();
2776 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2777 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2778 fontDescriptionRun15.familyDefined = true;
2779 fontDescriptionRun15.weightDefined = false;
2780 fontDescriptionRun15.widthDefined = false;
2781 fontDescriptionRun15.slantDefined = false;
2782 fontDescriptionRun15.sizeDefined = false;
2784 // Set a known font description
2785 FontDescriptionRun fontDescriptionRun16;
2786 fontDescriptionRun16.characterRun.characterIndex = 166u;
2787 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2788 fontDescriptionRun16.familyLength = fontLatin.size();
2789 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2790 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2791 fontDescriptionRun16.familyDefined = true;
2792 fontDescriptionRun16.weightDefined = false;
2793 fontDescriptionRun16.widthDefined = false;
2794 fontDescriptionRun16.slantDefined = false;
2795 fontDescriptionRun16.sizeDefined = false;
2797 // Set a known font description
2798 FontDescriptionRun fontDescriptionRun17;
2799 fontDescriptionRun17.characterRun.characterIndex = 178u;
2800 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2801 fontDescriptionRun17.familyLength = fontArabic.size();
2802 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2803 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2804 fontDescriptionRun17.familyDefined = true;
2805 fontDescriptionRun17.weightDefined = false;
2806 fontDescriptionRun17.widthDefined = false;
2807 fontDescriptionRun17.slantDefined = false;
2808 fontDescriptionRun17.sizeDefined = false;
2810 Vector<FontDescriptionRun> fontDescriptionRuns;
2811 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2812 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2813 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2814 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2815 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2816 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2817 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2818 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2819 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2820 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2821 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2822 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2823 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2824 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2825 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2826 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2827 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2828 Size textArea(100.f, 300.f);
2829 Size layoutSize(92.f, 380.f);
2832 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2833 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2834 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2835 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 67.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2836 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,
2837 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2838 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,
2839 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2840 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -2.f, 42.f, -12.f,
2841 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2842 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2843 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2844 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2845 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2846 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -2.f, 33.f, -12.f,
2847 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,
2848 1.f, -13.f, 9.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2849 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2852 struct LineRun line01 =
2865 struct LineRun line02 =
2878 struct LineRun line03 =
2891 struct LineRun line04 =
2904 struct LineRun line05 =
2917 struct LineRun line06 =
2930 struct LineRun line07 =
2943 struct LineRun line08 =
2956 struct LineRun line09 =
2969 struct LineRun line10 =
2982 struct LineRun line11 =
2995 struct LineRun line12 =
3008 struct LineRun line13 =
3021 struct LineRun line14 =
3034 struct LineRun line15 =
3047 struct LineRun line16 =
3060 struct LineRun line17 =
3073 struct LineRun line18 =
3086 struct LineRun line19 =
3099 Vector<LineRun> lines;
3100 lines.PushBack( line01 );
3101 lines.PushBack( line02 );
3102 lines.PushBack( line03 );
3103 lines.PushBack( line04 );
3104 lines.PushBack( line05 );
3105 lines.PushBack( line06 );
3106 lines.PushBack( line07 );
3107 lines.PushBack( line08 );
3108 lines.PushBack( line09 );
3109 lines.PushBack( line10 );
3110 lines.PushBack( line11 );
3111 lines.PushBack( line12 );
3112 lines.PushBack( line13 );
3113 lines.PushBack( line14 );
3114 lines.PushBack( line15 );
3115 lines.PushBack( line16 );
3116 lines.PushBack( line17 );
3117 lines.PushBack( line18 );
3118 lines.PushBack( line19 );
3120 LayoutTextData data =
3122 "Layout bidirectional text.",
3123 "Hello world demo שלום עולם.\n"
3124 "مرحبا بالعالم hello world שלום עולם\n"
3125 "שלום עולם hello world demo.\n"
3126 "hello world مرحبا بالعالم שלום עולם\n"
3127 "Hello world demo שלום עולם.\n"
3128 "שלום עולם hello world مرحبا بالعالم\n",
3131 fontDescriptionRuns.Begin(),
3137 Layout::Engine::MULTI_LINE_BOX,
3144 if( !LayoutTextTest( data ) )
3146 tet_result(TET_FAIL);
3149 tet_result(TET_PASS);
3153 int UtcDaliTextLayoutEllipsis01(void)
3155 ToolkitTestApplication application;
3156 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3158 // Layout single-line LTR text with ellipsis.
3160 const std::string fontLatin( "TizenSans" );
3162 // Set a known font description
3163 FontDescriptionRun fontDescriptionRun01;
3164 fontDescriptionRun01.characterRun.characterIndex = 0u;
3165 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3166 fontDescriptionRun01.familyLength = fontLatin.size();
3167 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3168 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3169 fontDescriptionRun01.familyDefined = true;
3170 fontDescriptionRun01.weightDefined = false;
3171 fontDescriptionRun01.widthDefined = false;
3172 fontDescriptionRun01.slantDefined = false;
3173 fontDescriptionRun01.sizeDefined = false;
3175 Vector<FontDescriptionRun> fontDescriptionRuns;
3176 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3178 struct LineRun line01 =
3191 Vector<LineRun> lines;
3192 lines.PushBack( line01 );
3196 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
3199 Size textArea( 100.f, 50.f );
3200 Size layoutSize( 100.f, 20.f );
3202 LayoutTextData data =
3204 "Layout single-line LTR text with ellipsis.",
3205 "Hello world demo hello world demo hello world demo.",
3208 fontDescriptionRuns.Begin(),
3214 Layout::Engine::SINGLE_LINE_BOX,
3221 if( !LayoutTextTest( data ) )
3223 tet_result(TET_FAIL);
3226 tet_result(TET_PASS);
3230 int UtcDaliTextLayoutEllipsis02(void)
3232 ToolkitTestApplication application;
3233 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3235 // Layout multi-line LTR text with ellipsis.
3237 const std::string fontLatin( "TizenSans" );
3239 // Set a known font description
3240 FontDescriptionRun fontDescriptionRun01;
3241 fontDescriptionRun01.characterRun.characterIndex = 0u;
3242 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3243 fontDescriptionRun01.familyLength = fontLatin.size();
3244 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3245 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3246 fontDescriptionRun01.familyDefined = true;
3247 fontDescriptionRun01.weightDefined = false;
3248 fontDescriptionRun01.widthDefined = false;
3249 fontDescriptionRun01.slantDefined = false;
3250 fontDescriptionRun01.sizeDefined = false;
3252 Vector<FontDescriptionRun> fontDescriptionRuns;
3253 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3255 struct LineRun line01 =
3268 struct LineRun line02 =
3281 Vector<LineRun> lines;
3282 lines.PushBack( line01 );
3283 lines.PushBack( line02 );
3287 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
3288 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 52.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
3291 Size textArea( 100.f, 50.f );
3292 Size layoutSize( 100.f, 40.f );
3294 LayoutTextData data =
3296 "Layout multi-line LTR text with ellipsis.",
3297 "Hello world demo hello world demo hello world demo.",
3300 fontDescriptionRuns.Begin(),
3306 Layout::Engine::MULTI_LINE_BOX,
3313 if( !LayoutTextTest( data ) )
3315 tet_result(TET_FAIL);
3318 tet_result(TET_PASS);
3322 int UtcDaliTextLayoutEllipsis03(void)
3324 ToolkitTestApplication application;
3325 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3327 // Layout single-line RTL text with ellipsis.
3329 const std::string fontHebrew( "TizenSansHebrew" );
3330 const std::string fontArabic( "TizenSansArabic" );
3332 // Set a known font description
3333 FontDescriptionRun fontDescriptionRun01;
3334 fontDescriptionRun01.characterRun.characterIndex = 0u;
3335 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3336 fontDescriptionRun01.familyLength = fontHebrew.size();
3337 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3338 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3339 fontDescriptionRun01.familyDefined = true;
3340 fontDescriptionRun01.weightDefined = false;
3341 fontDescriptionRun01.widthDefined = false;
3342 fontDescriptionRun01.slantDefined = false;
3343 fontDescriptionRun01.sizeDefined = false;
3345 FontDescriptionRun fontDescriptionRun02;
3346 fontDescriptionRun02.characterRun.characterIndex = 10u;
3347 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3348 fontDescriptionRun02.familyLength = fontArabic.size();
3349 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3350 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3351 fontDescriptionRun02.familyDefined = true;
3352 fontDescriptionRun02.weightDefined = false;
3353 fontDescriptionRun02.widthDefined = false;
3354 fontDescriptionRun02.slantDefined = false;
3355 fontDescriptionRun02.sizeDefined = false;
3357 FontDescriptionRun fontDescriptionRun03;
3358 fontDescriptionRun03.characterRun.characterIndex = 24u;
3359 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3360 fontDescriptionRun03.familyLength = fontHebrew.size();
3361 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3362 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3363 fontDescriptionRun03.familyDefined = true;
3364 fontDescriptionRun03.weightDefined = false;
3365 fontDescriptionRun03.widthDefined = false;
3366 fontDescriptionRun03.slantDefined = false;
3367 fontDescriptionRun03.sizeDefined = false;
3369 FontDescriptionRun fontDescriptionRun04;
3370 fontDescriptionRun04.characterRun.characterIndex = 34u;
3371 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3372 fontDescriptionRun04.familyLength = fontArabic.size();
3373 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3374 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3375 fontDescriptionRun04.familyDefined = true;
3376 fontDescriptionRun04.weightDefined = false;
3377 fontDescriptionRun04.widthDefined = false;
3378 fontDescriptionRun04.slantDefined = false;
3379 fontDescriptionRun04.sizeDefined = false;
3381 FontDescriptionRun fontDescriptionRun05;
3382 fontDescriptionRun05.characterRun.characterIndex = 48u;
3383 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3384 fontDescriptionRun05.familyLength = fontHebrew.size();
3385 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3386 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3387 fontDescriptionRun05.familyDefined = true;
3388 fontDescriptionRun05.weightDefined = false;
3389 fontDescriptionRun05.widthDefined = false;
3390 fontDescriptionRun05.slantDefined = false;
3391 fontDescriptionRun05.sizeDefined = false;
3393 FontDescriptionRun fontDescriptionRun06;
3394 fontDescriptionRun06.characterRun.characterIndex = 58u;
3395 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3396 fontDescriptionRun06.familyLength = fontArabic.size();
3397 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3398 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3399 fontDescriptionRun06.familyDefined = true;
3400 fontDescriptionRun06.weightDefined = false;
3401 fontDescriptionRun06.widthDefined = false;
3402 fontDescriptionRun06.slantDefined = false;
3403 fontDescriptionRun06.sizeDefined = false;
3405 Vector<FontDescriptionRun> fontDescriptionRuns;
3406 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3407 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3408 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3409 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3410 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3411 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3413 struct LineRun line01 =
3426 Vector<LineRun> lines;
3427 lines.PushBack( line01 );
3431 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3434 Size textArea( 100.f, 50.f );
3435 Size layoutSize( 100.f, 20.f );
3437 LayoutTextData data =
3439 "Layout single-line RTL text with ellipsis.",
3440 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3443 fontDescriptionRuns.Begin(),
3449 Layout::Engine::SINGLE_LINE_BOX,
3456 if( !LayoutTextTest( data ) )
3458 tet_result(TET_FAIL);
3461 tet_result(TET_PASS);
3465 int UtcDaliTextLayoutEllipsis04(void)
3467 ToolkitTestApplication application;
3468 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3470 // Layout multi-line RTL text with ellipsis.
3472 const std::string fontHebrew( "TizenSansHebrew" );
3473 const std::string fontArabic( "TizenSansArabic" );
3475 // Set a known font description
3476 FontDescriptionRun fontDescriptionRun01;
3477 fontDescriptionRun01.characterRun.characterIndex = 0u;
3478 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3479 fontDescriptionRun01.familyLength = fontHebrew.size();
3480 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3481 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3482 fontDescriptionRun01.familyDefined = true;
3483 fontDescriptionRun01.weightDefined = false;
3484 fontDescriptionRun01.widthDefined = false;
3485 fontDescriptionRun01.slantDefined = false;
3486 fontDescriptionRun01.sizeDefined = false;
3488 FontDescriptionRun fontDescriptionRun02;
3489 fontDescriptionRun02.characterRun.characterIndex = 10u;
3490 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3491 fontDescriptionRun02.familyLength = fontArabic.size();
3492 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3493 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3494 fontDescriptionRun02.familyDefined = true;
3495 fontDescriptionRun02.weightDefined = false;
3496 fontDescriptionRun02.widthDefined = false;
3497 fontDescriptionRun02.slantDefined = false;
3498 fontDescriptionRun02.sizeDefined = false;
3500 FontDescriptionRun fontDescriptionRun03;
3501 fontDescriptionRun03.characterRun.characterIndex = 24u;
3502 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3503 fontDescriptionRun03.familyLength = fontHebrew.size();
3504 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3505 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3506 fontDescriptionRun03.familyDefined = true;
3507 fontDescriptionRun03.weightDefined = false;
3508 fontDescriptionRun03.widthDefined = false;
3509 fontDescriptionRun03.slantDefined = false;
3510 fontDescriptionRun03.sizeDefined = false;
3512 FontDescriptionRun fontDescriptionRun04;
3513 fontDescriptionRun04.characterRun.characterIndex = 34u;
3514 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3515 fontDescriptionRun04.familyLength = fontArabic.size();
3516 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3517 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3518 fontDescriptionRun04.familyDefined = true;
3519 fontDescriptionRun04.weightDefined = false;
3520 fontDescriptionRun04.widthDefined = false;
3521 fontDescriptionRun04.slantDefined = false;
3522 fontDescriptionRun04.sizeDefined = false;
3524 FontDescriptionRun fontDescriptionRun05;
3525 fontDescriptionRun05.characterRun.characterIndex = 48u;
3526 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3527 fontDescriptionRun05.familyLength = fontHebrew.size();
3528 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3529 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3530 fontDescriptionRun05.familyDefined = true;
3531 fontDescriptionRun05.weightDefined = false;
3532 fontDescriptionRun05.widthDefined = false;
3533 fontDescriptionRun05.slantDefined = false;
3534 fontDescriptionRun05.sizeDefined = false;
3536 FontDescriptionRun fontDescriptionRun06;
3537 fontDescriptionRun06.characterRun.characterIndex = 58u;
3538 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3539 fontDescriptionRun06.familyLength = fontArabic.size();
3540 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3541 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3542 fontDescriptionRun06.familyDefined = true;
3543 fontDescriptionRun06.weightDefined = false;
3544 fontDescriptionRun06.widthDefined = false;
3545 fontDescriptionRun06.slantDefined = false;
3546 fontDescriptionRun06.sizeDefined = false;
3548 Vector<FontDescriptionRun> fontDescriptionRuns;
3549 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3550 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3551 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3552 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3553 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3554 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3556 struct LineRun line01 =
3569 struct LineRun line02 =
3582 Vector<LineRun> lines;
3583 lines.PushBack( line01 );
3584 lines.PushBack( line02 );
3588 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3589 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f,
3592 Size textArea( 100.f, 50.f );
3593 Size layoutSize( 100.f, 40.f );
3595 LayoutTextData data =
3597 "Layout single-line RTL text with ellipsis.",
3598 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3601 fontDescriptionRuns.Begin(),
3607 Layout::Engine::MULTI_LINE_BOX,
3614 if( !LayoutTextTest( data ) )
3616 tet_result(TET_FAIL);
3619 tet_result(TET_PASS);
3623 int UtcDaliTextLayoutEllipsis05(void)
3625 ToolkitTestApplication application;
3626 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3628 const std::string fontLatin( "TizenSans" );
3630 // Set a known font description
3631 FontDescriptionRun fontDescriptionRun01;
3632 fontDescriptionRun01.characterRun.characterIndex = 0u;
3633 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3634 fontDescriptionRun01.familyLength = fontLatin.size();
3635 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3636 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3637 fontDescriptionRun01.familyDefined = true;
3638 fontDescriptionRun01.weightDefined = false;
3639 fontDescriptionRun01.widthDefined = false;
3640 fontDescriptionRun01.slantDefined = false;
3641 fontDescriptionRun01.sizeDefined = false;
3643 Vector<FontDescriptionRun> fontDescriptionRuns;
3644 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3646 struct LineRun line01 =
3659 Vector<LineRun> lines;
3660 lines.PushBack( line01 );
3667 Size textArea( 100.f, 19.f );
3668 Size layoutSize( 100.f, 20.f );
3670 LayoutTextData data =
3672 "Not enough height.",
3676 fontDescriptionRuns.Begin(),
3682 Layout::Engine::MULTI_LINE_BOX,
3689 if( !LayoutTextTest( data ) )
3691 tet_result(TET_FAIL);
3694 tet_result(TET_PASS);
3698 int UtcDaliTextReorderLayout01(void)
3700 ToolkitTestApplication application;
3701 tet_infoline(" UtcDaliTextReorderLayout01");
3703 // Reorder lines. No right to left characters.
3705 const std::string fontLatin( "TizenSans" );
3707 // Set a known font description
3708 FontDescriptionRun fontDescriptionRun01;
3709 fontDescriptionRun01.characterRun.characterIndex = 0u;
3710 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3711 fontDescriptionRun01.familyLength = fontLatin.size();
3712 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3713 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3714 fontDescriptionRun01.familyDefined = true;
3715 fontDescriptionRun01.weightDefined = false;
3716 fontDescriptionRun01.widthDefined = false;
3717 fontDescriptionRun01.slantDefined = false;
3718 fontDescriptionRun01.sizeDefined = false;
3720 Vector<FontDescriptionRun> fontDescriptionRuns;
3721 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3725 1.f, -12.f, 11.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
3728 Size textArea( 100.f, 300.f );
3730 ReLayoutRightToLeftLinesData data =
3732 "Text with no right to left text.",
3736 fontDescriptionRuns.Begin(),
3743 if( !ReLayoutRightToLeftLinesTest( data ) )
3745 tet_result(TET_FAIL);
3748 tet_result(TET_PASS);
3752 int UtcDaliTextReorderLayout02(void)
3754 ToolkitTestApplication application;
3755 tet_infoline(" UtcDaliTextReorderLayout02");
3757 // Reorder lines of the first paragraph.
3759 const std::string fontHebrew( "TizenSansHebrew" );
3760 const std::string fontArabic( "TizenSansArabic" );
3762 // Set a known font description
3763 FontDescriptionRun fontDescriptionRun01;
3764 fontDescriptionRun01.characterRun.characterIndex = 0u;
3765 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3766 fontDescriptionRun01.familyLength = fontHebrew.size();
3767 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3768 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3769 fontDescriptionRun01.familyDefined = true;
3770 fontDescriptionRun01.weightDefined = false;
3771 fontDescriptionRun01.widthDefined = false;
3772 fontDescriptionRun01.slantDefined = false;
3773 fontDescriptionRun01.sizeDefined = false;
3775 FontDescriptionRun fontDescriptionRun02;
3776 fontDescriptionRun02.characterRun.characterIndex = 10u;
3777 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3778 fontDescriptionRun02.familyLength = fontArabic.size();
3779 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3780 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3781 fontDescriptionRun02.familyDefined = true;
3782 fontDescriptionRun02.weightDefined = false;
3783 fontDescriptionRun02.widthDefined = false;
3784 fontDescriptionRun02.slantDefined = false;
3785 fontDescriptionRun02.sizeDefined = false;
3787 FontDescriptionRun fontDescriptionRun03;
3788 fontDescriptionRun03.characterRun.characterIndex = 24u;
3789 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3790 fontDescriptionRun03.familyLength = fontArabic.size();
3791 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3792 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3793 fontDescriptionRun03.familyDefined = true;
3794 fontDescriptionRun03.weightDefined = false;
3795 fontDescriptionRun03.widthDefined = false;
3796 fontDescriptionRun03.slantDefined = false;
3797 fontDescriptionRun03.sizeDefined = false;
3799 FontDescriptionRun fontDescriptionRun04;
3800 fontDescriptionRun04.characterRun.characterIndex = 38u;
3801 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3802 fontDescriptionRun04.familyLength = fontHebrew.size();
3803 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3804 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3805 fontDescriptionRun04.familyDefined = true;
3806 fontDescriptionRun04.weightDefined = false;
3807 fontDescriptionRun04.widthDefined = false;
3808 fontDescriptionRun04.slantDefined = false;
3809 fontDescriptionRun04.sizeDefined = false;
3811 FontDescriptionRun fontDescriptionRun05;
3812 fontDescriptionRun05.characterRun.characterIndex = 48u;
3813 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3814 fontDescriptionRun05.familyLength = fontHebrew.size();
3815 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3816 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3817 fontDescriptionRun05.familyDefined = true;
3818 fontDescriptionRun05.weightDefined = false;
3819 fontDescriptionRun05.widthDefined = false;
3820 fontDescriptionRun05.slantDefined = false;
3821 fontDescriptionRun05.sizeDefined = false;
3823 FontDescriptionRun fontDescriptionRun06;
3824 fontDescriptionRun06.characterRun.characterIndex = 58u;
3825 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3826 fontDescriptionRun06.familyLength = fontArabic.size();
3827 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3828 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3829 fontDescriptionRun06.familyDefined = true;
3830 fontDescriptionRun06.weightDefined = false;
3831 fontDescriptionRun06.widthDefined = false;
3832 fontDescriptionRun06.slantDefined = false;
3833 fontDescriptionRun06.sizeDefined = false;
3835 Vector<FontDescriptionRun> fontDescriptionRuns;
3836 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3837 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3838 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3839 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3840 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3841 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3845 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
3846 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 11.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,
3847 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
3848 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3849 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3850 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3853 Size textArea( 100.f, 300.f );
3855 ReLayoutRightToLeftLinesData data =
3857 "Paragraphs with right to left text.",
3858 "שלום עולם مرحبا بالعالم\n"
3859 "مرحبا بالعالم שלום עולם\n"
3860 "שלום עולם مرحبا بالعالم.",
3863 fontDescriptionRuns.Begin(),
3870 if( !ReLayoutRightToLeftLinesTest( data ) )
3872 tet_result(TET_FAIL);
3875 tet_result(TET_PASS);
3879 int UtcDaliTextReorderLayout03(void)
3881 ToolkitTestApplication application;
3882 tet_infoline(" UtcDaliTextReorderLayout03");
3884 // Reorder lines of the mid paragraph.
3886 const std::string fontHebrew( "TizenSansHebrew" );
3887 const std::string fontArabic( "TizenSansArabic" );
3889 // Set a known font description
3890 FontDescriptionRun fontDescriptionRun01;
3891 fontDescriptionRun01.characterRun.characterIndex = 0u;
3892 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3893 fontDescriptionRun01.familyLength = fontHebrew.size();
3894 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3895 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3896 fontDescriptionRun01.familyDefined = true;
3897 fontDescriptionRun01.weightDefined = false;
3898 fontDescriptionRun01.widthDefined = false;
3899 fontDescriptionRun01.slantDefined = false;
3900 fontDescriptionRun01.sizeDefined = false;
3902 FontDescriptionRun fontDescriptionRun02;
3903 fontDescriptionRun02.characterRun.characterIndex = 10u;
3904 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3905 fontDescriptionRun02.familyLength = fontArabic.size();
3906 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3907 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3908 fontDescriptionRun02.familyDefined = true;
3909 fontDescriptionRun02.weightDefined = false;
3910 fontDescriptionRun02.widthDefined = false;
3911 fontDescriptionRun02.slantDefined = false;
3912 fontDescriptionRun02.sizeDefined = false;
3914 FontDescriptionRun fontDescriptionRun03;
3915 fontDescriptionRun03.characterRun.characterIndex = 24u;
3916 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3917 fontDescriptionRun03.familyLength = fontArabic.size();
3918 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3919 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3920 fontDescriptionRun03.familyDefined = true;
3921 fontDescriptionRun03.weightDefined = false;
3922 fontDescriptionRun03.widthDefined = false;
3923 fontDescriptionRun03.slantDefined = false;
3924 fontDescriptionRun03.sizeDefined = false;
3926 FontDescriptionRun fontDescriptionRun04;
3927 fontDescriptionRun04.characterRun.characterIndex = 38u;
3928 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3929 fontDescriptionRun04.familyLength = fontHebrew.size();
3930 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3931 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3932 fontDescriptionRun04.familyDefined = true;
3933 fontDescriptionRun04.weightDefined = false;
3934 fontDescriptionRun04.widthDefined = false;
3935 fontDescriptionRun04.slantDefined = false;
3936 fontDescriptionRun04.sizeDefined = false;
3938 FontDescriptionRun fontDescriptionRun05;
3939 fontDescriptionRun05.characterRun.characterIndex = 48u;
3940 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3941 fontDescriptionRun05.familyLength = fontHebrew.size();
3942 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3943 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3944 fontDescriptionRun05.familyDefined = true;
3945 fontDescriptionRun05.weightDefined = false;
3946 fontDescriptionRun05.widthDefined = false;
3947 fontDescriptionRun05.slantDefined = false;
3948 fontDescriptionRun05.sizeDefined = false;
3950 FontDescriptionRun fontDescriptionRun06;
3951 fontDescriptionRun06.characterRun.characterIndex = 58u;
3952 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3953 fontDescriptionRun06.familyLength = fontArabic.size();
3954 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3955 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3956 fontDescriptionRun06.familyDefined = true;
3957 fontDescriptionRun06.weightDefined = false;
3958 fontDescriptionRun06.widthDefined = false;
3959 fontDescriptionRun06.slantDefined = false;
3960 fontDescriptionRun06.sizeDefined = false;
3962 Vector<FontDescriptionRun> fontDescriptionRuns;
3963 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3964 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3965 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3966 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3967 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3968 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3972 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3973 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3974 86.f, -8.f, 81.f, -6.f, 74.f, -8.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f,
3975 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3976 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3977 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3980 Size textArea( 100.f, 300.f );
3982 ReLayoutRightToLeftLinesData data =
3984 "Paragraphs with right to left text.",
3985 "שלום עולם مرحبا بالعالم\n"
3986 "مرحبا بالعالم שלום עולם\n"
3987 "שלום עולם مرحبا بالعالم.",
3990 fontDescriptionRuns.Begin(),
3997 if( !ReLayoutRightToLeftLinesTest( data ) )
3999 tet_result(TET_FAIL);
4002 tet_result(TET_PASS);
4006 int UtcDaliTextReorderLayout04(void)
4008 ToolkitTestApplication application;
4009 tet_infoline(" UtcDaliTextReorderLayout04");
4011 // Reorder lines of the last paragraph.
4013 const std::string fontHebrew( "TizenSansHebrew" );
4014 const std::string fontArabic( "TizenSansArabic" );
4016 // Set a known font description
4017 FontDescriptionRun fontDescriptionRun01;
4018 fontDescriptionRun01.characterRun.characterIndex = 0u;
4019 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4020 fontDescriptionRun01.familyLength = fontHebrew.size();
4021 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4022 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
4023 fontDescriptionRun01.familyDefined = true;
4024 fontDescriptionRun01.weightDefined = false;
4025 fontDescriptionRun01.widthDefined = false;
4026 fontDescriptionRun01.slantDefined = false;
4027 fontDescriptionRun01.sizeDefined = false;
4029 FontDescriptionRun fontDescriptionRun02;
4030 fontDescriptionRun02.characterRun.characterIndex = 10u;
4031 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4032 fontDescriptionRun02.familyLength = fontArabic.size();
4033 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4034 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
4035 fontDescriptionRun02.familyDefined = true;
4036 fontDescriptionRun02.weightDefined = false;
4037 fontDescriptionRun02.widthDefined = false;
4038 fontDescriptionRun02.slantDefined = false;
4039 fontDescriptionRun02.sizeDefined = false;
4041 FontDescriptionRun fontDescriptionRun03;
4042 fontDescriptionRun03.characterRun.characterIndex = 24u;
4043 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4044 fontDescriptionRun03.familyLength = fontArabic.size();
4045 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4046 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4047 fontDescriptionRun03.familyDefined = true;
4048 fontDescriptionRun03.weightDefined = false;
4049 fontDescriptionRun03.widthDefined = false;
4050 fontDescriptionRun03.slantDefined = false;
4051 fontDescriptionRun03.sizeDefined = false;
4053 FontDescriptionRun fontDescriptionRun04;
4054 fontDescriptionRun04.characterRun.characterIndex = 38u;
4055 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4056 fontDescriptionRun04.familyLength = fontHebrew.size();
4057 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4058 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4059 fontDescriptionRun04.familyDefined = true;
4060 fontDescriptionRun04.weightDefined = false;
4061 fontDescriptionRun04.widthDefined = false;
4062 fontDescriptionRun04.slantDefined = false;
4063 fontDescriptionRun04.sizeDefined = false;
4065 FontDescriptionRun fontDescriptionRun05;
4066 fontDescriptionRun05.characterRun.characterIndex = 48u;
4067 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4068 fontDescriptionRun05.familyLength = fontHebrew.size();
4069 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4070 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4071 fontDescriptionRun05.familyDefined = true;
4072 fontDescriptionRun05.weightDefined = false;
4073 fontDescriptionRun05.widthDefined = false;
4074 fontDescriptionRun05.slantDefined = false;
4075 fontDescriptionRun05.sizeDefined = false;
4077 FontDescriptionRun fontDescriptionRun06;
4078 fontDescriptionRun06.characterRun.characterIndex = 58u;
4079 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4080 fontDescriptionRun06.familyLength = fontArabic.size();
4081 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4082 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4083 fontDescriptionRun06.familyDefined = true;
4084 fontDescriptionRun06.weightDefined = false;
4085 fontDescriptionRun06.widthDefined = false;
4086 fontDescriptionRun06.slantDefined = false;
4087 fontDescriptionRun06.sizeDefined = false;
4089 Vector<FontDescriptionRun> fontDescriptionRuns;
4090 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4091 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4092 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4093 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4094 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4095 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4099 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -8.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4100 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 9.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
4101 0.f, -8.f, 7.f, -6.f, 12.f, -8.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 36.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
4102 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4103 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -8.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
4104 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 16.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4107 Size textArea( 100.f, 300.f );
4109 ReLayoutRightToLeftLinesData data =
4111 "Paragraphs with right to left text.",
4112 "שלום עולם مرحبا بالعالم\n"
4113 "مرحبا بالعالم שלום עולם\n"
4114 "שלום עולם مرحبا بالعالم.",
4117 fontDescriptionRuns.Begin(),
4124 if( !ReLayoutRightToLeftLinesTest( data ) )
4126 tet_result(TET_FAIL);
4129 tet_result(TET_PASS);
4133 int UtcDaliTextAlign01(void)
4135 ToolkitTestApplication application;
4136 tet_infoline(" UtcDaliTextAlign01");
4138 // Calculate text alignment.
4140 const std::string fontLatin( "TizenSans" );
4141 const std::string fontHebrew( "TizenSansHebrew" );
4142 const std::string fontArabic( "TizenSansArabic" );
4144 // Set a known font description
4145 FontDescriptionRun fontDescriptionRun01;
4146 fontDescriptionRun01.characterRun.characterIndex = 0u;
4147 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4148 fontDescriptionRun01.familyLength = fontLatin.size();
4149 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4150 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4151 fontDescriptionRun01.familyDefined = true;
4152 fontDescriptionRun01.weightDefined = false;
4153 fontDescriptionRun01.widthDefined = false;
4154 fontDescriptionRun01.slantDefined = false;
4155 fontDescriptionRun01.sizeDefined = false;
4157 FontDescriptionRun fontDescriptionRun02;
4158 fontDescriptionRun02.characterRun.characterIndex = 12u;
4159 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4160 fontDescriptionRun02.familyLength = fontHebrew.size();
4161 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4162 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4163 fontDescriptionRun02.familyDefined = true;
4164 fontDescriptionRun02.weightDefined = false;
4165 fontDescriptionRun02.widthDefined = false;
4166 fontDescriptionRun02.slantDefined = false;
4167 fontDescriptionRun02.sizeDefined = false;
4169 FontDescriptionRun fontDescriptionRun03;
4170 fontDescriptionRun03.characterRun.characterIndex = 22u;
4171 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4172 fontDescriptionRun03.familyLength = fontArabic.size();
4173 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4174 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4175 fontDescriptionRun03.familyDefined = true;
4176 fontDescriptionRun03.weightDefined = false;
4177 fontDescriptionRun03.widthDefined = false;
4178 fontDescriptionRun03.slantDefined = false;
4179 fontDescriptionRun03.sizeDefined = false;
4181 FontDescriptionRun fontDescriptionRun04;
4182 fontDescriptionRun04.characterRun.characterIndex = 36u;
4183 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4184 fontDescriptionRun04.familyLength = fontLatin.size();
4185 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4186 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4187 fontDescriptionRun04.familyDefined = true;
4188 fontDescriptionRun04.weightDefined = false;
4189 fontDescriptionRun04.widthDefined = false;
4190 fontDescriptionRun04.slantDefined = false;
4191 fontDescriptionRun04.sizeDefined = false;
4193 FontDescriptionRun fontDescriptionRun05;
4194 fontDescriptionRun05.characterRun.characterIndex = 48u;
4195 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4196 fontDescriptionRun05.familyLength = fontLatin.size();
4197 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4198 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4199 fontDescriptionRun05.familyDefined = true;
4200 fontDescriptionRun05.weightDefined = false;
4201 fontDescriptionRun05.widthDefined = false;
4202 fontDescriptionRun05.slantDefined = false;
4203 fontDescriptionRun05.sizeDefined = false;
4205 FontDescriptionRun fontDescriptionRun06;
4206 fontDescriptionRun06.characterRun.characterIndex = 60u;
4207 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4208 fontDescriptionRun06.familyLength = fontArabic.size();
4209 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4210 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4211 fontDescriptionRun06.familyDefined = true;
4212 fontDescriptionRun06.weightDefined = false;
4213 fontDescriptionRun06.widthDefined = false;
4214 fontDescriptionRun06.slantDefined = false;
4215 fontDescriptionRun06.sizeDefined = false;
4217 Vector<FontDescriptionRun> fontDescriptionRuns;
4218 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4219 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4220 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4221 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4222 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4223 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4225 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4227 Size textArea( 100.f, 300.f );
4230 "Begin alignment for the first paragraph.",
4231 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4234 fontDescriptionRuns.Begin(),
4235 Text::HorizontalAlignment::BEGIN,
4236 Text::VerticalAlignment::TOP,
4243 if( !AlignTest( data ) )
4245 tet_result(TET_FAIL);
4248 tet_result(TET_PASS);
4252 int UtcDaliTextAlign02(void)
4254 ToolkitTestApplication application;
4255 tet_infoline(" UtcDaliTextAlign02");
4257 // Calculate text alignment.
4259 const std::string fontLatin( "TizenSans" );
4260 const std::string fontHebrew( "TizenSansHebrew" );
4261 const std::string fontArabic( "TizenSansArabic" );
4263 // Set a known font description
4264 FontDescriptionRun fontDescriptionRun01;
4265 fontDescriptionRun01.characterRun.characterIndex = 0u;
4266 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4267 fontDescriptionRun01.familyLength = fontLatin.size();
4268 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4269 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4270 fontDescriptionRun01.familyDefined = true;
4271 fontDescriptionRun01.weightDefined = false;
4272 fontDescriptionRun01.widthDefined = false;
4273 fontDescriptionRun01.slantDefined = false;
4274 fontDescriptionRun01.sizeDefined = false;
4276 FontDescriptionRun fontDescriptionRun02;
4277 fontDescriptionRun02.characterRun.characterIndex = 12u;
4278 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4279 fontDescriptionRun02.familyLength = fontHebrew.size();
4280 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4281 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4282 fontDescriptionRun02.familyDefined = true;
4283 fontDescriptionRun02.weightDefined = false;
4284 fontDescriptionRun02.widthDefined = false;
4285 fontDescriptionRun02.slantDefined = false;
4286 fontDescriptionRun02.sizeDefined = false;
4288 FontDescriptionRun fontDescriptionRun03;
4289 fontDescriptionRun03.characterRun.characterIndex = 22u;
4290 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4291 fontDescriptionRun03.familyLength = fontArabic.size();
4292 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4293 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4294 fontDescriptionRun03.familyDefined = true;
4295 fontDescriptionRun03.weightDefined = false;
4296 fontDescriptionRun03.widthDefined = false;
4297 fontDescriptionRun03.slantDefined = false;
4298 fontDescriptionRun03.sizeDefined = false;
4300 FontDescriptionRun fontDescriptionRun04;
4301 fontDescriptionRun04.characterRun.characterIndex = 36u;
4302 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4303 fontDescriptionRun04.familyLength = fontLatin.size();
4304 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4305 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4306 fontDescriptionRun04.familyDefined = true;
4307 fontDescriptionRun04.weightDefined = false;
4308 fontDescriptionRun04.widthDefined = false;
4309 fontDescriptionRun04.slantDefined = false;
4310 fontDescriptionRun04.sizeDefined = false;
4312 FontDescriptionRun fontDescriptionRun05;
4313 fontDescriptionRun05.characterRun.characterIndex = 48u;
4314 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4315 fontDescriptionRun05.familyLength = fontLatin.size();
4316 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4317 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4318 fontDescriptionRun05.familyDefined = true;
4319 fontDescriptionRun05.weightDefined = false;
4320 fontDescriptionRun05.widthDefined = false;
4321 fontDescriptionRun05.slantDefined = false;
4322 fontDescriptionRun05.sizeDefined = false;
4324 FontDescriptionRun fontDescriptionRun06;
4325 fontDescriptionRun06.characterRun.characterIndex = 60u;
4326 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4327 fontDescriptionRun06.familyLength = fontArabic.size();
4328 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4329 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4330 fontDescriptionRun06.familyDefined = true;
4331 fontDescriptionRun06.weightDefined = false;
4332 fontDescriptionRun06.widthDefined = false;
4333 fontDescriptionRun06.slantDefined = false;
4334 fontDescriptionRun06.sizeDefined = false;
4336 Vector<FontDescriptionRun> fontDescriptionRuns;
4337 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4338 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4339 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4340 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4341 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4342 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4344 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4346 Size textArea( 100.f, 300.f );
4349 "Begin alignment for the mid paragraph.",
4350 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4353 fontDescriptionRuns.Begin(),
4354 Text::HorizontalAlignment::BEGIN,
4355 Text::VerticalAlignment::TOP,
4362 if( !AlignTest( data ) )
4364 tet_result(TET_FAIL);
4367 tet_result(TET_PASS);
4371 int UtcDaliTextAlign03(void)
4373 ToolkitTestApplication application;
4374 tet_infoline(" UtcDaliTextAlign03");
4376 // Calculate text alignment.
4378 const std::string fontLatin( "TizenSans" );
4379 const std::string fontHebrew( "TizenSansHebrew" );
4380 const std::string fontArabic( "TizenSansArabic" );
4382 // Set a known font description
4383 FontDescriptionRun fontDescriptionRun01;
4384 fontDescriptionRun01.characterRun.characterIndex = 0u;
4385 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4386 fontDescriptionRun01.familyLength = fontLatin.size();
4387 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4388 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4389 fontDescriptionRun01.familyDefined = true;
4390 fontDescriptionRun01.weightDefined = false;
4391 fontDescriptionRun01.widthDefined = false;
4392 fontDescriptionRun01.slantDefined = false;
4393 fontDescriptionRun01.sizeDefined = false;
4395 FontDescriptionRun fontDescriptionRun02;
4396 fontDescriptionRun02.characterRun.characterIndex = 12u;
4397 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4398 fontDescriptionRun02.familyLength = fontHebrew.size();
4399 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4400 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4401 fontDescriptionRun02.familyDefined = true;
4402 fontDescriptionRun02.weightDefined = false;
4403 fontDescriptionRun02.widthDefined = false;
4404 fontDescriptionRun02.slantDefined = false;
4405 fontDescriptionRun02.sizeDefined = false;
4407 FontDescriptionRun fontDescriptionRun03;
4408 fontDescriptionRun03.characterRun.characterIndex = 22u;
4409 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4410 fontDescriptionRun03.familyLength = fontArabic.size();
4411 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4412 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4413 fontDescriptionRun03.familyDefined = true;
4414 fontDescriptionRun03.weightDefined = false;
4415 fontDescriptionRun03.widthDefined = false;
4416 fontDescriptionRun03.slantDefined = false;
4417 fontDescriptionRun03.sizeDefined = false;
4419 FontDescriptionRun fontDescriptionRun04;
4420 fontDescriptionRun04.characterRun.characterIndex = 36u;
4421 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4422 fontDescriptionRun04.familyLength = fontLatin.size();
4423 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4424 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4425 fontDescriptionRun04.familyDefined = true;
4426 fontDescriptionRun04.weightDefined = false;
4427 fontDescriptionRun04.widthDefined = false;
4428 fontDescriptionRun04.slantDefined = false;
4429 fontDescriptionRun04.sizeDefined = false;
4431 FontDescriptionRun fontDescriptionRun05;
4432 fontDescriptionRun05.characterRun.characterIndex = 48u;
4433 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4434 fontDescriptionRun05.familyLength = fontLatin.size();
4435 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4436 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4437 fontDescriptionRun05.familyDefined = true;
4438 fontDescriptionRun05.weightDefined = false;
4439 fontDescriptionRun05.widthDefined = false;
4440 fontDescriptionRun05.slantDefined = false;
4441 fontDescriptionRun05.sizeDefined = false;
4443 FontDescriptionRun fontDescriptionRun06;
4444 fontDescriptionRun06.characterRun.characterIndex = 60u;
4445 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4446 fontDescriptionRun06.familyLength = fontArabic.size();
4447 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4448 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4449 fontDescriptionRun06.familyDefined = true;
4450 fontDescriptionRun06.weightDefined = false;
4451 fontDescriptionRun06.widthDefined = false;
4452 fontDescriptionRun06.slantDefined = false;
4453 fontDescriptionRun06.sizeDefined = false;
4455 Vector<FontDescriptionRun> fontDescriptionRuns;
4456 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4457 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4458 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4459 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4460 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4461 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4463 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4465 Size textArea( 100.f, 300.f );
4468 "Begin alignment for the last paragraph.",
4469 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4472 fontDescriptionRuns.Begin(),
4473 Text::HorizontalAlignment::BEGIN,
4474 Text::VerticalAlignment::TOP,
4481 if( !AlignTest( data ) )
4483 tet_result(TET_FAIL);
4486 tet_result(TET_PASS);
4490 int UtcDaliTextAlign04(void)
4492 ToolkitTestApplication application;
4493 tet_infoline(" UtcDaliTextAlign04");
4495 // Calculate text alignment.
4497 const std::string fontLatin( "TizenSans" );
4498 const std::string fontHebrew( "TizenSansHebrew" );
4499 const std::string fontArabic( "TizenSansArabic" );
4501 // Set a known font description
4502 FontDescriptionRun fontDescriptionRun01;
4503 fontDescriptionRun01.characterRun.characterIndex = 0u;
4504 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4505 fontDescriptionRun01.familyLength = fontLatin.size();
4506 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4507 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4508 fontDescriptionRun01.familyDefined = true;
4509 fontDescriptionRun01.weightDefined = false;
4510 fontDescriptionRun01.widthDefined = false;
4511 fontDescriptionRun01.slantDefined = false;
4512 fontDescriptionRun01.sizeDefined = false;
4514 FontDescriptionRun fontDescriptionRun02;
4515 fontDescriptionRun02.characterRun.characterIndex = 12u;
4516 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4517 fontDescriptionRun02.familyLength = fontHebrew.size();
4518 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4519 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4520 fontDescriptionRun02.familyDefined = true;
4521 fontDescriptionRun02.weightDefined = false;
4522 fontDescriptionRun02.widthDefined = false;
4523 fontDescriptionRun02.slantDefined = false;
4524 fontDescriptionRun02.sizeDefined = false;
4526 FontDescriptionRun fontDescriptionRun03;
4527 fontDescriptionRun03.characterRun.characterIndex = 22u;
4528 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4529 fontDescriptionRun03.familyLength = fontArabic.size();
4530 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4531 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4532 fontDescriptionRun03.familyDefined = true;
4533 fontDescriptionRun03.weightDefined = false;
4534 fontDescriptionRun03.widthDefined = false;
4535 fontDescriptionRun03.slantDefined = false;
4536 fontDescriptionRun03.sizeDefined = false;
4538 FontDescriptionRun fontDescriptionRun04;
4539 fontDescriptionRun04.characterRun.characterIndex = 36u;
4540 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4541 fontDescriptionRun04.familyLength = fontLatin.size();
4542 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4543 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4544 fontDescriptionRun04.familyDefined = true;
4545 fontDescriptionRun04.weightDefined = false;
4546 fontDescriptionRun04.widthDefined = false;
4547 fontDescriptionRun04.slantDefined = false;
4548 fontDescriptionRun04.sizeDefined = false;
4550 FontDescriptionRun fontDescriptionRun05;
4551 fontDescriptionRun05.characterRun.characterIndex = 48u;
4552 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4553 fontDescriptionRun05.familyLength = fontLatin.size();
4554 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4555 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4556 fontDescriptionRun05.familyDefined = true;
4557 fontDescriptionRun05.weightDefined = false;
4558 fontDescriptionRun05.widthDefined = false;
4559 fontDescriptionRun05.slantDefined = false;
4560 fontDescriptionRun05.sizeDefined = false;
4562 FontDescriptionRun fontDescriptionRun06;
4563 fontDescriptionRun06.characterRun.characterIndex = 60u;
4564 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4565 fontDescriptionRun06.familyLength = fontArabic.size();
4566 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4567 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4568 fontDescriptionRun06.familyDefined = true;
4569 fontDescriptionRun06.weightDefined = false;
4570 fontDescriptionRun06.widthDefined = false;
4571 fontDescriptionRun06.slantDefined = false;
4572 fontDescriptionRun06.sizeDefined = false;
4574 Vector<FontDescriptionRun> fontDescriptionRuns;
4575 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4576 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4577 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4578 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4579 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4580 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4582 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4584 Size textArea( 100.f, 300.f );
4587 "Center alignment for the first paragraph.",
4588 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4591 fontDescriptionRuns.Begin(),
4592 Text::HorizontalAlignment::CENTER,
4593 Text::VerticalAlignment::TOP,
4600 if( !AlignTest( data ) )
4602 tet_result(TET_FAIL);
4605 tet_result(TET_PASS);
4609 int UtcDaliTextAlign05(void)
4611 ToolkitTestApplication application;
4612 tet_infoline(" UtcDaliTextAlign05");
4614 // Calculate text alignment.
4616 const std::string fontLatin( "TizenSans" );
4617 const std::string fontHebrew( "TizenSansHebrew" );
4618 const std::string fontArabic( "TizenSansArabic" );
4620 // Set a known font description
4621 FontDescriptionRun fontDescriptionRun01;
4622 fontDescriptionRun01.characterRun.characterIndex = 0u;
4623 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4624 fontDescriptionRun01.familyLength = fontLatin.size();
4625 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4626 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4627 fontDescriptionRun01.familyDefined = true;
4628 fontDescriptionRun01.weightDefined = false;
4629 fontDescriptionRun01.widthDefined = false;
4630 fontDescriptionRun01.slantDefined = false;
4631 fontDescriptionRun01.sizeDefined = false;
4633 FontDescriptionRun fontDescriptionRun02;
4634 fontDescriptionRun02.characterRun.characterIndex = 12u;
4635 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4636 fontDescriptionRun02.familyLength = fontHebrew.size();
4637 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4638 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4639 fontDescriptionRun02.familyDefined = true;
4640 fontDescriptionRun02.weightDefined = false;
4641 fontDescriptionRun02.widthDefined = false;
4642 fontDescriptionRun02.slantDefined = false;
4643 fontDescriptionRun02.sizeDefined = false;
4645 FontDescriptionRun fontDescriptionRun03;
4646 fontDescriptionRun03.characterRun.characterIndex = 22u;
4647 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4648 fontDescriptionRun03.familyLength = fontArabic.size();
4649 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4650 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4651 fontDescriptionRun03.familyDefined = true;
4652 fontDescriptionRun03.weightDefined = false;
4653 fontDescriptionRun03.widthDefined = false;
4654 fontDescriptionRun03.slantDefined = false;
4655 fontDescriptionRun03.sizeDefined = false;
4657 FontDescriptionRun fontDescriptionRun04;
4658 fontDescriptionRun04.characterRun.characterIndex = 36u;
4659 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4660 fontDescriptionRun04.familyLength = fontLatin.size();
4661 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4662 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4663 fontDescriptionRun04.familyDefined = true;
4664 fontDescriptionRun04.weightDefined = false;
4665 fontDescriptionRun04.widthDefined = false;
4666 fontDescriptionRun04.slantDefined = false;
4667 fontDescriptionRun04.sizeDefined = false;
4669 FontDescriptionRun fontDescriptionRun05;
4670 fontDescriptionRun05.characterRun.characterIndex = 48u;
4671 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4672 fontDescriptionRun05.familyLength = fontLatin.size();
4673 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4674 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4675 fontDescriptionRun05.familyDefined = true;
4676 fontDescriptionRun05.weightDefined = false;
4677 fontDescriptionRun05.widthDefined = false;
4678 fontDescriptionRun05.slantDefined = false;
4679 fontDescriptionRun05.sizeDefined = false;
4681 FontDescriptionRun fontDescriptionRun06;
4682 fontDescriptionRun06.characterRun.characterIndex = 60u;
4683 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4684 fontDescriptionRun06.familyLength = fontArabic.size();
4685 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4686 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4687 fontDescriptionRun06.familyDefined = true;
4688 fontDescriptionRun06.weightDefined = false;
4689 fontDescriptionRun06.widthDefined = false;
4690 fontDescriptionRun06.slantDefined = false;
4691 fontDescriptionRun06.sizeDefined = false;
4693 Vector<FontDescriptionRun> fontDescriptionRuns;
4694 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4695 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4696 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4697 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4698 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4699 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4701 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4703 Size textArea( 100.f, 300.f );
4706 "Center alignment for the mid paragraph.",
4707 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4710 fontDescriptionRuns.Begin(),
4711 Text::HorizontalAlignment::CENTER,
4712 Text::VerticalAlignment::TOP,
4719 if( !AlignTest( data ) )
4721 tet_result(TET_FAIL);
4724 tet_result(TET_PASS);
4728 int UtcDaliTextAlign06(void)
4730 ToolkitTestApplication application;
4731 tet_infoline(" UtcDaliTextAlign06");
4733 // Calculate text alignment.
4735 const std::string fontLatin( "TizenSans" );
4736 const std::string fontHebrew( "TizenSansHebrew" );
4737 const std::string fontArabic( "TizenSansArabic" );
4739 // Set a known font description
4740 FontDescriptionRun fontDescriptionRun01;
4741 fontDescriptionRun01.characterRun.characterIndex = 0u;
4742 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4743 fontDescriptionRun01.familyLength = fontLatin.size();
4744 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4745 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4746 fontDescriptionRun01.familyDefined = true;
4747 fontDescriptionRun01.weightDefined = false;
4748 fontDescriptionRun01.widthDefined = false;
4749 fontDescriptionRun01.slantDefined = false;
4750 fontDescriptionRun01.sizeDefined = false;
4752 FontDescriptionRun fontDescriptionRun02;
4753 fontDescriptionRun02.characterRun.characterIndex = 12u;
4754 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4755 fontDescriptionRun02.familyLength = fontHebrew.size();
4756 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4757 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4758 fontDescriptionRun02.familyDefined = true;
4759 fontDescriptionRun02.weightDefined = false;
4760 fontDescriptionRun02.widthDefined = false;
4761 fontDescriptionRun02.slantDefined = false;
4762 fontDescriptionRun02.sizeDefined = false;
4764 FontDescriptionRun fontDescriptionRun03;
4765 fontDescriptionRun03.characterRun.characterIndex = 22u;
4766 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4767 fontDescriptionRun03.familyLength = fontArabic.size();
4768 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4769 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4770 fontDescriptionRun03.familyDefined = true;
4771 fontDescriptionRun03.weightDefined = false;
4772 fontDescriptionRun03.widthDefined = false;
4773 fontDescriptionRun03.slantDefined = false;
4774 fontDescriptionRun03.sizeDefined = false;
4776 FontDescriptionRun fontDescriptionRun04;
4777 fontDescriptionRun04.characterRun.characterIndex = 36u;
4778 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4779 fontDescriptionRun04.familyLength = fontLatin.size();
4780 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4781 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4782 fontDescriptionRun04.familyDefined = true;
4783 fontDescriptionRun04.weightDefined = false;
4784 fontDescriptionRun04.widthDefined = false;
4785 fontDescriptionRun04.slantDefined = false;
4786 fontDescriptionRun04.sizeDefined = false;
4788 FontDescriptionRun fontDescriptionRun05;
4789 fontDescriptionRun05.characterRun.characterIndex = 48u;
4790 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4791 fontDescriptionRun05.familyLength = fontLatin.size();
4792 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4793 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4794 fontDescriptionRun05.familyDefined = true;
4795 fontDescriptionRun05.weightDefined = false;
4796 fontDescriptionRun05.widthDefined = false;
4797 fontDescriptionRun05.slantDefined = false;
4798 fontDescriptionRun05.sizeDefined = false;
4800 FontDescriptionRun fontDescriptionRun06;
4801 fontDescriptionRun06.characterRun.characterIndex = 60u;
4802 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4803 fontDescriptionRun06.familyLength = fontArabic.size();
4804 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4805 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4806 fontDescriptionRun06.familyDefined = true;
4807 fontDescriptionRun06.weightDefined = false;
4808 fontDescriptionRun06.widthDefined = false;
4809 fontDescriptionRun06.slantDefined = false;
4810 fontDescriptionRun06.sizeDefined = false;
4812 Vector<FontDescriptionRun> fontDescriptionRuns;
4813 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4814 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4815 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4816 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4817 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4818 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4820 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4822 Size textArea( 100.f, 300.f );
4825 "Center alignment for the last paragraph.",
4826 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4829 fontDescriptionRuns.Begin(),
4830 Text::HorizontalAlignment::CENTER,
4831 Text::VerticalAlignment::TOP,
4838 if( !AlignTest( data ) )
4840 tet_result(TET_FAIL);
4843 tet_result(TET_PASS);
4847 int UtcDaliTextAlign07(void)
4849 ToolkitTestApplication application;
4850 tet_infoline(" UtcDaliTextAlign07");
4852 // Calculate text alignment.
4854 const std::string fontLatin( "TizenSans" );
4855 const std::string fontHebrew( "TizenSansHebrew" );
4856 const std::string fontArabic( "TizenSansArabic" );
4858 // Set a known font description
4859 FontDescriptionRun fontDescriptionRun01;
4860 fontDescriptionRun01.characterRun.characterIndex = 0u;
4861 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4862 fontDescriptionRun01.familyLength = fontLatin.size();
4863 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4864 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4865 fontDescriptionRun01.familyDefined = true;
4866 fontDescriptionRun01.weightDefined = false;
4867 fontDescriptionRun01.widthDefined = false;
4868 fontDescriptionRun01.slantDefined = false;
4869 fontDescriptionRun01.sizeDefined = false;
4871 FontDescriptionRun fontDescriptionRun02;
4872 fontDescriptionRun02.characterRun.characterIndex = 12u;
4873 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4874 fontDescriptionRun02.familyLength = fontHebrew.size();
4875 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4876 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4877 fontDescriptionRun02.familyDefined = true;
4878 fontDescriptionRun02.weightDefined = false;
4879 fontDescriptionRun02.widthDefined = false;
4880 fontDescriptionRun02.slantDefined = false;
4881 fontDescriptionRun02.sizeDefined = false;
4883 FontDescriptionRun fontDescriptionRun03;
4884 fontDescriptionRun03.characterRun.characterIndex = 22u;
4885 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4886 fontDescriptionRun03.familyLength = fontArabic.size();
4887 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4888 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4889 fontDescriptionRun03.familyDefined = true;
4890 fontDescriptionRun03.weightDefined = false;
4891 fontDescriptionRun03.widthDefined = false;
4892 fontDescriptionRun03.slantDefined = false;
4893 fontDescriptionRun03.sizeDefined = false;
4895 FontDescriptionRun fontDescriptionRun04;
4896 fontDescriptionRun04.characterRun.characterIndex = 36u;
4897 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4898 fontDescriptionRun04.familyLength = fontLatin.size();
4899 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4900 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4901 fontDescriptionRun04.familyDefined = true;
4902 fontDescriptionRun04.weightDefined = false;
4903 fontDescriptionRun04.widthDefined = false;
4904 fontDescriptionRun04.slantDefined = false;
4905 fontDescriptionRun04.sizeDefined = false;
4907 FontDescriptionRun fontDescriptionRun05;
4908 fontDescriptionRun05.characterRun.characterIndex = 48u;
4909 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4910 fontDescriptionRun05.familyLength = fontLatin.size();
4911 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4912 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4913 fontDescriptionRun05.familyDefined = true;
4914 fontDescriptionRun05.weightDefined = false;
4915 fontDescriptionRun05.widthDefined = false;
4916 fontDescriptionRun05.slantDefined = false;
4917 fontDescriptionRun05.sizeDefined = false;
4919 FontDescriptionRun fontDescriptionRun06;
4920 fontDescriptionRun06.characterRun.characterIndex = 60u;
4921 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4922 fontDescriptionRun06.familyLength = fontArabic.size();
4923 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4924 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4925 fontDescriptionRun06.familyDefined = true;
4926 fontDescriptionRun06.weightDefined = false;
4927 fontDescriptionRun06.widthDefined = false;
4928 fontDescriptionRun06.slantDefined = false;
4929 fontDescriptionRun06.sizeDefined = false;
4931 Vector<FontDescriptionRun> fontDescriptionRuns;
4932 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4933 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4934 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4935 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4936 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4937 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4939 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4941 Size textArea( 100.f, 300.f );
4944 "End alignment for the first paragraph.",
4945 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4948 fontDescriptionRuns.Begin(),
4949 Text::HorizontalAlignment::END,
4950 Text::VerticalAlignment::TOP,
4957 if( !AlignTest( data ) )
4959 tet_result(TET_FAIL);
4962 tet_result(TET_PASS);
4966 int UtcDaliTextAlign08(void)
4968 ToolkitTestApplication application;
4969 tet_infoline(" UtcDaliTextAlign08");
4971 // Calculate text alignment.
4973 const std::string fontLatin( "TizenSans" );
4974 const std::string fontHebrew( "TizenSansHebrew" );
4975 const std::string fontArabic( "TizenSansArabic" );
4977 // Set a known font description
4978 FontDescriptionRun fontDescriptionRun01;
4979 fontDescriptionRun01.characterRun.characterIndex = 0u;
4980 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4981 fontDescriptionRun01.familyLength = fontLatin.size();
4982 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4983 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4984 fontDescriptionRun01.familyDefined = true;
4985 fontDescriptionRun01.weightDefined = false;
4986 fontDescriptionRun01.widthDefined = false;
4987 fontDescriptionRun01.slantDefined = false;
4988 fontDescriptionRun01.sizeDefined = false;
4990 FontDescriptionRun fontDescriptionRun02;
4991 fontDescriptionRun02.characterRun.characterIndex = 12u;
4992 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4993 fontDescriptionRun02.familyLength = fontHebrew.size();
4994 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4995 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4996 fontDescriptionRun02.familyDefined = true;
4997 fontDescriptionRun02.weightDefined = false;
4998 fontDescriptionRun02.widthDefined = false;
4999 fontDescriptionRun02.slantDefined = false;
5000 fontDescriptionRun02.sizeDefined = false;
5002 FontDescriptionRun fontDescriptionRun03;
5003 fontDescriptionRun03.characterRun.characterIndex = 22u;
5004 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5005 fontDescriptionRun03.familyLength = fontArabic.size();
5006 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5007 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5008 fontDescriptionRun03.familyDefined = true;
5009 fontDescriptionRun03.weightDefined = false;
5010 fontDescriptionRun03.widthDefined = false;
5011 fontDescriptionRun03.slantDefined = false;
5012 fontDescriptionRun03.sizeDefined = false;
5014 FontDescriptionRun fontDescriptionRun04;
5015 fontDescriptionRun04.characterRun.characterIndex = 36u;
5016 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5017 fontDescriptionRun04.familyLength = fontLatin.size();
5018 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5019 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5020 fontDescriptionRun04.familyDefined = true;
5021 fontDescriptionRun04.weightDefined = false;
5022 fontDescriptionRun04.widthDefined = false;
5023 fontDescriptionRun04.slantDefined = false;
5024 fontDescriptionRun04.sizeDefined = false;
5026 FontDescriptionRun fontDescriptionRun05;
5027 fontDescriptionRun05.characterRun.characterIndex = 48u;
5028 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5029 fontDescriptionRun05.familyLength = fontLatin.size();
5030 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5031 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5032 fontDescriptionRun05.familyDefined = true;
5033 fontDescriptionRun05.weightDefined = false;
5034 fontDescriptionRun05.widthDefined = false;
5035 fontDescriptionRun05.slantDefined = false;
5036 fontDescriptionRun05.sizeDefined = false;
5038 FontDescriptionRun fontDescriptionRun06;
5039 fontDescriptionRun06.characterRun.characterIndex = 60u;
5040 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5041 fontDescriptionRun06.familyLength = fontArabic.size();
5042 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5043 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5044 fontDescriptionRun06.familyDefined = true;
5045 fontDescriptionRun06.weightDefined = false;
5046 fontDescriptionRun06.widthDefined = false;
5047 fontDescriptionRun06.slantDefined = false;
5048 fontDescriptionRun06.sizeDefined = false;
5050 Vector<FontDescriptionRun> fontDescriptionRuns;
5051 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5052 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5053 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5054 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5055 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5056 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5058 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5060 Size textArea( 100.f, 300.f );
5063 "End alignment for the mid paragraph.",
5064 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5067 fontDescriptionRuns.Begin(),
5068 Text::HorizontalAlignment::END,
5069 Text::VerticalAlignment::TOP,
5076 if( !AlignTest( data ) )
5078 tet_result(TET_FAIL);
5081 tet_result(TET_PASS);
5085 int UtcDaliTextAlign09(void)
5087 ToolkitTestApplication application;
5088 tet_infoline(" UtcDaliTextAlign09");
5090 // Calculate text alignment.
5092 const std::string fontLatin( "TizenSans" );
5093 const std::string fontHebrew( "TizenSansHebrew" );
5094 const std::string fontArabic( "TizenSansArabic" );
5096 // Set a known font description
5097 FontDescriptionRun fontDescriptionRun01;
5098 fontDescriptionRun01.characterRun.characterIndex = 0u;
5099 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5100 fontDescriptionRun01.familyLength = fontLatin.size();
5101 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5102 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5103 fontDescriptionRun01.familyDefined = true;
5104 fontDescriptionRun01.weightDefined = false;
5105 fontDescriptionRun01.widthDefined = false;
5106 fontDescriptionRun01.slantDefined = false;
5107 fontDescriptionRun01.sizeDefined = false;
5109 FontDescriptionRun fontDescriptionRun02;
5110 fontDescriptionRun02.characterRun.characterIndex = 12u;
5111 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5112 fontDescriptionRun02.familyLength = fontHebrew.size();
5113 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5114 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5115 fontDescriptionRun02.familyDefined = true;
5116 fontDescriptionRun02.weightDefined = false;
5117 fontDescriptionRun02.widthDefined = false;
5118 fontDescriptionRun02.slantDefined = false;
5119 fontDescriptionRun02.sizeDefined = false;
5121 FontDescriptionRun fontDescriptionRun03;
5122 fontDescriptionRun03.characterRun.characterIndex = 22u;
5123 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5124 fontDescriptionRun03.familyLength = fontArabic.size();
5125 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5126 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5127 fontDescriptionRun03.familyDefined = true;
5128 fontDescriptionRun03.weightDefined = false;
5129 fontDescriptionRun03.widthDefined = false;
5130 fontDescriptionRun03.slantDefined = false;
5131 fontDescriptionRun03.sizeDefined = false;
5133 FontDescriptionRun fontDescriptionRun04;
5134 fontDescriptionRun04.characterRun.characterIndex = 36u;
5135 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5136 fontDescriptionRun04.familyLength = fontLatin.size();
5137 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5138 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5139 fontDescriptionRun04.familyDefined = true;
5140 fontDescriptionRun04.weightDefined = false;
5141 fontDescriptionRun04.widthDefined = false;
5142 fontDescriptionRun04.slantDefined = false;
5143 fontDescriptionRun04.sizeDefined = false;
5145 FontDescriptionRun fontDescriptionRun05;
5146 fontDescriptionRun05.characterRun.characterIndex = 48u;
5147 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5148 fontDescriptionRun05.familyLength = fontLatin.size();
5149 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5150 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5151 fontDescriptionRun05.familyDefined = true;
5152 fontDescriptionRun05.weightDefined = false;
5153 fontDescriptionRun05.widthDefined = false;
5154 fontDescriptionRun05.slantDefined = false;
5155 fontDescriptionRun05.sizeDefined = false;
5157 FontDescriptionRun fontDescriptionRun06;
5158 fontDescriptionRun06.characterRun.characterIndex = 60u;
5159 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5160 fontDescriptionRun06.familyLength = fontArabic.size();
5161 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5162 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5163 fontDescriptionRun06.familyDefined = true;
5164 fontDescriptionRun06.weightDefined = false;
5165 fontDescriptionRun06.widthDefined = false;
5166 fontDescriptionRun06.slantDefined = false;
5167 fontDescriptionRun06.sizeDefined = false;
5169 Vector<FontDescriptionRun> fontDescriptionRuns;
5170 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5171 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5172 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5173 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5174 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5175 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5177 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5179 Size textArea( 100.f, 300.f );
5182 "End alignment for the last paragraph.",
5183 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5186 fontDescriptionRuns.Begin(),
5187 Text::HorizontalAlignment::END,
5188 Text::VerticalAlignment::TOP,
5195 if( !AlignTest( data ) )
5197 tet_result(TET_FAIL);
5200 tet_result(TET_PASS);
5204 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5206 ToolkitTestApplication application;
5207 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5209 Layout::Engine engine;
5210 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5212 engine.SetDefaultLineSpacing( 10.f );
5213 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5215 tet_result(TET_PASS);