2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
114 // 2) Clear the layout.
115 Vector<LineRun>& lines = visualModel->mLines;
117 const Length numberOfCharacters = logicalModel->mText.Count();
118 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
119 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
120 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
122 LineIndex startRemoveIndex = 0u;
124 if( 0u != lines.Count() )
126 startRemoveIndex = lines.Count();
127 LineIndex endRemoveIndex = startRemoveIndex;
128 ClearGlyphRuns( data.startIndex,
129 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
134 // Update the character runs of the lines.
135 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
136 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
137 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
138 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
139 ClearCharacterRuns( startCharacterIndex,
140 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
145 lines.Erase( lines.Begin() + startRemoveIndex,
146 lines.Begin() + endRemoveIndex );
149 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
151 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
152 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
155 Layout::Engine engine;
156 engine.SetMetrics( metrics );
157 engine.SetLayout( data.layout );
159 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 Layout::Parameters layoutParameters( data.textArea,
162 logicalModel->mText.Begin(),
163 logicalModel->mLineBreakInfo.Begin(),
164 logicalModel->mWordBreakInfo.Begin(),
165 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
166 visualModel->mGlyphs.Begin(),
167 visualModel->mGlyphsToCharacters.Begin(),
168 visualModel->mCharactersPerGlyph.Begin(),
169 visualModel->mCharactersToGlyph.Begin(),
170 visualModel->mGlyphsPerCharacter.Begin(),
172 Layout::HORIZONTAL_ALIGN_BEGIN );
174 layoutParameters.isLastNewParagraph = isLastNewParagraph;
176 // The initial glyph and the number of glyphs to layout.
177 layoutParameters.startGlyphIndex = data.startIndex;
178 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
179 layoutParameters.startLineIndex = startRemoveIndex;
180 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
182 layoutSize = Vector2::ZERO;
184 const bool updated = engine.LayoutText( layoutParameters,
190 // 4) Compare the results.
192 if( updated != data.updated )
194 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
198 if( layoutSize != data.layoutSize )
200 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
204 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
206 const Vector2& position = *( glyphPositions.Begin() + index );
208 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
210 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
213 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
215 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
220 if( lines.Count() != data.numberOfLines )
222 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
226 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
228 const LineRun& line = *( lines.Begin() + index );
229 const LineRun& expectedLine = *( data.lines + index );
231 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
233 std::cout << " Different line info for line : " << index << std::endl;
235 std::cout << " expected" << std::endl;
236 Print( expectedLine );
239 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
241 std::cout << " Different line info for line : " << index << std::endl;
243 std::cout << " expected" << std::endl;
244 Print( expectedLine );
248 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
250 std::cout << " Different line info for line : " << index << std::endl;
252 std::cout << " expected" << std::endl;
253 Print( expectedLine );
256 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
258 std::cout << " Different line info for line : " << index << std::endl;
260 std::cout << " expected" << std::endl;
261 Print( expectedLine );
265 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
267 std::cout << " Different line info for line : " << index << std::endl;
269 std::cout << " expected" << std::endl;
270 Print( expectedLine );
274 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
276 std::cout << " Different line info for line : " << index << std::endl;
278 std::cout << " expected" << std::endl;
279 Print( expectedLine );
283 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
285 std::cout << " Different line info for line : " << index << std::endl;
287 std::cout << " expected" << std::endl;
288 Print( expectedLine );
292 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
294 std::cout << " Different line info for line : " << index << std::endl;
296 std::cout << " expected" << std::endl;
297 Print( expectedLine );
301 if( line.ellipsis != expectedLine.ellipsis )
303 std::cout << " Different line info for line : " << index << std::endl;
305 std::cout << " expected" << std::endl;
306 Print( expectedLine );
310 // Do not compare the alignment offset as it's not calculated in the layout.
311 // Do not compare the line direction as it's not set in the layout.
317 //////////////////////////////////////////////////////////
319 struct ReLayoutRightToLeftLinesData
321 std::string description;
324 unsigned int numberOfFonts;
325 FontDescriptionRun* fontDescriptions;
326 unsigned int totalNumberOfGlyphs;
328 unsigned int startIndex;
329 unsigned int numberOfCharacters;
332 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
335 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
336 fontClient.SetDpi( 96u, 96u );
338 char* pathNamePtr = get_current_dir_name();
339 const std::string pathName( pathNamePtr );
342 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
343 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
344 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
346 // 1) Create the model.
347 LogicalModelPtr logicalModel;
348 VisualModelPtr visualModel;
352 Vector<FontDescriptionRun> fontDescriptionRuns;
353 if( 0u != data.numberOfFonts )
355 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
356 data.fontDescriptions,
357 data.fontDescriptions + data.numberOfFonts );
360 LayoutOptions options;
361 options.reorder = false;
362 options.align = false;
363 CreateTextModel( data.text,
372 // 2) Call the ReLayoutRightToLeftLines() method.
373 Layout::Engine engine;
374 engine.SetMetrics( metrics );
376 Layout::Parameters layoutParameters( data.textArea,
377 logicalModel->mText.Begin(),
378 logicalModel->mLineBreakInfo.Begin(),
379 logicalModel->mWordBreakInfo.Begin(),
380 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
381 visualModel->mGlyphs.Begin(),
382 visualModel->mGlyphsToCharacters.Begin(),
383 visualModel->mCharactersPerGlyph.Begin(),
384 visualModel->mCharactersToGlyph.Begin(),
385 visualModel->mGlyphsPerCharacter.Begin(),
386 visualModel->mGlyphs.Count(),
387 Layout::HORIZONTAL_ALIGN_BEGIN );
389 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
390 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
392 engine.ReLayoutRightToLeftLines( layoutParameters,
394 data.numberOfCharacters,
395 visualModel->mGlyphPositions );
397 // 3) Compare the results.
398 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
400 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
402 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
406 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
408 const Vector2& position = *( glyphPositions.Begin() + index );
410 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
412 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
415 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
417 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
425 //////////////////////////////////////////////////////////
429 std::string description;
432 unsigned int numberOfFonts;
433 FontDescriptionRun* fontDescriptions;
434 Layout::HorizontalAlignment horizontalAlignment;
435 Layout::VerticalAlignment verticalAlignment;
436 unsigned int startIndex;
437 unsigned int numberOfCharacters;
438 unsigned int numberOfLines;
442 bool AlignTest( const AlignData& data )
445 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
446 fontClient.SetDpi( 96u, 96u );
448 char* pathNamePtr = get_current_dir_name();
449 const std::string pathName( pathNamePtr );
452 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
453 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
454 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
456 // 1) Create the model.
457 LogicalModelPtr logicalModel;
458 VisualModelPtr visualModel;
462 Vector<FontDescriptionRun> fontDescriptionRuns;
463 if( 0u != data.numberOfFonts )
465 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
466 data.fontDescriptions,
467 data.fontDescriptions + data.numberOfFonts );
470 LayoutOptions options;
471 options.align = false;
472 CreateTextModel( data.text,
481 // Call the Align method.
482 Layout::Engine engine;
483 engine.SetMetrics( metrics );
485 engine.Align( data.textArea,
487 data.numberOfCharacters,
488 data.horizontalAlignment,
489 visualModel->mLines );
492 if( data.numberOfLines != visualModel->mLines.Count() )
494 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
498 const LineRun* const linesBuffer = visualModel->mLines.Begin();
499 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
501 const LineRun& line = *( linesBuffer + index );
503 if( line.alignmentOffset != *( data.lineOffsets + index ) )
505 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
515 //////////////////////////////////////////////////////////
517 // UtcDaliTextLayoutSetGetLayout
518 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
519 // UtcDaliTextLayoutSetGetHorizontalAlignment
520 // UtcDaliTextLayoutSetGetVerticalAlignment
521 // UtcDaliTextLayoutSetGetCursorWidth
522 // UtcDaliTextLayoutNoText
523 // UtcDaliTextLayoutSmallTextArea01
524 // UtcDaliTextLayoutSmallTextArea02
525 // UtcDaliTextLayoutMultilineText01
526 // UtcDaliTextLayoutMultilineText02
527 // UtcDaliTextLayoutMultilineText03
528 // UtcDaliTextLayoutMultilineText04
529 // UtcDaliTextLayoutMultilineText05
530 // UtcDaliTextUpdateLayout01
531 // UtcDaliTextUpdateLayout02
532 // UtcDaliTextUpdateLayout03
533 // UtcDaliTextLayoutEllipsis01
534 // UtcDaliTextLayoutEllipsis02
535 // UtcDaliTextLayoutEllipsis03
536 // UtcDaliTextLayoutEllipsis04
537 // UtcDaliTextLayoutEllipsis04
538 // UtcDaliTextReorderLayout01
539 // UtcDaliTextReorderLayout02
540 // UtcDaliTextReorderLayout03
541 // UtcDaliTextReorderLayout04
542 // UtcDaliTextAlign01
543 // UtcDaliTextAlign02
544 // UtcDaliTextAlign03
545 // UtcDaliTextAlign04
546 // UtcDaliTextAlign05
547 // UtcDaliTextAlign06
548 // UtcDaliTextAlign07
549 // UtcDaliTextAlign08
550 // UtcDaliTextAlign09
552 //////////////////////////////////////////////////////////
554 int UtcDaliTextLayoutSetGetLayout(void)
556 ToolkitTestApplication application;
557 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
559 Layout::Engine engine;
561 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
563 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
564 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
566 tet_result(TET_PASS);
570 int UtcDaliTextLayoutSetGetCursorWidth(void)
572 ToolkitTestApplication application;
575 Layout::Engine engine;
577 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
579 engine.SetCursorWidth( 2 );
580 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
582 tet_result(TET_PASS);
586 int UtcDaliTextLayoutNoText(void)
588 ToolkitTestApplication application;
589 tet_infoline(" UtcDaliTextLayoutNoText");
591 Size textArea(100.f, 60.f);
592 Size layoutSize = Vector2::ZERO;
593 LayoutTextData data =
605 Layout::Engine::MULTI_LINE_BOX,
612 if( !LayoutTextTest( data ) )
614 tet_result(TET_FAIL);
617 tet_result(TET_PASS);
621 int UtcDaliTextLayoutSmallTextArea01(void)
623 ToolkitTestApplication application;
624 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
626 // Won't layout the text in multi-line if the width is too small.
628 const std::string fontFamily( "TizenSans" );
630 // Set a known font description
631 FontDescriptionRun fontDescriptionRun;
632 fontDescriptionRun.characterRun.characterIndex = 0u;
633 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
634 fontDescriptionRun.familyLength = fontFamily.size();
635 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
636 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
637 fontDescriptionRun.familyDefined = true;
638 fontDescriptionRun.weightDefined = false;
639 fontDescriptionRun.widthDefined = false;
640 fontDescriptionRun.slantDefined = false;
641 fontDescriptionRun.sizeDefined = false;
643 Vector<FontDescriptionRun> fontDescriptionRuns;
644 fontDescriptionRuns.PushBack( fontDescriptionRun );
645 Size textArea(1.f, 1.f);
646 Size layoutSize = Vector2::ZERO;
647 LayoutTextData data =
649 "Layout text in a small area",
653 fontDescriptionRuns.Begin(),
659 Layout::Engine::MULTI_LINE_BOX,
666 if( !LayoutTextTest( data ) )
668 tet_result(TET_FAIL);
671 tet_result(TET_PASS);
675 int UtcDaliTextLayoutSmallTextArea02(void)
677 ToolkitTestApplication application;
678 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
680 // Will layout the text in single line as it can be scrolled.
682 const std::string fontFamily( "TizenSans" );
684 // Set a known font description
685 FontDescriptionRun fontDescriptionRun;
686 fontDescriptionRun.characterRun.characterIndex = 0u;
687 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
688 fontDescriptionRun.familyLength = fontFamily.size();
689 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
690 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
691 fontDescriptionRun.familyDefined = true;
692 fontDescriptionRun.weightDefined = false;
693 fontDescriptionRun.widthDefined = false;
694 fontDescriptionRun.slantDefined = false;
695 fontDescriptionRun.sizeDefined = false;
697 Vector<FontDescriptionRun> fontDescriptionRuns;
698 fontDescriptionRuns.PushBack( fontDescriptionRun );
699 Size textArea(1.f, 1.f);
700 Size layoutSize(80.f, 20.f);
701 float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
702 struct LineRun line =
714 Vector<LineRun> lines;
715 lines.PushBack( line );
717 LayoutTextData data =
719 "Layout text in a small area",
723 fontDescriptionRuns.Begin(),
729 Layout::Engine::SINGLE_LINE_BOX,
736 if( !LayoutTextTest( data ) )
738 tet_result(TET_FAIL);
741 tet_result(TET_PASS);
745 int UtcDaliTextLayoutMultilineText01(void)
747 ToolkitTestApplication application;
748 tet_infoline(" UtcDaliTextLayoutMultilineText01");
750 // Layout some lines of left to right text.
752 const std::string fontFamily( "TizenSans" );
754 // Set a known font description
755 FontDescriptionRun fontDescriptionRun1;
756 fontDescriptionRun1.characterRun.characterIndex = 0u;
757 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
758 fontDescriptionRun1.familyLength = fontFamily.size();
759 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
760 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
761 fontDescriptionRun1.familyDefined = true;
762 fontDescriptionRun1.weightDefined = false;
763 fontDescriptionRun1.widthDefined = false;
764 fontDescriptionRun1.slantDefined = false;
765 fontDescriptionRun1.sizeDefined = false;
767 FontDescriptionRun fontDescriptionRun2;
768 fontDescriptionRun2.characterRun.characterIndex = 18u;
769 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
770 fontDescriptionRun2.familyLength = fontFamily.size();
771 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
772 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
773 fontDescriptionRun2.familyDefined = true;
774 fontDescriptionRun2.weightDefined = false;
775 fontDescriptionRun2.widthDefined = false;
776 fontDescriptionRun2.slantDefined = false;
777 fontDescriptionRun2.sizeDefined = false;
779 Vector<FontDescriptionRun> fontDescriptionRuns;
780 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
781 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
782 Size textArea(100.f, 300.f);
783 Size layoutSize(95.f, 97.f);
786 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
787 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
788 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,
789 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,
790 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
792 struct LineRun line0 =
804 struct LineRun line1 =
816 struct LineRun line2 =
828 struct LineRun line3 =
840 struct LineRun line4 =
852 Vector<LineRun> lines;
853 lines.PushBack( line0 );
854 lines.PushBack( line1 );
855 lines.PushBack( line2 );
856 lines.PushBack( line3 );
857 lines.PushBack( line4 );
859 LayoutTextData data =
861 "Layout simple multi-line text",
862 "Hello world demo.\n"
863 "Layout different lines of text.",
866 fontDescriptionRuns.Begin(),
872 Layout::Engine::MULTI_LINE_BOX,
879 if( !LayoutTextTest( data ) )
881 tet_result(TET_FAIL);
884 tet_result(TET_PASS);
888 int UtcDaliTextLayoutMultilineText02(void)
890 ToolkitTestApplication application;
891 tet_infoline(" UtcDaliTextLayoutMultilineText02");
893 // Layout some lines of bidirectional text.
895 const std::string fontFamily1( "TizenSans" );
897 // Set a known font description
898 FontDescriptionRun fontDescriptionRun1;
899 fontDescriptionRun1.characterRun.characterIndex = 0u;
900 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
901 fontDescriptionRun1.familyLength = fontFamily1.size();
902 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
903 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
904 fontDescriptionRun1.familyDefined = true;
905 fontDescriptionRun1.weightDefined = false;
906 fontDescriptionRun1.widthDefined = false;
907 fontDescriptionRun1.slantDefined = false;
908 fontDescriptionRun1.sizeDefined = false;
910 const std::string fontFamily2( "TizenSansHebrew" );
912 // Set a known font description
913 FontDescriptionRun fontDescriptionRun2;
914 fontDescriptionRun2.characterRun.characterIndex = 17u;
915 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
916 fontDescriptionRun2.familyLength = fontFamily2.size();
917 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
918 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
919 fontDescriptionRun2.familyDefined = true;
920 fontDescriptionRun2.weightDefined = false;
921 fontDescriptionRun2.widthDefined = false;
922 fontDescriptionRun2.slantDefined = false;
923 fontDescriptionRun2.sizeDefined = false;
925 const std::string fontFamily3( "TizenSans" );
927 // Set a known font description
928 FontDescriptionRun fontDescriptionRun3;
929 fontDescriptionRun3.characterRun.characterIndex = 26u;
930 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
931 fontDescriptionRun3.familyLength = fontFamily3.size();
932 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
933 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
934 fontDescriptionRun3.familyDefined = true;
935 fontDescriptionRun3.weightDefined = false;
936 fontDescriptionRun3.widthDefined = false;
937 fontDescriptionRun3.slantDefined = false;
938 fontDescriptionRun3.sizeDefined = false;
940 const std::string fontFamily4( "TizenSansHebrew" );
942 // Set a known font description
943 FontDescriptionRun fontDescriptionRun4;
944 fontDescriptionRun4.characterRun.characterIndex = 28u;
945 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
946 fontDescriptionRun4.familyLength = fontFamily4.size();
947 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
948 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
949 fontDescriptionRun4.familyDefined = true;
950 fontDescriptionRun4.weightDefined = false;
951 fontDescriptionRun4.widthDefined = false;
952 fontDescriptionRun4.slantDefined = false;
953 fontDescriptionRun4.sizeDefined = false;
955 const std::string fontFamily5( "TizenSans" );
957 // Set a known font description
958 FontDescriptionRun fontDescriptionRun5;
959 fontDescriptionRun5.characterRun.characterIndex = 38u;
960 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
961 fontDescriptionRun5.familyLength = fontFamily5.size();
962 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
963 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
964 fontDescriptionRun5.familyDefined = true;
965 fontDescriptionRun5.weightDefined = false;
966 fontDescriptionRun5.widthDefined = false;
967 fontDescriptionRun5.slantDefined = false;
968 fontDescriptionRun5.sizeDefined = false;
970 Vector<FontDescriptionRun> fontDescriptionRuns;
971 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
972 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
973 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
974 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
975 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
976 Size textArea(100.f, 300.f);
977 Size layoutSize(81.f, 120.f);
980 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
981 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
982 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
983 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,
984 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
985 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
987 struct LineRun line0 =
999 struct LineRun line1 =
1011 struct LineRun line2 =
1023 struct LineRun line3 =
1035 struct LineRun line4 =
1047 struct LineRun line5 =
1059 Vector<LineRun> lines;
1060 lines.PushBack( line0 );
1061 lines.PushBack( line1 );
1062 lines.PushBack( line2 );
1063 lines.PushBack( line3 );
1064 lines.PushBack( line4 );
1065 lines.PushBack( line5 );
1067 LayoutTextData data =
1069 "Layout bidirectional text.",
1070 "Hello world demo שלום עולם.\n"
1071 "שלום עולם hello world demo.",
1074 fontDescriptionRuns.Begin(),
1080 Layout::Engine::MULTI_LINE_BOX,
1087 if( !LayoutTextTest( data ) )
1089 tet_result(TET_FAIL);
1092 tet_result(TET_PASS);
1096 int UtcDaliTextLayoutMultilineText03(void)
1098 ToolkitTestApplication application;
1099 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1101 // Layout a long word which doesn't fit in the width of the text area.
1103 const std::string fontFamily( "TizenSans" );
1105 // Set a known font description
1106 FontDescriptionRun fontDescriptionRun;
1107 fontDescriptionRun.characterRun.characterIndex = 0u;
1108 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1109 fontDescriptionRun.familyLength = fontFamily.size();
1110 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1111 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1112 fontDescriptionRun.familyDefined = true;
1113 fontDescriptionRun.weightDefined = false;
1114 fontDescriptionRun.widthDefined = false;
1115 fontDescriptionRun.slantDefined = false;
1116 fontDescriptionRun.sizeDefined = false;
1118 Vector<FontDescriptionRun> fontDescriptionRuns;
1119 fontDescriptionRuns.PushBack( fontDescriptionRun );
1120 Size textArea(100.f, 300.f);
1121 Size layoutSize(96.f, 60.f);
1124 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 85.f, -9.f,
1125 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 32.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f,
1126 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1128 struct LineRun line0 =
1140 struct LineRun line1 =
1152 struct LineRun line2 =
1164 Vector<LineRun> lines;
1165 lines.PushBack( line0 );
1166 lines.PushBack( line1 );
1167 lines.PushBack( line2 );
1169 LayoutTextData data =
1171 "Layout a long word which doesn't fit in the width of the text area.",
1172 "Helloworlddemohelloworlddemo.",
1175 fontDescriptionRuns.Begin(),
1181 Layout::Engine::MULTI_LINE_BOX,
1188 if( !LayoutTextTest( data ) )
1190 tet_result(TET_FAIL);
1193 tet_result(TET_PASS);
1197 int UtcDaliTextLayoutMultilineText04(void)
1199 ToolkitTestApplication application;
1200 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1202 // Layout simple text ending with a \n. It has to add a void line at the end.
1204 const std::string fontFamily( "TizenSans" );
1206 // Set a known font description
1207 FontDescriptionRun fontDescriptionRun;
1208 fontDescriptionRun.characterRun.characterIndex = 0u;
1209 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1210 fontDescriptionRun.familyLength = fontFamily.size();
1211 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1212 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1213 fontDescriptionRun.familyDefined = true;
1214 fontDescriptionRun.weightDefined = false;
1215 fontDescriptionRun.widthDefined = false;
1216 fontDescriptionRun.slantDefined = false;
1217 fontDescriptionRun.sizeDefined = false;
1219 Vector<FontDescriptionRun> fontDescriptionRuns;
1220 fontDescriptionRuns.PushBack( fontDescriptionRun );
1221 Size textArea(100.f, 300.f);
1222 Size layoutSize(83.f, 40.f);
1225 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -3.f, 82.f, -12.f
1227 struct LineRun line0 =
1239 struct LineRun line1 =
1251 Vector<LineRun> lines;
1252 lines.PushBack( line0 );
1253 lines.PushBack( line1 );
1255 LayoutTextData data =
1257 "Layout simple text ending with a \n.",
1261 fontDescriptionRuns.Begin(),
1267 Layout::Engine::MULTI_LINE_BOX,
1274 if( !LayoutTextTest( data ) )
1276 tet_result(TET_FAIL);
1279 tet_result(TET_PASS);
1283 int UtcDaliTextLayoutMultilineText05(void)
1285 ToolkitTestApplication application;
1286 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1288 // Layout simple text with one character with a different font size.
1290 const std::string fontFamily( "TizenSans" );
1292 // Set a known font description
1293 FontDescriptionRun fontDescriptionRun1;
1294 fontDescriptionRun1.characterRun.characterIndex = 0u;
1295 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1296 fontDescriptionRun1.familyLength = fontFamily.size();
1297 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1298 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1299 fontDescriptionRun1.familyDefined = true;
1300 fontDescriptionRun1.weightDefined = false;
1301 fontDescriptionRun1.widthDefined = false;
1302 fontDescriptionRun1.slantDefined = false;
1303 fontDescriptionRun1.sizeDefined = false;
1305 FontDescriptionRun fontDescriptionRun2;
1306 fontDescriptionRun2.characterRun.characterIndex = 6u;
1307 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1308 fontDescriptionRun2.familyLength = fontFamily.size();
1309 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1310 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1311 fontDescriptionRun2.size = 1280u;
1312 fontDescriptionRun2.familyDefined = true;
1313 fontDescriptionRun2.weightDefined = false;
1314 fontDescriptionRun2.widthDefined = false;
1315 fontDescriptionRun2.slantDefined = false;
1316 fontDescriptionRun2.sizeDefined = true;
1318 FontDescriptionRun fontDescriptionRun3;
1319 fontDescriptionRun3.characterRun.characterIndex = 7u;
1320 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1321 fontDescriptionRun3.familyLength = fontFamily.size();
1322 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1323 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1324 fontDescriptionRun3.familyDefined = true;
1325 fontDescriptionRun3.weightDefined = false;
1326 fontDescriptionRun3.widthDefined = false;
1327 fontDescriptionRun3.slantDefined = false;
1328 fontDescriptionRun3.sizeDefined = false;
1330 Vector<FontDescriptionRun> fontDescriptionRuns;
1331 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1332 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1333 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1334 Size textArea(100.f, 300.f);
1335 Size layoutSize(88.f, 53.f);
1338 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1339 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f
1341 struct LineRun line0 =
1353 struct LineRun line1 =
1365 Vector<LineRun> lines;
1366 lines.PushBack( line0 );
1367 lines.PushBack( line1 );
1369 LayoutTextData data =
1371 "Layout simple text with one character with a different font size.",
1372 "Hello world demo.",
1375 fontDescriptionRuns.Begin(),
1381 Layout::Engine::MULTI_LINE_BOX,
1388 if( !LayoutTextTest( data ) )
1390 tet_result(TET_FAIL);
1393 tet_result(TET_PASS);
1397 int UtcDaliTextUpdateLayout01(void)
1399 ToolkitTestApplication application;
1400 tet_infoline(" UtcDaliTextUpdateLayout01");
1402 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1404 const std::string fontLatin( "TizenSans" );
1405 const std::string fontHebrew( "TizenSansHebrew" );
1406 const std::string fontArabic( "TizenSansArabic" );
1408 // Set a known font description
1409 FontDescriptionRun fontDescriptionRun01;
1410 fontDescriptionRun01.characterRun.characterIndex = 0u;
1411 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1412 fontDescriptionRun01.familyLength = fontLatin.size();
1413 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1414 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1415 fontDescriptionRun01.familyDefined = true;
1416 fontDescriptionRun01.weightDefined = false;
1417 fontDescriptionRun01.widthDefined = false;
1418 fontDescriptionRun01.slantDefined = false;
1419 fontDescriptionRun01.sizeDefined = false;
1421 // Set a known font description
1422 FontDescriptionRun fontDescriptionRun02;
1423 fontDescriptionRun02.characterRun.characterIndex = 17u;
1424 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1425 fontDescriptionRun02.familyLength = fontHebrew.size();
1426 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1427 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1428 fontDescriptionRun02.familyDefined = true;
1429 fontDescriptionRun02.weightDefined = false;
1430 fontDescriptionRun02.widthDefined = false;
1431 fontDescriptionRun02.slantDefined = false;
1432 fontDescriptionRun02.sizeDefined = false;
1434 // Set a known font description
1435 FontDescriptionRun fontDescriptionRun03;
1436 fontDescriptionRun03.characterRun.characterIndex = 26u;
1437 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1438 fontDescriptionRun03.familyLength = fontLatin.size();
1439 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1440 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1441 fontDescriptionRun03.familyDefined = true;
1442 fontDescriptionRun03.weightDefined = false;
1443 fontDescriptionRun03.widthDefined = false;
1444 fontDescriptionRun03.slantDefined = false;
1445 fontDescriptionRun03.sizeDefined = false;
1447 // Set a known font description
1448 FontDescriptionRun fontDescriptionRun04;
1449 fontDescriptionRun04.characterRun.characterIndex = 28u;
1450 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1451 fontDescriptionRun04.familyLength = fontArabic.size();
1452 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1453 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1454 fontDescriptionRun04.familyDefined = true;
1455 fontDescriptionRun04.weightDefined = false;
1456 fontDescriptionRun04.widthDefined = false;
1457 fontDescriptionRun04.slantDefined = false;
1458 fontDescriptionRun04.sizeDefined = false;
1460 // Set a known font description
1461 FontDescriptionRun fontDescriptionRun05;
1462 fontDescriptionRun05.characterRun.characterIndex = 42u;
1463 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1464 fontDescriptionRun05.familyLength = fontLatin.size();
1465 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1466 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1467 fontDescriptionRun05.familyDefined = true;
1468 fontDescriptionRun05.weightDefined = false;
1469 fontDescriptionRun05.widthDefined = false;
1470 fontDescriptionRun05.slantDefined = false;
1471 fontDescriptionRun05.sizeDefined = false;
1473 // Set a known font description
1474 FontDescriptionRun fontDescriptionRun06;
1475 fontDescriptionRun06.characterRun.characterIndex = 54u;
1476 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1477 fontDescriptionRun06.familyLength = fontHebrew.size();
1478 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1479 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1480 fontDescriptionRun06.familyDefined = true;
1481 fontDescriptionRun06.weightDefined = false;
1482 fontDescriptionRun06.widthDefined = false;
1483 fontDescriptionRun06.slantDefined = false;
1484 fontDescriptionRun06.sizeDefined = false;
1486 // Set a known font description
1487 FontDescriptionRun fontDescriptionRun07;
1488 fontDescriptionRun07.characterRun.characterIndex = 64u;
1489 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1490 fontDescriptionRun07.familyLength = fontHebrew.size();
1491 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1492 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1493 fontDescriptionRun07.familyDefined = true;
1494 fontDescriptionRun07.weightDefined = false;
1495 fontDescriptionRun07.widthDefined = false;
1496 fontDescriptionRun07.slantDefined = false;
1497 fontDescriptionRun07.sizeDefined = false;
1499 // Set a known font description
1500 FontDescriptionRun fontDescriptionRun08;
1501 fontDescriptionRun08.characterRun.characterIndex = 74u;
1502 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1503 fontDescriptionRun08.familyLength = fontLatin.size();
1504 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1505 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1506 fontDescriptionRun08.familyDefined = true;
1507 fontDescriptionRun08.weightDefined = false;
1508 fontDescriptionRun08.widthDefined = false;
1509 fontDescriptionRun08.slantDefined = false;
1510 fontDescriptionRun08.sizeDefined = false;
1512 // Set a known font description
1513 FontDescriptionRun fontDescriptionRun09;
1514 fontDescriptionRun09.characterRun.characterIndex = 92u;
1515 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1516 fontDescriptionRun09.familyLength = fontLatin.size();
1517 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1518 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1519 fontDescriptionRun09.familyDefined = true;
1520 fontDescriptionRun09.weightDefined = false;
1521 fontDescriptionRun09.widthDefined = false;
1522 fontDescriptionRun09.slantDefined = false;
1523 fontDescriptionRun09.sizeDefined = false;
1525 // Set a known font description
1526 FontDescriptionRun fontDescriptionRun10;
1527 fontDescriptionRun10.characterRun.characterIndex = 104u;
1528 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1529 fontDescriptionRun10.familyLength = fontArabic.size();
1530 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1531 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1532 fontDescriptionRun10.familyDefined = true;
1533 fontDescriptionRun10.weightDefined = false;
1534 fontDescriptionRun10.widthDefined = false;
1535 fontDescriptionRun10.slantDefined = false;
1536 fontDescriptionRun10.sizeDefined = false;
1538 // Set a known font description
1539 FontDescriptionRun fontDescriptionRun11;
1540 fontDescriptionRun11.characterRun.characterIndex = 118u;
1541 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1542 fontDescriptionRun11.familyLength = fontHebrew.size();
1543 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1544 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1545 fontDescriptionRun11.familyDefined = true;
1546 fontDescriptionRun11.weightDefined = false;
1547 fontDescriptionRun11.widthDefined = false;
1548 fontDescriptionRun11.slantDefined = false;
1549 fontDescriptionRun11.sizeDefined = false;
1551 // Set a known font description
1552 FontDescriptionRun fontDescriptionRun12;
1553 fontDescriptionRun12.characterRun.characterIndex = 128u;
1554 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1555 fontDescriptionRun12.familyLength = fontLatin.size();
1556 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1557 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1558 fontDescriptionRun12.familyDefined = true;
1559 fontDescriptionRun12.weightDefined = false;
1560 fontDescriptionRun12.widthDefined = false;
1561 fontDescriptionRun12.slantDefined = false;
1562 fontDescriptionRun12.sizeDefined = false;
1564 // Set a known font description
1565 FontDescriptionRun fontDescriptionRun13;
1566 fontDescriptionRun13.characterRun.characterIndex = 145u;
1567 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1568 fontDescriptionRun13.familyLength = fontHebrew.size();
1569 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1570 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1571 fontDescriptionRun13.familyDefined = true;
1572 fontDescriptionRun13.weightDefined = false;
1573 fontDescriptionRun13.widthDefined = false;
1574 fontDescriptionRun13.slantDefined = false;
1575 fontDescriptionRun13.sizeDefined = false;
1577 // Set a known font description
1578 FontDescriptionRun fontDescriptionRun14;
1579 fontDescriptionRun14.characterRun.characterIndex = 154u;
1580 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1581 fontDescriptionRun14.familyLength = fontLatin.size();
1582 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1583 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1584 fontDescriptionRun14.familyDefined = true;
1585 fontDescriptionRun14.weightDefined = false;
1586 fontDescriptionRun14.widthDefined = false;
1587 fontDescriptionRun14.slantDefined = false;
1588 fontDescriptionRun14.sizeDefined = false;
1590 // Set a known font description
1591 FontDescriptionRun fontDescriptionRun15;
1592 fontDescriptionRun15.characterRun.characterIndex = 156u;
1593 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1594 fontDescriptionRun15.familyLength = fontHebrew.size();
1595 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1596 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1597 fontDescriptionRun15.familyDefined = true;
1598 fontDescriptionRun15.weightDefined = false;
1599 fontDescriptionRun15.widthDefined = false;
1600 fontDescriptionRun15.slantDefined = false;
1601 fontDescriptionRun15.sizeDefined = false;
1603 // Set a known font description
1604 FontDescriptionRun fontDescriptionRun16;
1605 fontDescriptionRun16.characterRun.characterIndex = 166u;
1606 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1607 fontDescriptionRun16.familyLength = fontLatin.size();
1608 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1609 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1610 fontDescriptionRun16.familyDefined = true;
1611 fontDescriptionRun16.weightDefined = false;
1612 fontDescriptionRun16.widthDefined = false;
1613 fontDescriptionRun16.slantDefined = false;
1614 fontDescriptionRun16.sizeDefined = false;
1616 // Set a known font description
1617 FontDescriptionRun fontDescriptionRun17;
1618 fontDescriptionRun17.characterRun.characterIndex = 178u;
1619 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1620 fontDescriptionRun17.familyLength = fontArabic.size();
1621 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1622 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1623 fontDescriptionRun17.familyDefined = true;
1624 fontDescriptionRun17.weightDefined = false;
1625 fontDescriptionRun17.widthDefined = false;
1626 fontDescriptionRun17.slantDefined = false;
1627 fontDescriptionRun17.sizeDefined = false;
1629 Vector<FontDescriptionRun> fontDescriptionRuns;
1630 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1631 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1632 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1633 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1634 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1635 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1636 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1637 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1638 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1639 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1640 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1641 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1642 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1643 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1644 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1645 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1646 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1647 Size textArea(100.f, 300.f);
1648 Size layoutSize(92.f, 380.f);
1651 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1652 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1653 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1654 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
1655 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,
1656 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1657 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,
1658 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1659 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
1660 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1661 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
1662 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1663 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1664 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1665 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1666 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,
1667 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1668 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
1671 struct LineRun line01 =
1683 struct LineRun line02 =
1695 struct LineRun line03 =
1707 struct LineRun line04 =
1719 struct LineRun line05 =
1731 struct LineRun line06 =
1743 struct LineRun line07 =
1755 struct LineRun line08 =
1767 struct LineRun line09 =
1779 struct LineRun line10 =
1791 struct LineRun line11 =
1803 struct LineRun line12 =
1815 struct LineRun line13 =
1827 struct LineRun line14 =
1839 struct LineRun line15 =
1851 struct LineRun line16 =
1863 struct LineRun line17 =
1875 struct LineRun line18 =
1887 struct LineRun line19 =
1899 Vector<LineRun> lines;
1900 lines.PushBack( line01 );
1901 lines.PushBack( line02 );
1902 lines.PushBack( line03 );
1903 lines.PushBack( line04 );
1904 lines.PushBack( line05 );
1905 lines.PushBack( line06 );
1906 lines.PushBack( line07 );
1907 lines.PushBack( line08 );
1908 lines.PushBack( line09 );
1909 lines.PushBack( line10 );
1910 lines.PushBack( line11 );
1911 lines.PushBack( line12 );
1912 lines.PushBack( line13 );
1913 lines.PushBack( line14 );
1914 lines.PushBack( line15 );
1915 lines.PushBack( line16 );
1916 lines.PushBack( line17 );
1917 lines.PushBack( line18 );
1918 lines.PushBack( line19 );
1920 LayoutTextData data =
1922 "Layout bidirectional text.",
1923 "Hello world demo שלום עולם.\n"
1924 "مرحبا بالعالم hello world שלום עולם\n"
1925 "שלום עולם hello world demo.\n"
1926 "hello world مرحبا بالعالم שלום עולם\n"
1927 "Hello world demo שלום עולם.\n"
1928 "שלום עולם hello world مرحبا بالعالم\n",
1931 fontDescriptionRuns.Begin(),
1937 Layout::Engine::MULTI_LINE_BOX,
1944 if( !LayoutTextTest( data ) )
1946 tet_result(TET_FAIL);
1949 tet_result(TET_PASS);
1953 int UtcDaliTextUpdateLayout02(void)
1955 ToolkitTestApplication application;
1956 tet_infoline(" UtcDaliTextUpdateLayout02");
1958 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1960 const std::string fontLatin( "TizenSans" );
1961 const std::string fontHebrew( "TizenSansHebrew" );
1962 const std::string fontArabic( "TizenSansArabic" );
1964 // Set a known font description
1965 FontDescriptionRun fontDescriptionRun01;
1966 fontDescriptionRun01.characterRun.characterIndex = 0u;
1967 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1968 fontDescriptionRun01.familyLength = fontLatin.size();
1969 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1970 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1971 fontDescriptionRun01.familyDefined = true;
1972 fontDescriptionRun01.weightDefined = false;
1973 fontDescriptionRun01.widthDefined = false;
1974 fontDescriptionRun01.slantDefined = false;
1975 fontDescriptionRun01.sizeDefined = false;
1977 // Set a known font description
1978 FontDescriptionRun fontDescriptionRun02;
1979 fontDescriptionRun02.characterRun.characterIndex = 17u;
1980 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1981 fontDescriptionRun02.familyLength = fontHebrew.size();
1982 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1983 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1984 fontDescriptionRun02.familyDefined = true;
1985 fontDescriptionRun02.weightDefined = false;
1986 fontDescriptionRun02.widthDefined = false;
1987 fontDescriptionRun02.slantDefined = false;
1988 fontDescriptionRun02.sizeDefined = false;
1990 // Set a known font description
1991 FontDescriptionRun fontDescriptionRun03;
1992 fontDescriptionRun03.characterRun.characterIndex = 26u;
1993 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1994 fontDescriptionRun03.familyLength = fontLatin.size();
1995 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1996 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1997 fontDescriptionRun03.familyDefined = true;
1998 fontDescriptionRun03.weightDefined = false;
1999 fontDescriptionRun03.widthDefined = false;
2000 fontDescriptionRun03.slantDefined = false;
2001 fontDescriptionRun03.sizeDefined = false;
2003 // Set a known font description
2004 FontDescriptionRun fontDescriptionRun04;
2005 fontDescriptionRun04.characterRun.characterIndex = 28u;
2006 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2007 fontDescriptionRun04.familyLength = fontArabic.size();
2008 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2009 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2010 fontDescriptionRun04.familyDefined = true;
2011 fontDescriptionRun04.weightDefined = false;
2012 fontDescriptionRun04.widthDefined = false;
2013 fontDescriptionRun04.slantDefined = false;
2014 fontDescriptionRun04.sizeDefined = false;
2016 // Set a known font description
2017 FontDescriptionRun fontDescriptionRun05;
2018 fontDescriptionRun05.characterRun.characterIndex = 42u;
2019 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2020 fontDescriptionRun05.familyLength = fontLatin.size();
2021 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2022 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2023 fontDescriptionRun05.familyDefined = true;
2024 fontDescriptionRun05.weightDefined = false;
2025 fontDescriptionRun05.widthDefined = false;
2026 fontDescriptionRun05.slantDefined = false;
2027 fontDescriptionRun05.sizeDefined = false;
2029 // Set a known font description
2030 FontDescriptionRun fontDescriptionRun06;
2031 fontDescriptionRun06.characterRun.characterIndex = 54u;
2032 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2033 fontDescriptionRun06.familyLength = fontHebrew.size();
2034 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2035 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2036 fontDescriptionRun06.familyDefined = true;
2037 fontDescriptionRun06.weightDefined = false;
2038 fontDescriptionRun06.widthDefined = false;
2039 fontDescriptionRun06.slantDefined = false;
2040 fontDescriptionRun06.sizeDefined = false;
2042 // Set a known font description
2043 FontDescriptionRun fontDescriptionRun07;
2044 fontDescriptionRun07.characterRun.characterIndex = 64u;
2045 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2046 fontDescriptionRun07.familyLength = fontHebrew.size();
2047 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2048 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2049 fontDescriptionRun07.familyDefined = true;
2050 fontDescriptionRun07.weightDefined = false;
2051 fontDescriptionRun07.widthDefined = false;
2052 fontDescriptionRun07.slantDefined = false;
2053 fontDescriptionRun07.sizeDefined = false;
2055 // Set a known font description
2056 FontDescriptionRun fontDescriptionRun08;
2057 fontDescriptionRun08.characterRun.characterIndex = 74u;
2058 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2059 fontDescriptionRun08.familyLength = fontLatin.size();
2060 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2061 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2062 fontDescriptionRun08.familyDefined = true;
2063 fontDescriptionRun08.weightDefined = false;
2064 fontDescriptionRun08.widthDefined = false;
2065 fontDescriptionRun08.slantDefined = false;
2066 fontDescriptionRun08.sizeDefined = false;
2068 // Set a known font description
2069 FontDescriptionRun fontDescriptionRun09;
2070 fontDescriptionRun09.characterRun.characterIndex = 92u;
2071 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2072 fontDescriptionRun09.familyLength = fontLatin.size();
2073 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2074 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2075 fontDescriptionRun09.familyDefined = true;
2076 fontDescriptionRun09.weightDefined = false;
2077 fontDescriptionRun09.widthDefined = false;
2078 fontDescriptionRun09.slantDefined = false;
2079 fontDescriptionRun09.sizeDefined = false;
2081 // Set a known font description
2082 FontDescriptionRun fontDescriptionRun10;
2083 fontDescriptionRun10.characterRun.characterIndex = 104u;
2084 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2085 fontDescriptionRun10.familyLength = fontArabic.size();
2086 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2087 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2088 fontDescriptionRun10.familyDefined = true;
2089 fontDescriptionRun10.weightDefined = false;
2090 fontDescriptionRun10.widthDefined = false;
2091 fontDescriptionRun10.slantDefined = false;
2092 fontDescriptionRun10.sizeDefined = false;
2094 // Set a known font description
2095 FontDescriptionRun fontDescriptionRun11;
2096 fontDescriptionRun11.characterRun.characterIndex = 118u;
2097 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2098 fontDescriptionRun11.familyLength = fontHebrew.size();
2099 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2100 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2101 fontDescriptionRun11.familyDefined = true;
2102 fontDescriptionRun11.weightDefined = false;
2103 fontDescriptionRun11.widthDefined = false;
2104 fontDescriptionRun11.slantDefined = false;
2105 fontDescriptionRun11.sizeDefined = false;
2107 // Set a known font description
2108 FontDescriptionRun fontDescriptionRun12;
2109 fontDescriptionRun12.characterRun.characterIndex = 128u;
2110 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2111 fontDescriptionRun12.familyLength = fontLatin.size();
2112 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2113 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2114 fontDescriptionRun12.familyDefined = true;
2115 fontDescriptionRun12.weightDefined = false;
2116 fontDescriptionRun12.widthDefined = false;
2117 fontDescriptionRun12.slantDefined = false;
2118 fontDescriptionRun12.sizeDefined = false;
2120 // Set a known font description
2121 FontDescriptionRun fontDescriptionRun13;
2122 fontDescriptionRun13.characterRun.characterIndex = 145u;
2123 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2124 fontDescriptionRun13.familyLength = fontHebrew.size();
2125 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2126 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2127 fontDescriptionRun13.familyDefined = true;
2128 fontDescriptionRun13.weightDefined = false;
2129 fontDescriptionRun13.widthDefined = false;
2130 fontDescriptionRun13.slantDefined = false;
2131 fontDescriptionRun13.sizeDefined = false;
2133 // Set a known font description
2134 FontDescriptionRun fontDescriptionRun14;
2135 fontDescriptionRun14.characterRun.characterIndex = 154u;
2136 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2137 fontDescriptionRun14.familyLength = fontLatin.size();
2138 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2139 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2140 fontDescriptionRun14.familyDefined = true;
2141 fontDescriptionRun14.weightDefined = false;
2142 fontDescriptionRun14.widthDefined = false;
2143 fontDescriptionRun14.slantDefined = false;
2144 fontDescriptionRun14.sizeDefined = false;
2146 // Set a known font description
2147 FontDescriptionRun fontDescriptionRun15;
2148 fontDescriptionRun15.characterRun.characterIndex = 156u;
2149 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2150 fontDescriptionRun15.familyLength = fontHebrew.size();
2151 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2152 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2153 fontDescriptionRun15.familyDefined = true;
2154 fontDescriptionRun15.weightDefined = false;
2155 fontDescriptionRun15.widthDefined = false;
2156 fontDescriptionRun15.slantDefined = false;
2157 fontDescriptionRun15.sizeDefined = false;
2159 // Set a known font description
2160 FontDescriptionRun fontDescriptionRun16;
2161 fontDescriptionRun16.characterRun.characterIndex = 166u;
2162 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2163 fontDescriptionRun16.familyLength = fontLatin.size();
2164 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2165 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2166 fontDescriptionRun16.familyDefined = true;
2167 fontDescriptionRun16.weightDefined = false;
2168 fontDescriptionRun16.widthDefined = false;
2169 fontDescriptionRun16.slantDefined = false;
2170 fontDescriptionRun16.sizeDefined = false;
2172 // Set a known font description
2173 FontDescriptionRun fontDescriptionRun17;
2174 fontDescriptionRun17.characterRun.characterIndex = 178u;
2175 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2176 fontDescriptionRun17.familyLength = fontArabic.size();
2177 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2178 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2179 fontDescriptionRun17.familyDefined = true;
2180 fontDescriptionRun17.weightDefined = false;
2181 fontDescriptionRun17.widthDefined = false;
2182 fontDescriptionRun17.slantDefined = false;
2183 fontDescriptionRun17.sizeDefined = false;
2185 Vector<FontDescriptionRun> fontDescriptionRuns;
2186 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2187 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2188 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2189 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2190 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2191 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2192 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2193 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2194 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2195 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2196 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2197 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2198 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2199 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2200 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2201 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2202 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2203 Size textArea(100.f, 300.f);
2204 Size layoutSize(92.f, 380.f);
2207 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2208 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2209 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2210 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2211 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,
2212 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2213 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,
2214 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2215 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2216 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2217 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2218 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2219 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2220 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2221 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2222 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,
2223 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2224 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2227 struct LineRun line01 =
2239 struct LineRun line02 =
2251 struct LineRun line03 =
2263 struct LineRun line04 =
2275 struct LineRun line05 =
2287 struct LineRun line06 =
2299 struct LineRun line07 =
2311 struct LineRun line08 =
2323 struct LineRun line09 =
2335 struct LineRun line10 =
2347 struct LineRun line11 =
2359 struct LineRun line12 =
2371 struct LineRun line13 =
2383 struct LineRun line14 =
2395 struct LineRun line15 =
2407 struct LineRun line16 =
2419 struct LineRun line17 =
2431 struct LineRun line18 =
2443 struct LineRun line19 =
2455 Vector<LineRun> lines;
2456 lines.PushBack( line01 );
2457 lines.PushBack( line02 );
2458 lines.PushBack( line03 );
2459 lines.PushBack( line04 );
2460 lines.PushBack( line05 );
2461 lines.PushBack( line06 );
2462 lines.PushBack( line07 );
2463 lines.PushBack( line08 );
2464 lines.PushBack( line09 );
2465 lines.PushBack( line10 );
2466 lines.PushBack( line11 );
2467 lines.PushBack( line12 );
2468 lines.PushBack( line13 );
2469 lines.PushBack( line14 );
2470 lines.PushBack( line15 );
2471 lines.PushBack( line16 );
2472 lines.PushBack( line17 );
2473 lines.PushBack( line18 );
2474 lines.PushBack( line19 );
2476 LayoutTextData data =
2478 "Layout bidirectional text.",
2479 "Hello world demo שלום עולם.\n"
2480 "مرحبا بالعالم hello world שלום עולם\n"
2481 "שלום עולם hello world demo.\n"
2482 "hello world مرحبا بالعالم שלום עולם\n"
2483 "Hello world demo שלום עולם.\n"
2484 "שלום עולם hello world مرحبا بالعالم\n",
2487 fontDescriptionRuns.Begin(),
2493 Layout::Engine::MULTI_LINE_BOX,
2500 if( !LayoutTextTest( data ) )
2502 tet_result(TET_FAIL);
2505 tet_result(TET_PASS);
2509 int UtcDaliTextUpdateLayout03(void)
2511 ToolkitTestApplication application;
2512 tet_infoline(" UtcDaliTextUpdateLayout03");
2514 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2516 const std::string fontLatin( "TizenSans" );
2517 const std::string fontHebrew( "TizenSansHebrew" );
2518 const std::string fontArabic( "TizenSansArabic" );
2520 // Set a known font description
2521 FontDescriptionRun fontDescriptionRun01;
2522 fontDescriptionRun01.characterRun.characterIndex = 0u;
2523 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2524 fontDescriptionRun01.familyLength = fontLatin.size();
2525 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2526 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2527 fontDescriptionRun01.familyDefined = true;
2528 fontDescriptionRun01.weightDefined = false;
2529 fontDescriptionRun01.widthDefined = false;
2530 fontDescriptionRun01.slantDefined = false;
2531 fontDescriptionRun01.sizeDefined = false;
2533 // Set a known font description
2534 FontDescriptionRun fontDescriptionRun02;
2535 fontDescriptionRun02.characterRun.characterIndex = 17u;
2536 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2537 fontDescriptionRun02.familyLength = fontHebrew.size();
2538 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2539 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2540 fontDescriptionRun02.familyDefined = true;
2541 fontDescriptionRun02.weightDefined = false;
2542 fontDescriptionRun02.widthDefined = false;
2543 fontDescriptionRun02.slantDefined = false;
2544 fontDescriptionRun02.sizeDefined = false;
2546 // Set a known font description
2547 FontDescriptionRun fontDescriptionRun03;
2548 fontDescriptionRun03.characterRun.characterIndex = 26u;
2549 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2550 fontDescriptionRun03.familyLength = fontLatin.size();
2551 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2552 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2553 fontDescriptionRun03.familyDefined = true;
2554 fontDescriptionRun03.weightDefined = false;
2555 fontDescriptionRun03.widthDefined = false;
2556 fontDescriptionRun03.slantDefined = false;
2557 fontDescriptionRun03.sizeDefined = false;
2559 // Set a known font description
2560 FontDescriptionRun fontDescriptionRun04;
2561 fontDescriptionRun04.characterRun.characterIndex = 28u;
2562 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2563 fontDescriptionRun04.familyLength = fontArabic.size();
2564 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2565 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2566 fontDescriptionRun04.familyDefined = true;
2567 fontDescriptionRun04.weightDefined = false;
2568 fontDescriptionRun04.widthDefined = false;
2569 fontDescriptionRun04.slantDefined = false;
2570 fontDescriptionRun04.sizeDefined = false;
2572 // Set a known font description
2573 FontDescriptionRun fontDescriptionRun05;
2574 fontDescriptionRun05.characterRun.characterIndex = 42u;
2575 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2576 fontDescriptionRun05.familyLength = fontLatin.size();
2577 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2578 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2579 fontDescriptionRun05.familyDefined = true;
2580 fontDescriptionRun05.weightDefined = false;
2581 fontDescriptionRun05.widthDefined = false;
2582 fontDescriptionRun05.slantDefined = false;
2583 fontDescriptionRun05.sizeDefined = false;
2585 // Set a known font description
2586 FontDescriptionRun fontDescriptionRun06;
2587 fontDescriptionRun06.characterRun.characterIndex = 54u;
2588 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2589 fontDescriptionRun06.familyLength = fontHebrew.size();
2590 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2591 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2592 fontDescriptionRun06.familyDefined = true;
2593 fontDescriptionRun06.weightDefined = false;
2594 fontDescriptionRun06.widthDefined = false;
2595 fontDescriptionRun06.slantDefined = false;
2596 fontDescriptionRun06.sizeDefined = false;
2598 // Set a known font description
2599 FontDescriptionRun fontDescriptionRun07;
2600 fontDescriptionRun07.characterRun.characterIndex = 64u;
2601 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2602 fontDescriptionRun07.familyLength = fontHebrew.size();
2603 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2604 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2605 fontDescriptionRun07.familyDefined = true;
2606 fontDescriptionRun07.weightDefined = false;
2607 fontDescriptionRun07.widthDefined = false;
2608 fontDescriptionRun07.slantDefined = false;
2609 fontDescriptionRun07.sizeDefined = false;
2611 // Set a known font description
2612 FontDescriptionRun fontDescriptionRun08;
2613 fontDescriptionRun08.characterRun.characterIndex = 74u;
2614 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2615 fontDescriptionRun08.familyLength = fontLatin.size();
2616 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2617 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2618 fontDescriptionRun08.familyDefined = true;
2619 fontDescriptionRun08.weightDefined = false;
2620 fontDescriptionRun08.widthDefined = false;
2621 fontDescriptionRun08.slantDefined = false;
2622 fontDescriptionRun08.sizeDefined = false;
2624 // Set a known font description
2625 FontDescriptionRun fontDescriptionRun09;
2626 fontDescriptionRun09.characterRun.characterIndex = 92u;
2627 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2628 fontDescriptionRun09.familyLength = fontLatin.size();
2629 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2630 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2631 fontDescriptionRun09.familyDefined = true;
2632 fontDescriptionRun09.weightDefined = false;
2633 fontDescriptionRun09.widthDefined = false;
2634 fontDescriptionRun09.slantDefined = false;
2635 fontDescriptionRun09.sizeDefined = false;
2637 // Set a known font description
2638 FontDescriptionRun fontDescriptionRun10;
2639 fontDescriptionRun10.characterRun.characterIndex = 104u;
2640 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2641 fontDescriptionRun10.familyLength = fontArabic.size();
2642 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2643 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2644 fontDescriptionRun10.familyDefined = true;
2645 fontDescriptionRun10.weightDefined = false;
2646 fontDescriptionRun10.widthDefined = false;
2647 fontDescriptionRun10.slantDefined = false;
2648 fontDescriptionRun10.sizeDefined = false;
2650 // Set a known font description
2651 FontDescriptionRun fontDescriptionRun11;
2652 fontDescriptionRun11.characterRun.characterIndex = 118u;
2653 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2654 fontDescriptionRun11.familyLength = fontHebrew.size();
2655 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2656 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2657 fontDescriptionRun11.familyDefined = true;
2658 fontDescriptionRun11.weightDefined = false;
2659 fontDescriptionRun11.widthDefined = false;
2660 fontDescriptionRun11.slantDefined = false;
2661 fontDescriptionRun11.sizeDefined = false;
2663 // Set a known font description
2664 FontDescriptionRun fontDescriptionRun12;
2665 fontDescriptionRun12.characterRun.characterIndex = 128u;
2666 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2667 fontDescriptionRun12.familyLength = fontLatin.size();
2668 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2669 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2670 fontDescriptionRun12.familyDefined = true;
2671 fontDescriptionRun12.weightDefined = false;
2672 fontDescriptionRun12.widthDefined = false;
2673 fontDescriptionRun12.slantDefined = false;
2674 fontDescriptionRun12.sizeDefined = false;
2676 // Set a known font description
2677 FontDescriptionRun fontDescriptionRun13;
2678 fontDescriptionRun13.characterRun.characterIndex = 145u;
2679 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2680 fontDescriptionRun13.familyLength = fontHebrew.size();
2681 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2682 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2683 fontDescriptionRun13.familyDefined = true;
2684 fontDescriptionRun13.weightDefined = false;
2685 fontDescriptionRun13.widthDefined = false;
2686 fontDescriptionRun13.slantDefined = false;
2687 fontDescriptionRun13.sizeDefined = false;
2689 // Set a known font description
2690 FontDescriptionRun fontDescriptionRun14;
2691 fontDescriptionRun14.characterRun.characterIndex = 154u;
2692 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2693 fontDescriptionRun14.familyLength = fontLatin.size();
2694 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2695 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2696 fontDescriptionRun14.familyDefined = true;
2697 fontDescriptionRun14.weightDefined = false;
2698 fontDescriptionRun14.widthDefined = false;
2699 fontDescriptionRun14.slantDefined = false;
2700 fontDescriptionRun14.sizeDefined = false;
2702 // Set a known font description
2703 FontDescriptionRun fontDescriptionRun15;
2704 fontDescriptionRun15.characterRun.characterIndex = 156u;
2705 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2706 fontDescriptionRun15.familyLength = fontHebrew.size();
2707 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2708 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2709 fontDescriptionRun15.familyDefined = true;
2710 fontDescriptionRun15.weightDefined = false;
2711 fontDescriptionRun15.widthDefined = false;
2712 fontDescriptionRun15.slantDefined = false;
2713 fontDescriptionRun15.sizeDefined = false;
2715 // Set a known font description
2716 FontDescriptionRun fontDescriptionRun16;
2717 fontDescriptionRun16.characterRun.characterIndex = 166u;
2718 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2719 fontDescriptionRun16.familyLength = fontLatin.size();
2720 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2721 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2722 fontDescriptionRun16.familyDefined = true;
2723 fontDescriptionRun16.weightDefined = false;
2724 fontDescriptionRun16.widthDefined = false;
2725 fontDescriptionRun16.slantDefined = false;
2726 fontDescriptionRun16.sizeDefined = false;
2728 // Set a known font description
2729 FontDescriptionRun fontDescriptionRun17;
2730 fontDescriptionRun17.characterRun.characterIndex = 178u;
2731 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2732 fontDescriptionRun17.familyLength = fontArabic.size();
2733 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2734 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2735 fontDescriptionRun17.familyDefined = true;
2736 fontDescriptionRun17.weightDefined = false;
2737 fontDescriptionRun17.widthDefined = false;
2738 fontDescriptionRun17.slantDefined = false;
2739 fontDescriptionRun17.sizeDefined = false;
2741 Vector<FontDescriptionRun> fontDescriptionRuns;
2742 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2743 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2744 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2745 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2746 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2747 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2748 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2749 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2750 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2751 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2752 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2753 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2754 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2755 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2756 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2757 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2758 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2759 Size textArea(100.f, 300.f);
2760 Size layoutSize(92.f, 380.f);
2763 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2764 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2765 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2766 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2767 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,
2768 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2769 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,
2770 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2771 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2772 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2773 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2774 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2775 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2776 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2777 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2778 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,
2779 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2780 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2783 struct LineRun line01 =
2795 struct LineRun line02 =
2807 struct LineRun line03 =
2819 struct LineRun line04 =
2831 struct LineRun line05 =
2843 struct LineRun line06 =
2855 struct LineRun line07 =
2867 struct LineRun line08 =
2879 struct LineRun line09 =
2891 struct LineRun line10 =
2903 struct LineRun line11 =
2915 struct LineRun line12 =
2927 struct LineRun line13 =
2939 struct LineRun line14 =
2951 struct LineRun line15 =
2963 struct LineRun line16 =
2975 struct LineRun line17 =
2987 struct LineRun line18 =
2999 struct LineRun line19 =
3011 Vector<LineRun> lines;
3012 lines.PushBack( line01 );
3013 lines.PushBack( line02 );
3014 lines.PushBack( line03 );
3015 lines.PushBack( line04 );
3016 lines.PushBack( line05 );
3017 lines.PushBack( line06 );
3018 lines.PushBack( line07 );
3019 lines.PushBack( line08 );
3020 lines.PushBack( line09 );
3021 lines.PushBack( line10 );
3022 lines.PushBack( line11 );
3023 lines.PushBack( line12 );
3024 lines.PushBack( line13 );
3025 lines.PushBack( line14 );
3026 lines.PushBack( line15 );
3027 lines.PushBack( line16 );
3028 lines.PushBack( line17 );
3029 lines.PushBack( line18 );
3030 lines.PushBack( line19 );
3032 LayoutTextData data =
3034 "Layout bidirectional text.",
3035 "Hello world demo שלום עולם.\n"
3036 "مرحبا بالعالم hello world שלום עולם\n"
3037 "שלום עולם hello world demo.\n"
3038 "hello world مرحبا بالعالم שלום עולם\n"
3039 "Hello world demo שלום עולם.\n"
3040 "שלום עולם hello world مرحبا بالعالم\n",
3043 fontDescriptionRuns.Begin(),
3049 Layout::Engine::MULTI_LINE_BOX,
3056 if( !LayoutTextTest( data ) )
3058 tet_result(TET_FAIL);
3061 tet_result(TET_PASS);
3065 int UtcDaliTextLayoutEllipsis01(void)
3067 ToolkitTestApplication application;
3068 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3070 // Layout single-line LTR text with ellipsis.
3072 const std::string fontLatin( "TizenSans" );
3074 // Set a known font description
3075 FontDescriptionRun fontDescriptionRun01;
3076 fontDescriptionRun01.characterRun.characterIndex = 0u;
3077 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3078 fontDescriptionRun01.familyLength = fontLatin.size();
3079 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3080 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3081 fontDescriptionRun01.familyDefined = true;
3082 fontDescriptionRun01.weightDefined = false;
3083 fontDescriptionRun01.widthDefined = false;
3084 fontDescriptionRun01.slantDefined = false;
3085 fontDescriptionRun01.sizeDefined = false;
3087 Vector<FontDescriptionRun> fontDescriptionRuns;
3088 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3090 struct LineRun line01 =
3102 Vector<LineRun> lines;
3103 lines.PushBack( line01 );
3107 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
3110 Size textArea( 100.f, 50.f );
3111 Size layoutSize( 100.f, 20.f );
3113 LayoutTextData data =
3115 "Layout single-line LTR text with ellipsis.",
3116 "Hello world demo hello world demo hello world demo.",
3119 fontDescriptionRuns.Begin(),
3125 Layout::Engine::SINGLE_LINE_BOX,
3132 if( !LayoutTextTest( data ) )
3134 tet_result(TET_FAIL);
3137 tet_result(TET_PASS);
3141 int UtcDaliTextLayoutEllipsis02(void)
3143 ToolkitTestApplication application;
3144 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3146 // Layout multi-line LTR text with ellipsis.
3148 const std::string fontLatin( "TizenSans" );
3150 // Set a known font description
3151 FontDescriptionRun fontDescriptionRun01;
3152 fontDescriptionRun01.characterRun.characterIndex = 0u;
3153 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3154 fontDescriptionRun01.familyLength = fontLatin.size();
3155 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3156 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3157 fontDescriptionRun01.familyDefined = true;
3158 fontDescriptionRun01.weightDefined = false;
3159 fontDescriptionRun01.widthDefined = false;
3160 fontDescriptionRun01.slantDefined = false;
3161 fontDescriptionRun01.sizeDefined = false;
3163 Vector<FontDescriptionRun> fontDescriptionRuns;
3164 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3166 struct LineRun line01 =
3178 struct LineRun line02 =
3190 Vector<LineRun> lines;
3191 lines.PushBack( line01 );
3192 lines.PushBack( line02 );
3196 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
3197 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 53.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
3200 Size textArea( 100.f, 50.f );
3201 Size layoutSize( 100.f, 40.f );
3203 LayoutTextData data =
3205 "Layout multi-line LTR text with ellipsis.",
3206 "Hello world demo hello world demo hello world demo.",
3209 fontDescriptionRuns.Begin(),
3215 Layout::Engine::MULTI_LINE_BOX,
3222 if( !LayoutTextTest( data ) )
3224 tet_result(TET_FAIL);
3227 tet_result(TET_PASS);
3231 int UtcDaliTextLayoutEllipsis03(void)
3233 ToolkitTestApplication application;
3234 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3236 // Layout single-line RTL text with ellipsis.
3238 const std::string fontHebrew( "TizenSansHebrew" );
3239 const std::string fontArabic( "TizenSansArabic" );
3241 // Set a known font description
3242 FontDescriptionRun fontDescriptionRun01;
3243 fontDescriptionRun01.characterRun.characterIndex = 0u;
3244 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3245 fontDescriptionRun01.familyLength = fontHebrew.size();
3246 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3247 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3248 fontDescriptionRun01.familyDefined = true;
3249 fontDescriptionRun01.weightDefined = false;
3250 fontDescriptionRun01.widthDefined = false;
3251 fontDescriptionRun01.slantDefined = false;
3252 fontDescriptionRun01.sizeDefined = false;
3254 FontDescriptionRun fontDescriptionRun02;
3255 fontDescriptionRun02.characterRun.characterIndex = 10u;
3256 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3257 fontDescriptionRun02.familyLength = fontArabic.size();
3258 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3259 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3260 fontDescriptionRun02.familyDefined = true;
3261 fontDescriptionRun02.weightDefined = false;
3262 fontDescriptionRun02.widthDefined = false;
3263 fontDescriptionRun02.slantDefined = false;
3264 fontDescriptionRun02.sizeDefined = false;
3266 FontDescriptionRun fontDescriptionRun03;
3267 fontDescriptionRun03.characterRun.characterIndex = 24u;
3268 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3269 fontDescriptionRun03.familyLength = fontHebrew.size();
3270 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3271 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3272 fontDescriptionRun03.familyDefined = true;
3273 fontDescriptionRun03.weightDefined = false;
3274 fontDescriptionRun03.widthDefined = false;
3275 fontDescriptionRun03.slantDefined = false;
3276 fontDescriptionRun03.sizeDefined = false;
3278 FontDescriptionRun fontDescriptionRun04;
3279 fontDescriptionRun04.characterRun.characterIndex = 34u;
3280 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3281 fontDescriptionRun04.familyLength = fontArabic.size();
3282 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3283 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3284 fontDescriptionRun04.familyDefined = true;
3285 fontDescriptionRun04.weightDefined = false;
3286 fontDescriptionRun04.widthDefined = false;
3287 fontDescriptionRun04.slantDefined = false;
3288 fontDescriptionRun04.sizeDefined = false;
3290 FontDescriptionRun fontDescriptionRun05;
3291 fontDescriptionRun05.characterRun.characterIndex = 48u;
3292 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3293 fontDescriptionRun05.familyLength = fontHebrew.size();
3294 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3295 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3296 fontDescriptionRun05.familyDefined = true;
3297 fontDescriptionRun05.weightDefined = false;
3298 fontDescriptionRun05.widthDefined = false;
3299 fontDescriptionRun05.slantDefined = false;
3300 fontDescriptionRun05.sizeDefined = false;
3302 FontDescriptionRun fontDescriptionRun06;
3303 fontDescriptionRun06.characterRun.characterIndex = 58u;
3304 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3305 fontDescriptionRun06.familyLength = fontArabic.size();
3306 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3307 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3308 fontDescriptionRun06.familyDefined = true;
3309 fontDescriptionRun06.weightDefined = false;
3310 fontDescriptionRun06.widthDefined = false;
3311 fontDescriptionRun06.slantDefined = false;
3312 fontDescriptionRun06.sizeDefined = false;
3314 Vector<FontDescriptionRun> fontDescriptionRuns;
3315 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3316 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3317 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3318 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3319 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3320 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3322 struct LineRun line01 =
3334 Vector<LineRun> lines;
3335 lines.PushBack( line01 );
3339 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3342 Size textArea( 100.f, 50.f );
3343 Size layoutSize( 100.f, 20.f );
3345 LayoutTextData data =
3347 "Layout single-line RTL text with ellipsis.",
3348 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3351 fontDescriptionRuns.Begin(),
3357 Layout::Engine::SINGLE_LINE_BOX,
3364 if( !LayoutTextTest( data ) )
3366 tet_result(TET_FAIL);
3369 tet_result(TET_PASS);
3373 int UtcDaliTextLayoutEllipsis04(void)
3375 ToolkitTestApplication application;
3376 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3378 // Layout multi-line RTL text with ellipsis.
3380 const std::string fontHebrew( "TizenSansHebrew" );
3381 const std::string fontArabic( "TizenSansArabic" );
3383 // Set a known font description
3384 FontDescriptionRun fontDescriptionRun01;
3385 fontDescriptionRun01.characterRun.characterIndex = 0u;
3386 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3387 fontDescriptionRun01.familyLength = fontHebrew.size();
3388 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3389 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3390 fontDescriptionRun01.familyDefined = true;
3391 fontDescriptionRun01.weightDefined = false;
3392 fontDescriptionRun01.widthDefined = false;
3393 fontDescriptionRun01.slantDefined = false;
3394 fontDescriptionRun01.sizeDefined = false;
3396 FontDescriptionRun fontDescriptionRun02;
3397 fontDescriptionRun02.characterRun.characterIndex = 10u;
3398 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3399 fontDescriptionRun02.familyLength = fontArabic.size();
3400 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3401 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3402 fontDescriptionRun02.familyDefined = true;
3403 fontDescriptionRun02.weightDefined = false;
3404 fontDescriptionRun02.widthDefined = false;
3405 fontDescriptionRun02.slantDefined = false;
3406 fontDescriptionRun02.sizeDefined = false;
3408 FontDescriptionRun fontDescriptionRun03;
3409 fontDescriptionRun03.characterRun.characterIndex = 24u;
3410 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3411 fontDescriptionRun03.familyLength = fontHebrew.size();
3412 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3413 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3414 fontDescriptionRun03.familyDefined = true;
3415 fontDescriptionRun03.weightDefined = false;
3416 fontDescriptionRun03.widthDefined = false;
3417 fontDescriptionRun03.slantDefined = false;
3418 fontDescriptionRun03.sizeDefined = false;
3420 FontDescriptionRun fontDescriptionRun04;
3421 fontDescriptionRun04.characterRun.characterIndex = 34u;
3422 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3423 fontDescriptionRun04.familyLength = fontArabic.size();
3424 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3425 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3426 fontDescriptionRun04.familyDefined = true;
3427 fontDescriptionRun04.weightDefined = false;
3428 fontDescriptionRun04.widthDefined = false;
3429 fontDescriptionRun04.slantDefined = false;
3430 fontDescriptionRun04.sizeDefined = false;
3432 FontDescriptionRun fontDescriptionRun05;
3433 fontDescriptionRun05.characterRun.characterIndex = 48u;
3434 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3435 fontDescriptionRun05.familyLength = fontHebrew.size();
3436 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3437 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3438 fontDescriptionRun05.familyDefined = true;
3439 fontDescriptionRun05.weightDefined = false;
3440 fontDescriptionRun05.widthDefined = false;
3441 fontDescriptionRun05.slantDefined = false;
3442 fontDescriptionRun05.sizeDefined = false;
3444 FontDescriptionRun fontDescriptionRun06;
3445 fontDescriptionRun06.characterRun.characterIndex = 58u;
3446 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3447 fontDescriptionRun06.familyLength = fontArabic.size();
3448 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3449 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3450 fontDescriptionRun06.familyDefined = true;
3451 fontDescriptionRun06.weightDefined = false;
3452 fontDescriptionRun06.widthDefined = false;
3453 fontDescriptionRun06.slantDefined = false;
3454 fontDescriptionRun06.sizeDefined = false;
3456 Vector<FontDescriptionRun> fontDescriptionRuns;
3457 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3458 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3459 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3460 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3461 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3462 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3464 struct LineRun line01 =
3476 struct LineRun line02 =
3488 Vector<LineRun> lines;
3489 lines.PushBack( line01 );
3490 lines.PushBack( line02 );
3494 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3495 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f,
3498 Size textArea( 100.f, 50.f );
3499 Size layoutSize( 100.f, 40.f );
3501 LayoutTextData data =
3503 "Layout single-line RTL text with ellipsis.",
3504 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3507 fontDescriptionRuns.Begin(),
3513 Layout::Engine::MULTI_LINE_BOX,
3520 if( !LayoutTextTest( data ) )
3522 tet_result(TET_FAIL);
3525 tet_result(TET_PASS);
3529 int UtcDaliTextLayoutEllipsis05(void)
3531 ToolkitTestApplication application;
3532 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3534 const std::string fontLatin( "TizenSans" );
3536 // Set a known font description
3537 FontDescriptionRun fontDescriptionRun01;
3538 fontDescriptionRun01.characterRun.characterIndex = 0u;
3539 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3540 fontDescriptionRun01.familyLength = fontLatin.size();
3541 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3542 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3543 fontDescriptionRun01.familyDefined = true;
3544 fontDescriptionRun01.weightDefined = false;
3545 fontDescriptionRun01.widthDefined = false;
3546 fontDescriptionRun01.slantDefined = false;
3547 fontDescriptionRun01.sizeDefined = false;
3549 Vector<FontDescriptionRun> fontDescriptionRuns;
3550 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3552 struct LineRun line01 =
3564 Vector<LineRun> lines;
3565 lines.PushBack( line01 );
3572 Size textArea( 100.f, 19.f );
3573 Size layoutSize( 100.f, 20.f );
3575 LayoutTextData data =
3577 "Not enough height.",
3581 fontDescriptionRuns.Begin(),
3587 Layout::Engine::MULTI_LINE_BOX,
3594 if( !LayoutTextTest( data ) )
3596 tet_result(TET_FAIL);
3599 tet_result(TET_PASS);
3603 int UtcDaliTextReorderLayout01(void)
3605 ToolkitTestApplication application;
3606 tet_infoline(" UtcDaliTextReorderLayout01");
3608 // Reorder lines. No right to left characters.
3610 const std::string fontLatin( "TizenSans" );
3612 // Set a known font description
3613 FontDescriptionRun fontDescriptionRun01;
3614 fontDescriptionRun01.characterRun.characterIndex = 0u;
3615 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3616 fontDescriptionRun01.familyLength = fontLatin.size();
3617 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3618 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3619 fontDescriptionRun01.familyDefined = true;
3620 fontDescriptionRun01.weightDefined = false;
3621 fontDescriptionRun01.widthDefined = false;
3622 fontDescriptionRun01.slantDefined = false;
3623 fontDescriptionRun01.sizeDefined = false;
3625 Vector<FontDescriptionRun> fontDescriptionRuns;
3626 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3630 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
3633 Size textArea( 100.f, 300.f );
3635 ReLayoutRightToLeftLinesData data =
3637 "Text with no right to left text.",
3641 fontDescriptionRuns.Begin(),
3648 if( !ReLayoutRightToLeftLinesTest( data ) )
3650 tet_result(TET_FAIL);
3653 tet_result(TET_PASS);
3657 int UtcDaliTextReorderLayout02(void)
3659 ToolkitTestApplication application;
3660 tet_infoline(" UtcDaliTextReorderLayout02");
3662 // Reorder lines of the first paragraph.
3664 const std::string fontHebrew( "TizenSansHebrew" );
3665 const std::string fontArabic( "TizenSansArabic" );
3667 // Set a known font description
3668 FontDescriptionRun fontDescriptionRun01;
3669 fontDescriptionRun01.characterRun.characterIndex = 0u;
3670 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3671 fontDescriptionRun01.familyLength = fontHebrew.size();
3672 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3673 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3674 fontDescriptionRun01.familyDefined = true;
3675 fontDescriptionRun01.weightDefined = false;
3676 fontDescriptionRun01.widthDefined = false;
3677 fontDescriptionRun01.slantDefined = false;
3678 fontDescriptionRun01.sizeDefined = false;
3680 FontDescriptionRun fontDescriptionRun02;
3681 fontDescriptionRun02.characterRun.characterIndex = 10u;
3682 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3683 fontDescriptionRun02.familyLength = fontArabic.size();
3684 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3685 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3686 fontDescriptionRun02.familyDefined = true;
3687 fontDescriptionRun02.weightDefined = false;
3688 fontDescriptionRun02.widthDefined = false;
3689 fontDescriptionRun02.slantDefined = false;
3690 fontDescriptionRun02.sizeDefined = false;
3692 FontDescriptionRun fontDescriptionRun03;
3693 fontDescriptionRun03.characterRun.characterIndex = 24u;
3694 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3695 fontDescriptionRun03.familyLength = fontArabic.size();
3696 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3697 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3698 fontDescriptionRun03.familyDefined = true;
3699 fontDescriptionRun03.weightDefined = false;
3700 fontDescriptionRun03.widthDefined = false;
3701 fontDescriptionRun03.slantDefined = false;
3702 fontDescriptionRun03.sizeDefined = false;
3704 FontDescriptionRun fontDescriptionRun04;
3705 fontDescriptionRun04.characterRun.characterIndex = 38u;
3706 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3707 fontDescriptionRun04.familyLength = fontHebrew.size();
3708 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3709 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3710 fontDescriptionRun04.familyDefined = true;
3711 fontDescriptionRun04.weightDefined = false;
3712 fontDescriptionRun04.widthDefined = false;
3713 fontDescriptionRun04.slantDefined = false;
3714 fontDescriptionRun04.sizeDefined = false;
3716 FontDescriptionRun fontDescriptionRun05;
3717 fontDescriptionRun05.characterRun.characterIndex = 48u;
3718 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3719 fontDescriptionRun05.familyLength = fontHebrew.size();
3720 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3721 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3722 fontDescriptionRun05.familyDefined = true;
3723 fontDescriptionRun05.weightDefined = false;
3724 fontDescriptionRun05.widthDefined = false;
3725 fontDescriptionRun05.slantDefined = false;
3726 fontDescriptionRun05.sizeDefined = false;
3728 FontDescriptionRun fontDescriptionRun06;
3729 fontDescriptionRun06.characterRun.characterIndex = 58u;
3730 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3731 fontDescriptionRun06.familyLength = fontArabic.size();
3732 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3733 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3734 fontDescriptionRun06.familyDefined = true;
3735 fontDescriptionRun06.weightDefined = false;
3736 fontDescriptionRun06.widthDefined = false;
3737 fontDescriptionRun06.slantDefined = false;
3738 fontDescriptionRun06.sizeDefined = false;
3740 Vector<FontDescriptionRun> fontDescriptionRuns;
3741 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3742 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3743 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3744 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3745 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3746 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3750 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
3751 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 12.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,
3752 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
3753 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3754 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3755 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3758 Size textArea( 100.f, 300.f );
3760 ReLayoutRightToLeftLinesData data =
3762 "Paragraphs with right to left text.",
3763 "שלום עולם مرحبا بالعالم\n"
3764 "مرحبا بالعالم שלום עולם\n"
3765 "שלום עולם مرحبا بالعالم.",
3768 fontDescriptionRuns.Begin(),
3775 if( !ReLayoutRightToLeftLinesTest( data ) )
3777 tet_result(TET_FAIL);
3780 tet_result(TET_PASS);
3784 int UtcDaliTextReorderLayout03(void)
3786 ToolkitTestApplication application;
3787 tet_infoline(" UtcDaliTextReorderLayout03");
3789 // Reorder lines of the mid paragraph.
3791 const std::string fontHebrew( "TizenSansHebrew" );
3792 const std::string fontArabic( "TizenSansArabic" );
3794 // Set a known font description
3795 FontDescriptionRun fontDescriptionRun01;
3796 fontDescriptionRun01.characterRun.characterIndex = 0u;
3797 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3798 fontDescriptionRun01.familyLength = fontHebrew.size();
3799 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3800 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3801 fontDescriptionRun01.familyDefined = true;
3802 fontDescriptionRun01.weightDefined = false;
3803 fontDescriptionRun01.widthDefined = false;
3804 fontDescriptionRun01.slantDefined = false;
3805 fontDescriptionRun01.sizeDefined = false;
3807 FontDescriptionRun fontDescriptionRun02;
3808 fontDescriptionRun02.characterRun.characterIndex = 10u;
3809 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3810 fontDescriptionRun02.familyLength = fontArabic.size();
3811 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3812 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3813 fontDescriptionRun02.familyDefined = true;
3814 fontDescriptionRun02.weightDefined = false;
3815 fontDescriptionRun02.widthDefined = false;
3816 fontDescriptionRun02.slantDefined = false;
3817 fontDescriptionRun02.sizeDefined = false;
3819 FontDescriptionRun fontDescriptionRun03;
3820 fontDescriptionRun03.characterRun.characterIndex = 24u;
3821 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3822 fontDescriptionRun03.familyLength = fontArabic.size();
3823 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3824 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3825 fontDescriptionRun03.familyDefined = true;
3826 fontDescriptionRun03.weightDefined = false;
3827 fontDescriptionRun03.widthDefined = false;
3828 fontDescriptionRun03.slantDefined = false;
3829 fontDescriptionRun03.sizeDefined = false;
3831 FontDescriptionRun fontDescriptionRun04;
3832 fontDescriptionRun04.characterRun.characterIndex = 38u;
3833 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3834 fontDescriptionRun04.familyLength = fontHebrew.size();
3835 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3836 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3837 fontDescriptionRun04.familyDefined = true;
3838 fontDescriptionRun04.weightDefined = false;
3839 fontDescriptionRun04.widthDefined = false;
3840 fontDescriptionRun04.slantDefined = false;
3841 fontDescriptionRun04.sizeDefined = false;
3843 FontDescriptionRun fontDescriptionRun05;
3844 fontDescriptionRun05.characterRun.characterIndex = 48u;
3845 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3846 fontDescriptionRun05.familyLength = fontHebrew.size();
3847 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3848 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3849 fontDescriptionRun05.familyDefined = true;
3850 fontDescriptionRun05.weightDefined = false;
3851 fontDescriptionRun05.widthDefined = false;
3852 fontDescriptionRun05.slantDefined = false;
3853 fontDescriptionRun05.sizeDefined = false;
3855 FontDescriptionRun fontDescriptionRun06;
3856 fontDescriptionRun06.characterRun.characterIndex = 58u;
3857 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3858 fontDescriptionRun06.familyLength = fontArabic.size();
3859 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3860 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3861 fontDescriptionRun06.familyDefined = true;
3862 fontDescriptionRun06.weightDefined = false;
3863 fontDescriptionRun06.widthDefined = false;
3864 fontDescriptionRun06.slantDefined = false;
3865 fontDescriptionRun06.sizeDefined = false;
3867 Vector<FontDescriptionRun> fontDescriptionRuns;
3868 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3869 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3870 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3871 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3872 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3873 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3877 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3878 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3879 86.f, -8.f, 81.f, -6.f, 74.f, -7.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 51.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f,
3880 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3881 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3882 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3885 Size textArea( 100.f, 300.f );
3887 ReLayoutRightToLeftLinesData data =
3889 "Paragraphs with right to left text.",
3890 "שלום עולם مرحبا بالعالم\n"
3891 "مرحبا بالعالم שלום עולם\n"
3892 "שלום עולם مرحبا بالعالم.",
3895 fontDescriptionRuns.Begin(),
3902 if( !ReLayoutRightToLeftLinesTest( data ) )
3904 tet_result(TET_FAIL);
3907 tet_result(TET_PASS);
3911 int UtcDaliTextReorderLayout04(void)
3913 ToolkitTestApplication application;
3914 tet_infoline(" UtcDaliTextReorderLayout04");
3916 // Reorder lines of the last paragraph.
3918 const std::string fontHebrew( "TizenSansHebrew" );
3919 const std::string fontArabic( "TizenSansArabic" );
3921 // Set a known font description
3922 FontDescriptionRun fontDescriptionRun01;
3923 fontDescriptionRun01.characterRun.characterIndex = 0u;
3924 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3925 fontDescriptionRun01.familyLength = fontHebrew.size();
3926 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3927 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3928 fontDescriptionRun01.familyDefined = true;
3929 fontDescriptionRun01.weightDefined = false;
3930 fontDescriptionRun01.widthDefined = false;
3931 fontDescriptionRun01.slantDefined = false;
3932 fontDescriptionRun01.sizeDefined = false;
3934 FontDescriptionRun fontDescriptionRun02;
3935 fontDescriptionRun02.characterRun.characterIndex = 10u;
3936 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3937 fontDescriptionRun02.familyLength = fontArabic.size();
3938 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3939 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3940 fontDescriptionRun02.familyDefined = true;
3941 fontDescriptionRun02.weightDefined = false;
3942 fontDescriptionRun02.widthDefined = false;
3943 fontDescriptionRun02.slantDefined = false;
3944 fontDescriptionRun02.sizeDefined = false;
3946 FontDescriptionRun fontDescriptionRun03;
3947 fontDescriptionRun03.characterRun.characterIndex = 24u;
3948 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3949 fontDescriptionRun03.familyLength = fontArabic.size();
3950 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3951 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3952 fontDescriptionRun03.familyDefined = true;
3953 fontDescriptionRun03.weightDefined = false;
3954 fontDescriptionRun03.widthDefined = false;
3955 fontDescriptionRun03.slantDefined = false;
3956 fontDescriptionRun03.sizeDefined = false;
3958 FontDescriptionRun fontDescriptionRun04;
3959 fontDescriptionRun04.characterRun.characterIndex = 38u;
3960 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3961 fontDescriptionRun04.familyLength = fontHebrew.size();
3962 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3963 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3964 fontDescriptionRun04.familyDefined = true;
3965 fontDescriptionRun04.weightDefined = false;
3966 fontDescriptionRun04.widthDefined = false;
3967 fontDescriptionRun04.slantDefined = false;
3968 fontDescriptionRun04.sizeDefined = false;
3970 FontDescriptionRun fontDescriptionRun05;
3971 fontDescriptionRun05.characterRun.characterIndex = 48u;
3972 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3973 fontDescriptionRun05.familyLength = fontHebrew.size();
3974 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3975 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3976 fontDescriptionRun05.familyDefined = true;
3977 fontDescriptionRun05.weightDefined = false;
3978 fontDescriptionRun05.widthDefined = false;
3979 fontDescriptionRun05.slantDefined = false;
3980 fontDescriptionRun05.sizeDefined = false;
3982 FontDescriptionRun fontDescriptionRun06;
3983 fontDescriptionRun06.characterRun.characterIndex = 58u;
3984 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3985 fontDescriptionRun06.familyLength = fontArabic.size();
3986 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3987 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3988 fontDescriptionRun06.familyDefined = true;
3989 fontDescriptionRun06.weightDefined = false;
3990 fontDescriptionRun06.widthDefined = false;
3991 fontDescriptionRun06.slantDefined = false;
3992 fontDescriptionRun06.sizeDefined = false;
3994 Vector<FontDescriptionRun> fontDescriptionRuns;
3995 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3996 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3997 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3998 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3999 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4000 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4004 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4005 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
4006 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
4007 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4008 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
4009 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 17.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4012 Size textArea( 100.f, 300.f );
4014 ReLayoutRightToLeftLinesData data =
4016 "Paragraphs with right to left text.",
4017 "שלום עולם مرحبا بالعالم\n"
4018 "مرحبا بالعالم שלום עולם\n"
4019 "שלום עולם مرحبا بالعالم.",
4022 fontDescriptionRuns.Begin(),
4029 if( !ReLayoutRightToLeftLinesTest( data ) )
4031 tet_result(TET_FAIL);
4034 tet_result(TET_PASS);
4038 int UtcDaliTextAlign01(void)
4040 ToolkitTestApplication application;
4041 tet_infoline(" UtcDaliTextAlign01");
4043 // Calculate text alignment.
4045 const std::string fontLatin( "TizenSans" );
4046 const std::string fontHebrew( "TizenSansHebrew" );
4047 const std::string fontArabic( "TizenSansArabic" );
4049 // Set a known font description
4050 FontDescriptionRun fontDescriptionRun01;
4051 fontDescriptionRun01.characterRun.characterIndex = 0u;
4052 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4053 fontDescriptionRun01.familyLength = fontLatin.size();
4054 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4055 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4056 fontDescriptionRun01.familyDefined = true;
4057 fontDescriptionRun01.weightDefined = false;
4058 fontDescriptionRun01.widthDefined = false;
4059 fontDescriptionRun01.slantDefined = false;
4060 fontDescriptionRun01.sizeDefined = false;
4062 FontDescriptionRun fontDescriptionRun02;
4063 fontDescriptionRun02.characterRun.characterIndex = 12u;
4064 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4065 fontDescriptionRun02.familyLength = fontHebrew.size();
4066 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4067 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4068 fontDescriptionRun02.familyDefined = true;
4069 fontDescriptionRun02.weightDefined = false;
4070 fontDescriptionRun02.widthDefined = false;
4071 fontDescriptionRun02.slantDefined = false;
4072 fontDescriptionRun02.sizeDefined = false;
4074 FontDescriptionRun fontDescriptionRun03;
4075 fontDescriptionRun03.characterRun.characterIndex = 22u;
4076 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4077 fontDescriptionRun03.familyLength = fontArabic.size();
4078 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4079 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4080 fontDescriptionRun03.familyDefined = true;
4081 fontDescriptionRun03.weightDefined = false;
4082 fontDescriptionRun03.widthDefined = false;
4083 fontDescriptionRun03.slantDefined = false;
4084 fontDescriptionRun03.sizeDefined = false;
4086 FontDescriptionRun fontDescriptionRun04;
4087 fontDescriptionRun04.characterRun.characterIndex = 36u;
4088 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4089 fontDescriptionRun04.familyLength = fontLatin.size();
4090 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4091 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4092 fontDescriptionRun04.familyDefined = true;
4093 fontDescriptionRun04.weightDefined = false;
4094 fontDescriptionRun04.widthDefined = false;
4095 fontDescriptionRun04.slantDefined = false;
4096 fontDescriptionRun04.sizeDefined = false;
4098 FontDescriptionRun fontDescriptionRun05;
4099 fontDescriptionRun05.characterRun.characterIndex = 48u;
4100 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4101 fontDescriptionRun05.familyLength = fontLatin.size();
4102 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4103 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4104 fontDescriptionRun05.familyDefined = true;
4105 fontDescriptionRun05.weightDefined = false;
4106 fontDescriptionRun05.widthDefined = false;
4107 fontDescriptionRun05.slantDefined = false;
4108 fontDescriptionRun05.sizeDefined = false;
4110 FontDescriptionRun fontDescriptionRun06;
4111 fontDescriptionRun06.characterRun.characterIndex = 60u;
4112 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4113 fontDescriptionRun06.familyLength = fontArabic.size();
4114 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4115 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4116 fontDescriptionRun06.familyDefined = true;
4117 fontDescriptionRun06.weightDefined = false;
4118 fontDescriptionRun06.widthDefined = false;
4119 fontDescriptionRun06.slantDefined = false;
4120 fontDescriptionRun06.sizeDefined = false;
4122 Vector<FontDescriptionRun> fontDescriptionRuns;
4123 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4124 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4125 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4126 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4127 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4128 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4130 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4132 Size textArea( 100.f, 300.f );
4135 "Begin alignment for the first paragraph.",
4136 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4139 fontDescriptionRuns.Begin(),
4140 Layout::HORIZONTAL_ALIGN_BEGIN,
4141 Layout::VERTICAL_ALIGN_TOP,
4148 if( !AlignTest( data ) )
4150 tet_result(TET_FAIL);
4153 tet_result(TET_PASS);
4157 int UtcDaliTextAlign02(void)
4159 ToolkitTestApplication application;
4160 tet_infoline(" UtcDaliTextAlign02");
4162 // Calculate text alignment.
4164 const std::string fontLatin( "TizenSans" );
4165 const std::string fontHebrew( "TizenSansHebrew" );
4166 const std::string fontArabic( "TizenSansArabic" );
4168 // Set a known font description
4169 FontDescriptionRun fontDescriptionRun01;
4170 fontDescriptionRun01.characterRun.characterIndex = 0u;
4171 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4172 fontDescriptionRun01.familyLength = fontLatin.size();
4173 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4174 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4175 fontDescriptionRun01.familyDefined = true;
4176 fontDescriptionRun01.weightDefined = false;
4177 fontDescriptionRun01.widthDefined = false;
4178 fontDescriptionRun01.slantDefined = false;
4179 fontDescriptionRun01.sizeDefined = false;
4181 FontDescriptionRun fontDescriptionRun02;
4182 fontDescriptionRun02.characterRun.characterIndex = 12u;
4183 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4184 fontDescriptionRun02.familyLength = fontHebrew.size();
4185 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4186 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4187 fontDescriptionRun02.familyDefined = true;
4188 fontDescriptionRun02.weightDefined = false;
4189 fontDescriptionRun02.widthDefined = false;
4190 fontDescriptionRun02.slantDefined = false;
4191 fontDescriptionRun02.sizeDefined = false;
4193 FontDescriptionRun fontDescriptionRun03;
4194 fontDescriptionRun03.characterRun.characterIndex = 22u;
4195 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4196 fontDescriptionRun03.familyLength = fontArabic.size();
4197 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4198 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4199 fontDescriptionRun03.familyDefined = true;
4200 fontDescriptionRun03.weightDefined = false;
4201 fontDescriptionRun03.widthDefined = false;
4202 fontDescriptionRun03.slantDefined = false;
4203 fontDescriptionRun03.sizeDefined = false;
4205 FontDescriptionRun fontDescriptionRun04;
4206 fontDescriptionRun04.characterRun.characterIndex = 36u;
4207 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4208 fontDescriptionRun04.familyLength = fontLatin.size();
4209 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4210 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4211 fontDescriptionRun04.familyDefined = true;
4212 fontDescriptionRun04.weightDefined = false;
4213 fontDescriptionRun04.widthDefined = false;
4214 fontDescriptionRun04.slantDefined = false;
4215 fontDescriptionRun04.sizeDefined = false;
4217 FontDescriptionRun fontDescriptionRun05;
4218 fontDescriptionRun05.characterRun.characterIndex = 48u;
4219 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4220 fontDescriptionRun05.familyLength = fontLatin.size();
4221 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4222 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4223 fontDescriptionRun05.familyDefined = true;
4224 fontDescriptionRun05.weightDefined = false;
4225 fontDescriptionRun05.widthDefined = false;
4226 fontDescriptionRun05.slantDefined = false;
4227 fontDescriptionRun05.sizeDefined = false;
4229 FontDescriptionRun fontDescriptionRun06;
4230 fontDescriptionRun06.characterRun.characterIndex = 60u;
4231 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4232 fontDescriptionRun06.familyLength = fontArabic.size();
4233 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4234 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4235 fontDescriptionRun06.familyDefined = true;
4236 fontDescriptionRun06.weightDefined = false;
4237 fontDescriptionRun06.widthDefined = false;
4238 fontDescriptionRun06.slantDefined = false;
4239 fontDescriptionRun06.sizeDefined = false;
4241 Vector<FontDescriptionRun> fontDescriptionRuns;
4242 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4243 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4244 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4245 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4246 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4247 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4249 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4251 Size textArea( 100.f, 300.f );
4254 "Begin alignment for the mid paragraph.",
4255 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4258 fontDescriptionRuns.Begin(),
4259 Layout::HORIZONTAL_ALIGN_BEGIN,
4260 Layout::VERTICAL_ALIGN_TOP,
4267 if( !AlignTest( data ) )
4269 tet_result(TET_FAIL);
4272 tet_result(TET_PASS);
4276 int UtcDaliTextAlign03(void)
4278 ToolkitTestApplication application;
4279 tet_infoline(" UtcDaliTextAlign03");
4281 // Calculate text alignment.
4283 const std::string fontLatin( "TizenSans" );
4284 const std::string fontHebrew( "TizenSansHebrew" );
4285 const std::string fontArabic( "TizenSansArabic" );
4287 // Set a known font description
4288 FontDescriptionRun fontDescriptionRun01;
4289 fontDescriptionRun01.characterRun.characterIndex = 0u;
4290 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4291 fontDescriptionRun01.familyLength = fontLatin.size();
4292 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4293 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4294 fontDescriptionRun01.familyDefined = true;
4295 fontDescriptionRun01.weightDefined = false;
4296 fontDescriptionRun01.widthDefined = false;
4297 fontDescriptionRun01.slantDefined = false;
4298 fontDescriptionRun01.sizeDefined = false;
4300 FontDescriptionRun fontDescriptionRun02;
4301 fontDescriptionRun02.characterRun.characterIndex = 12u;
4302 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4303 fontDescriptionRun02.familyLength = fontHebrew.size();
4304 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4305 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4306 fontDescriptionRun02.familyDefined = true;
4307 fontDescriptionRun02.weightDefined = false;
4308 fontDescriptionRun02.widthDefined = false;
4309 fontDescriptionRun02.slantDefined = false;
4310 fontDescriptionRun02.sizeDefined = false;
4312 FontDescriptionRun fontDescriptionRun03;
4313 fontDescriptionRun03.characterRun.characterIndex = 22u;
4314 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4315 fontDescriptionRun03.familyLength = fontArabic.size();
4316 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4317 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4318 fontDescriptionRun03.familyDefined = true;
4319 fontDescriptionRun03.weightDefined = false;
4320 fontDescriptionRun03.widthDefined = false;
4321 fontDescriptionRun03.slantDefined = false;
4322 fontDescriptionRun03.sizeDefined = false;
4324 FontDescriptionRun fontDescriptionRun04;
4325 fontDescriptionRun04.characterRun.characterIndex = 36u;
4326 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4327 fontDescriptionRun04.familyLength = fontLatin.size();
4328 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4329 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4330 fontDescriptionRun04.familyDefined = true;
4331 fontDescriptionRun04.weightDefined = false;
4332 fontDescriptionRun04.widthDefined = false;
4333 fontDescriptionRun04.slantDefined = false;
4334 fontDescriptionRun04.sizeDefined = false;
4336 FontDescriptionRun fontDescriptionRun05;
4337 fontDescriptionRun05.characterRun.characterIndex = 48u;
4338 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4339 fontDescriptionRun05.familyLength = fontLatin.size();
4340 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4341 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4342 fontDescriptionRun05.familyDefined = true;
4343 fontDescriptionRun05.weightDefined = false;
4344 fontDescriptionRun05.widthDefined = false;
4345 fontDescriptionRun05.slantDefined = false;
4346 fontDescriptionRun05.sizeDefined = false;
4348 FontDescriptionRun fontDescriptionRun06;
4349 fontDescriptionRun06.characterRun.characterIndex = 60u;
4350 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4351 fontDescriptionRun06.familyLength = fontArabic.size();
4352 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4353 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4354 fontDescriptionRun06.familyDefined = true;
4355 fontDescriptionRun06.weightDefined = false;
4356 fontDescriptionRun06.widthDefined = false;
4357 fontDescriptionRun06.slantDefined = false;
4358 fontDescriptionRun06.sizeDefined = false;
4360 Vector<FontDescriptionRun> fontDescriptionRuns;
4361 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4362 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4363 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4364 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4365 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4366 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4368 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4370 Size textArea( 100.f, 300.f );
4373 "Begin alignment for the last paragraph.",
4374 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4377 fontDescriptionRuns.Begin(),
4378 Layout::HORIZONTAL_ALIGN_BEGIN,
4379 Layout::VERTICAL_ALIGN_TOP,
4386 if( !AlignTest( data ) )
4388 tet_result(TET_FAIL);
4391 tet_result(TET_PASS);
4395 int UtcDaliTextAlign04(void)
4397 ToolkitTestApplication application;
4398 tet_infoline(" UtcDaliTextAlign04");
4400 // Calculate text alignment.
4402 const std::string fontLatin( "TizenSans" );
4403 const std::string fontHebrew( "TizenSansHebrew" );
4404 const std::string fontArabic( "TizenSansArabic" );
4406 // Set a known font description
4407 FontDescriptionRun fontDescriptionRun01;
4408 fontDescriptionRun01.characterRun.characterIndex = 0u;
4409 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4410 fontDescriptionRun01.familyLength = fontLatin.size();
4411 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4412 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4413 fontDescriptionRun01.familyDefined = true;
4414 fontDescriptionRun01.weightDefined = false;
4415 fontDescriptionRun01.widthDefined = false;
4416 fontDescriptionRun01.slantDefined = false;
4417 fontDescriptionRun01.sizeDefined = false;
4419 FontDescriptionRun fontDescriptionRun02;
4420 fontDescriptionRun02.characterRun.characterIndex = 12u;
4421 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4422 fontDescriptionRun02.familyLength = fontHebrew.size();
4423 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4424 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4425 fontDescriptionRun02.familyDefined = true;
4426 fontDescriptionRun02.weightDefined = false;
4427 fontDescriptionRun02.widthDefined = false;
4428 fontDescriptionRun02.slantDefined = false;
4429 fontDescriptionRun02.sizeDefined = false;
4431 FontDescriptionRun fontDescriptionRun03;
4432 fontDescriptionRun03.characterRun.characterIndex = 22u;
4433 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4434 fontDescriptionRun03.familyLength = fontArabic.size();
4435 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4436 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4437 fontDescriptionRun03.familyDefined = true;
4438 fontDescriptionRun03.weightDefined = false;
4439 fontDescriptionRun03.widthDefined = false;
4440 fontDescriptionRun03.slantDefined = false;
4441 fontDescriptionRun03.sizeDefined = false;
4443 FontDescriptionRun fontDescriptionRun04;
4444 fontDescriptionRun04.characterRun.characterIndex = 36u;
4445 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4446 fontDescriptionRun04.familyLength = fontLatin.size();
4447 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4448 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4449 fontDescriptionRun04.familyDefined = true;
4450 fontDescriptionRun04.weightDefined = false;
4451 fontDescriptionRun04.widthDefined = false;
4452 fontDescriptionRun04.slantDefined = false;
4453 fontDescriptionRun04.sizeDefined = false;
4455 FontDescriptionRun fontDescriptionRun05;
4456 fontDescriptionRun05.characterRun.characterIndex = 48u;
4457 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4458 fontDescriptionRun05.familyLength = fontLatin.size();
4459 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4460 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4461 fontDescriptionRun05.familyDefined = true;
4462 fontDescriptionRun05.weightDefined = false;
4463 fontDescriptionRun05.widthDefined = false;
4464 fontDescriptionRun05.slantDefined = false;
4465 fontDescriptionRun05.sizeDefined = false;
4467 FontDescriptionRun fontDescriptionRun06;
4468 fontDescriptionRun06.characterRun.characterIndex = 60u;
4469 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4470 fontDescriptionRun06.familyLength = fontArabic.size();
4471 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4472 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4473 fontDescriptionRun06.familyDefined = true;
4474 fontDescriptionRun06.weightDefined = false;
4475 fontDescriptionRun06.widthDefined = false;
4476 fontDescriptionRun06.slantDefined = false;
4477 fontDescriptionRun06.sizeDefined = false;
4479 Vector<FontDescriptionRun> fontDescriptionRuns;
4480 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4481 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4482 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4483 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4484 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4485 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4487 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4489 Size textArea( 100.f, 300.f );
4492 "Center alignment for the first paragraph.",
4493 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4496 fontDescriptionRuns.Begin(),
4497 Layout::HORIZONTAL_ALIGN_CENTER,
4498 Layout::VERTICAL_ALIGN_TOP,
4505 if( !AlignTest( data ) )
4507 tet_result(TET_FAIL);
4510 tet_result(TET_PASS);
4514 int UtcDaliTextAlign05(void)
4516 ToolkitTestApplication application;
4517 tet_infoline(" UtcDaliTextAlign05");
4519 // Calculate text alignment.
4521 const std::string fontLatin( "TizenSans" );
4522 const std::string fontHebrew( "TizenSansHebrew" );
4523 const std::string fontArabic( "TizenSansArabic" );
4525 // Set a known font description
4526 FontDescriptionRun fontDescriptionRun01;
4527 fontDescriptionRun01.characterRun.characterIndex = 0u;
4528 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4529 fontDescriptionRun01.familyLength = fontLatin.size();
4530 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4531 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4532 fontDescriptionRun01.familyDefined = true;
4533 fontDescriptionRun01.weightDefined = false;
4534 fontDescriptionRun01.widthDefined = false;
4535 fontDescriptionRun01.slantDefined = false;
4536 fontDescriptionRun01.sizeDefined = false;
4538 FontDescriptionRun fontDescriptionRun02;
4539 fontDescriptionRun02.characterRun.characterIndex = 12u;
4540 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4541 fontDescriptionRun02.familyLength = fontHebrew.size();
4542 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4543 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4544 fontDescriptionRun02.familyDefined = true;
4545 fontDescriptionRun02.weightDefined = false;
4546 fontDescriptionRun02.widthDefined = false;
4547 fontDescriptionRun02.slantDefined = false;
4548 fontDescriptionRun02.sizeDefined = false;
4550 FontDescriptionRun fontDescriptionRun03;
4551 fontDescriptionRun03.characterRun.characterIndex = 22u;
4552 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4553 fontDescriptionRun03.familyLength = fontArabic.size();
4554 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4555 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4556 fontDescriptionRun03.familyDefined = true;
4557 fontDescriptionRun03.weightDefined = false;
4558 fontDescriptionRun03.widthDefined = false;
4559 fontDescriptionRun03.slantDefined = false;
4560 fontDescriptionRun03.sizeDefined = false;
4562 FontDescriptionRun fontDescriptionRun04;
4563 fontDescriptionRun04.characterRun.characterIndex = 36u;
4564 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4565 fontDescriptionRun04.familyLength = fontLatin.size();
4566 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4567 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4568 fontDescriptionRun04.familyDefined = true;
4569 fontDescriptionRun04.weightDefined = false;
4570 fontDescriptionRun04.widthDefined = false;
4571 fontDescriptionRun04.slantDefined = false;
4572 fontDescriptionRun04.sizeDefined = false;
4574 FontDescriptionRun fontDescriptionRun05;
4575 fontDescriptionRun05.characterRun.characterIndex = 48u;
4576 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4577 fontDescriptionRun05.familyLength = fontLatin.size();
4578 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4579 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4580 fontDescriptionRun05.familyDefined = true;
4581 fontDescriptionRun05.weightDefined = false;
4582 fontDescriptionRun05.widthDefined = false;
4583 fontDescriptionRun05.slantDefined = false;
4584 fontDescriptionRun05.sizeDefined = false;
4586 FontDescriptionRun fontDescriptionRun06;
4587 fontDescriptionRun06.characterRun.characterIndex = 60u;
4588 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4589 fontDescriptionRun06.familyLength = fontArabic.size();
4590 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4591 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4592 fontDescriptionRun06.familyDefined = true;
4593 fontDescriptionRun06.weightDefined = false;
4594 fontDescriptionRun06.widthDefined = false;
4595 fontDescriptionRun06.slantDefined = false;
4596 fontDescriptionRun06.sizeDefined = false;
4598 Vector<FontDescriptionRun> fontDescriptionRuns;
4599 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4600 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4601 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4602 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4603 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4604 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4606 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4608 Size textArea( 100.f, 300.f );
4611 "Center alignment for the mid paragraph.",
4612 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4615 fontDescriptionRuns.Begin(),
4616 Layout::HORIZONTAL_ALIGN_CENTER,
4617 Layout::VERTICAL_ALIGN_TOP,
4624 if( !AlignTest( data ) )
4626 tet_result(TET_FAIL);
4629 tet_result(TET_PASS);
4633 int UtcDaliTextAlign06(void)
4635 ToolkitTestApplication application;
4636 tet_infoline(" UtcDaliTextAlign06");
4638 // Calculate text alignment.
4640 const std::string fontLatin( "TizenSans" );
4641 const std::string fontHebrew( "TizenSansHebrew" );
4642 const std::string fontArabic( "TizenSansArabic" );
4644 // Set a known font description
4645 FontDescriptionRun fontDescriptionRun01;
4646 fontDescriptionRun01.characterRun.characterIndex = 0u;
4647 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4648 fontDescriptionRun01.familyLength = fontLatin.size();
4649 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4650 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4651 fontDescriptionRun01.familyDefined = true;
4652 fontDescriptionRun01.weightDefined = false;
4653 fontDescriptionRun01.widthDefined = false;
4654 fontDescriptionRun01.slantDefined = false;
4655 fontDescriptionRun01.sizeDefined = false;
4657 FontDescriptionRun fontDescriptionRun02;
4658 fontDescriptionRun02.characterRun.characterIndex = 12u;
4659 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4660 fontDescriptionRun02.familyLength = fontHebrew.size();
4661 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4662 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4663 fontDescriptionRun02.familyDefined = true;
4664 fontDescriptionRun02.weightDefined = false;
4665 fontDescriptionRun02.widthDefined = false;
4666 fontDescriptionRun02.slantDefined = false;
4667 fontDescriptionRun02.sizeDefined = false;
4669 FontDescriptionRun fontDescriptionRun03;
4670 fontDescriptionRun03.characterRun.characterIndex = 22u;
4671 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4672 fontDescriptionRun03.familyLength = fontArabic.size();
4673 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4674 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4675 fontDescriptionRun03.familyDefined = true;
4676 fontDescriptionRun03.weightDefined = false;
4677 fontDescriptionRun03.widthDefined = false;
4678 fontDescriptionRun03.slantDefined = false;
4679 fontDescriptionRun03.sizeDefined = false;
4681 FontDescriptionRun fontDescriptionRun04;
4682 fontDescriptionRun04.characterRun.characterIndex = 36u;
4683 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4684 fontDescriptionRun04.familyLength = fontLatin.size();
4685 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4686 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4687 fontDescriptionRun04.familyDefined = true;
4688 fontDescriptionRun04.weightDefined = false;
4689 fontDescriptionRun04.widthDefined = false;
4690 fontDescriptionRun04.slantDefined = false;
4691 fontDescriptionRun04.sizeDefined = false;
4693 FontDescriptionRun fontDescriptionRun05;
4694 fontDescriptionRun05.characterRun.characterIndex = 48u;
4695 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4696 fontDescriptionRun05.familyLength = fontLatin.size();
4697 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4698 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4699 fontDescriptionRun05.familyDefined = true;
4700 fontDescriptionRun05.weightDefined = false;
4701 fontDescriptionRun05.widthDefined = false;
4702 fontDescriptionRun05.slantDefined = false;
4703 fontDescriptionRun05.sizeDefined = false;
4705 FontDescriptionRun fontDescriptionRun06;
4706 fontDescriptionRun06.characterRun.characterIndex = 60u;
4707 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4708 fontDescriptionRun06.familyLength = fontArabic.size();
4709 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4710 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4711 fontDescriptionRun06.familyDefined = true;
4712 fontDescriptionRun06.weightDefined = false;
4713 fontDescriptionRun06.widthDefined = false;
4714 fontDescriptionRun06.slantDefined = false;
4715 fontDescriptionRun06.sizeDefined = false;
4717 Vector<FontDescriptionRun> fontDescriptionRuns;
4718 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4719 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4720 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4721 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4722 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4723 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4725 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4727 Size textArea( 100.f, 300.f );
4730 "Center alignment for the last paragraph.",
4731 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4734 fontDescriptionRuns.Begin(),
4735 Layout::HORIZONTAL_ALIGN_CENTER,
4736 Layout::VERTICAL_ALIGN_TOP,
4743 if( !AlignTest( data ) )
4745 tet_result(TET_FAIL);
4748 tet_result(TET_PASS);
4752 int UtcDaliTextAlign07(void)
4754 ToolkitTestApplication application;
4755 tet_infoline(" UtcDaliTextAlign07");
4757 // Calculate text alignment.
4759 const std::string fontLatin( "TizenSans" );
4760 const std::string fontHebrew( "TizenSansHebrew" );
4761 const std::string fontArabic( "TizenSansArabic" );
4763 // Set a known font description
4764 FontDescriptionRun fontDescriptionRun01;
4765 fontDescriptionRun01.characterRun.characterIndex = 0u;
4766 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4767 fontDescriptionRun01.familyLength = fontLatin.size();
4768 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4769 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4770 fontDescriptionRun01.familyDefined = true;
4771 fontDescriptionRun01.weightDefined = false;
4772 fontDescriptionRun01.widthDefined = false;
4773 fontDescriptionRun01.slantDefined = false;
4774 fontDescriptionRun01.sizeDefined = false;
4776 FontDescriptionRun fontDescriptionRun02;
4777 fontDescriptionRun02.characterRun.characterIndex = 12u;
4778 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4779 fontDescriptionRun02.familyLength = fontHebrew.size();
4780 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4781 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4782 fontDescriptionRun02.familyDefined = true;
4783 fontDescriptionRun02.weightDefined = false;
4784 fontDescriptionRun02.widthDefined = false;
4785 fontDescriptionRun02.slantDefined = false;
4786 fontDescriptionRun02.sizeDefined = false;
4788 FontDescriptionRun fontDescriptionRun03;
4789 fontDescriptionRun03.characterRun.characterIndex = 22u;
4790 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4791 fontDescriptionRun03.familyLength = fontArabic.size();
4792 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4793 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4794 fontDescriptionRun03.familyDefined = true;
4795 fontDescriptionRun03.weightDefined = false;
4796 fontDescriptionRun03.widthDefined = false;
4797 fontDescriptionRun03.slantDefined = false;
4798 fontDescriptionRun03.sizeDefined = false;
4800 FontDescriptionRun fontDescriptionRun04;
4801 fontDescriptionRun04.characterRun.characterIndex = 36u;
4802 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4803 fontDescriptionRun04.familyLength = fontLatin.size();
4804 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4805 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4806 fontDescriptionRun04.familyDefined = true;
4807 fontDescriptionRun04.weightDefined = false;
4808 fontDescriptionRun04.widthDefined = false;
4809 fontDescriptionRun04.slantDefined = false;
4810 fontDescriptionRun04.sizeDefined = false;
4812 FontDescriptionRun fontDescriptionRun05;
4813 fontDescriptionRun05.characterRun.characterIndex = 48u;
4814 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4815 fontDescriptionRun05.familyLength = fontLatin.size();
4816 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4817 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4818 fontDescriptionRun05.familyDefined = true;
4819 fontDescriptionRun05.weightDefined = false;
4820 fontDescriptionRun05.widthDefined = false;
4821 fontDescriptionRun05.slantDefined = false;
4822 fontDescriptionRun05.sizeDefined = false;
4824 FontDescriptionRun fontDescriptionRun06;
4825 fontDescriptionRun06.characterRun.characterIndex = 60u;
4826 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4827 fontDescriptionRun06.familyLength = fontArabic.size();
4828 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4829 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4830 fontDescriptionRun06.familyDefined = true;
4831 fontDescriptionRun06.weightDefined = false;
4832 fontDescriptionRun06.widthDefined = false;
4833 fontDescriptionRun06.slantDefined = false;
4834 fontDescriptionRun06.sizeDefined = false;
4836 Vector<FontDescriptionRun> fontDescriptionRuns;
4837 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4838 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4839 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4840 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4841 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4842 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4844 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4846 Size textArea( 100.f, 300.f );
4849 "End alignment for the first paragraph.",
4850 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4853 fontDescriptionRuns.Begin(),
4854 Layout::HORIZONTAL_ALIGN_END,
4855 Layout::VERTICAL_ALIGN_TOP,
4862 if( !AlignTest( data ) )
4864 tet_result(TET_FAIL);
4867 tet_result(TET_PASS);
4871 int UtcDaliTextAlign08(void)
4873 ToolkitTestApplication application;
4874 tet_infoline(" UtcDaliTextAlign08");
4876 // Calculate text alignment.
4878 const std::string fontLatin( "TizenSans" );
4879 const std::string fontHebrew( "TizenSansHebrew" );
4880 const std::string fontArabic( "TizenSansArabic" );
4882 // Set a known font description
4883 FontDescriptionRun fontDescriptionRun01;
4884 fontDescriptionRun01.characterRun.characterIndex = 0u;
4885 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4886 fontDescriptionRun01.familyLength = fontLatin.size();
4887 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4888 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4889 fontDescriptionRun01.familyDefined = true;
4890 fontDescriptionRun01.weightDefined = false;
4891 fontDescriptionRun01.widthDefined = false;
4892 fontDescriptionRun01.slantDefined = false;
4893 fontDescriptionRun01.sizeDefined = false;
4895 FontDescriptionRun fontDescriptionRun02;
4896 fontDescriptionRun02.characterRun.characterIndex = 12u;
4897 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4898 fontDescriptionRun02.familyLength = fontHebrew.size();
4899 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4900 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4901 fontDescriptionRun02.familyDefined = true;
4902 fontDescriptionRun02.weightDefined = false;
4903 fontDescriptionRun02.widthDefined = false;
4904 fontDescriptionRun02.slantDefined = false;
4905 fontDescriptionRun02.sizeDefined = false;
4907 FontDescriptionRun fontDescriptionRun03;
4908 fontDescriptionRun03.characterRun.characterIndex = 22u;
4909 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4910 fontDescriptionRun03.familyLength = fontArabic.size();
4911 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4912 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4913 fontDescriptionRun03.familyDefined = true;
4914 fontDescriptionRun03.weightDefined = false;
4915 fontDescriptionRun03.widthDefined = false;
4916 fontDescriptionRun03.slantDefined = false;
4917 fontDescriptionRun03.sizeDefined = false;
4919 FontDescriptionRun fontDescriptionRun04;
4920 fontDescriptionRun04.characterRun.characterIndex = 36u;
4921 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4922 fontDescriptionRun04.familyLength = fontLatin.size();
4923 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4924 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4925 fontDescriptionRun04.familyDefined = true;
4926 fontDescriptionRun04.weightDefined = false;
4927 fontDescriptionRun04.widthDefined = false;
4928 fontDescriptionRun04.slantDefined = false;
4929 fontDescriptionRun04.sizeDefined = false;
4931 FontDescriptionRun fontDescriptionRun05;
4932 fontDescriptionRun05.characterRun.characterIndex = 48u;
4933 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4934 fontDescriptionRun05.familyLength = fontLatin.size();
4935 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4936 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4937 fontDescriptionRun05.familyDefined = true;
4938 fontDescriptionRun05.weightDefined = false;
4939 fontDescriptionRun05.widthDefined = false;
4940 fontDescriptionRun05.slantDefined = false;
4941 fontDescriptionRun05.sizeDefined = false;
4943 FontDescriptionRun fontDescriptionRun06;
4944 fontDescriptionRun06.characterRun.characterIndex = 60u;
4945 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4946 fontDescriptionRun06.familyLength = fontArabic.size();
4947 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4948 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4949 fontDescriptionRun06.familyDefined = true;
4950 fontDescriptionRun06.weightDefined = false;
4951 fontDescriptionRun06.widthDefined = false;
4952 fontDescriptionRun06.slantDefined = false;
4953 fontDescriptionRun06.sizeDefined = false;
4955 Vector<FontDescriptionRun> fontDescriptionRuns;
4956 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4957 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4958 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4959 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4960 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4961 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4963 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
4965 Size textArea( 100.f, 300.f );
4968 "End alignment for the mid paragraph.",
4969 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4972 fontDescriptionRuns.Begin(),
4973 Layout::HORIZONTAL_ALIGN_END,
4974 Layout::VERTICAL_ALIGN_TOP,
4981 if( !AlignTest( data ) )
4983 tet_result(TET_FAIL);
4986 tet_result(TET_PASS);
4990 int UtcDaliTextAlign09(void)
4992 ToolkitTestApplication application;
4993 tet_infoline(" UtcDaliTextAlign09");
4995 // Calculate text alignment.
4997 const std::string fontLatin( "TizenSans" );
4998 const std::string fontHebrew( "TizenSansHebrew" );
4999 const std::string fontArabic( "TizenSansArabic" );
5001 // Set a known font description
5002 FontDescriptionRun fontDescriptionRun01;
5003 fontDescriptionRun01.characterRun.characterIndex = 0u;
5004 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5005 fontDescriptionRun01.familyLength = fontLatin.size();
5006 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5007 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5008 fontDescriptionRun01.familyDefined = true;
5009 fontDescriptionRun01.weightDefined = false;
5010 fontDescriptionRun01.widthDefined = false;
5011 fontDescriptionRun01.slantDefined = false;
5012 fontDescriptionRun01.sizeDefined = false;
5014 FontDescriptionRun fontDescriptionRun02;
5015 fontDescriptionRun02.characterRun.characterIndex = 12u;
5016 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5017 fontDescriptionRun02.familyLength = fontHebrew.size();
5018 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5019 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5020 fontDescriptionRun02.familyDefined = true;
5021 fontDescriptionRun02.weightDefined = false;
5022 fontDescriptionRun02.widthDefined = false;
5023 fontDescriptionRun02.slantDefined = false;
5024 fontDescriptionRun02.sizeDefined = false;
5026 FontDescriptionRun fontDescriptionRun03;
5027 fontDescriptionRun03.characterRun.characterIndex = 22u;
5028 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5029 fontDescriptionRun03.familyLength = fontArabic.size();
5030 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5031 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5032 fontDescriptionRun03.familyDefined = true;
5033 fontDescriptionRun03.weightDefined = false;
5034 fontDescriptionRun03.widthDefined = false;
5035 fontDescriptionRun03.slantDefined = false;
5036 fontDescriptionRun03.sizeDefined = false;
5038 FontDescriptionRun fontDescriptionRun04;
5039 fontDescriptionRun04.characterRun.characterIndex = 36u;
5040 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5041 fontDescriptionRun04.familyLength = fontLatin.size();
5042 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5043 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5044 fontDescriptionRun04.familyDefined = true;
5045 fontDescriptionRun04.weightDefined = false;
5046 fontDescriptionRun04.widthDefined = false;
5047 fontDescriptionRun04.slantDefined = false;
5048 fontDescriptionRun04.sizeDefined = false;
5050 FontDescriptionRun fontDescriptionRun05;
5051 fontDescriptionRun05.characterRun.characterIndex = 48u;
5052 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5053 fontDescriptionRun05.familyLength = fontLatin.size();
5054 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5055 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5056 fontDescriptionRun05.familyDefined = true;
5057 fontDescriptionRun05.weightDefined = false;
5058 fontDescriptionRun05.widthDefined = false;
5059 fontDescriptionRun05.slantDefined = false;
5060 fontDescriptionRun05.sizeDefined = false;
5062 FontDescriptionRun fontDescriptionRun06;
5063 fontDescriptionRun06.characterRun.characterIndex = 60u;
5064 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5065 fontDescriptionRun06.familyLength = fontArabic.size();
5066 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5067 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5068 fontDescriptionRun06.familyDefined = true;
5069 fontDescriptionRun06.weightDefined = false;
5070 fontDescriptionRun06.widthDefined = false;
5071 fontDescriptionRun06.slantDefined = false;
5072 fontDescriptionRun06.sizeDefined = false;
5074 Vector<FontDescriptionRun> fontDescriptionRuns;
5075 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5076 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5077 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5078 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5079 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5080 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5082 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5084 Size textArea( 100.f, 300.f );
5087 "End alignment for the last paragraph.",
5088 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5091 fontDescriptionRuns.Begin(),
5092 Layout::HORIZONTAL_ALIGN_END,
5093 Layout::VERTICAL_ALIGN_TOP,
5100 if( !AlignTest( data ) )
5102 tet_result(TET_FAIL);
5105 tet_result(TET_PASS);
5109 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5111 ToolkitTestApplication application;
5112 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5114 Layout::Engine engine;
5115 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5117 engine.SetDefaultLineSpacing( 10.f );
5118 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5120 tet_result(TET_PASS);