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-model.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 LayoutEngine::Layout 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 );
156 engine.SetMetrics( metrics );
157 engine.SetTextEllipsisEnabled( data.ellipsis );
158 engine.SetLayout( data.layout );
160 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
162 LayoutParameters layoutParameters( data.textArea,
163 logicalModel->mText.Begin(),
164 logicalModel->mLineBreakInfo.Begin(),
165 logicalModel->mWordBreakInfo.Begin(),
166 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
167 visualModel->mGlyphs.Begin(),
168 visualModel->mGlyphsToCharacters.Begin(),
169 visualModel->mCharactersPerGlyph.Begin(),
170 visualModel->mCharactersToGlyph.Begin(),
171 visualModel->mGlyphsPerCharacter.Begin(),
172 totalNumberOfGlyphs );
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,
189 // 4) Compare the results.
191 if( updated != data.updated )
193 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
197 if( layoutSize != data.layoutSize )
199 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
203 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
205 const Vector2& position = *( glyphPositions.Begin() + index );
207 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
209 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
212 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
214 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
219 if( lines.Count() != data.numberOfLines )
221 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
225 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
227 const LineRun& line = *( lines.Begin() + index );
228 const LineRun& expectedLine = *( data.lines + index );
230 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
232 std::cout << " Different line info for line : " << index << std::endl;
234 std::cout << " expected" << std::endl;
235 Print( expectedLine );
238 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
240 std::cout << " Different line info for line : " << index << std::endl;
242 std::cout << " expected" << std::endl;
243 Print( expectedLine );
247 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
249 std::cout << " Different line info for line : " << index << std::endl;
251 std::cout << " expected" << std::endl;
252 Print( expectedLine );
255 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
257 std::cout << " Different line info for line : " << index << std::endl;
259 std::cout << " expected" << std::endl;
260 Print( expectedLine );
264 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
266 std::cout << " Different line info for line : " << index << std::endl;
268 std::cout << " expected" << std::endl;
269 Print( expectedLine );
273 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
275 std::cout << " Different line info for line : " << index << std::endl;
277 std::cout << " expected" << std::endl;
278 Print( expectedLine );
282 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
284 std::cout << " Different line info for line : " << index << std::endl;
286 std::cout << " expected" << std::endl;
287 Print( expectedLine );
291 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
293 std::cout << " Different line info for line : " << index << std::endl;
295 std::cout << " expected" << std::endl;
296 Print( expectedLine );
300 if( line.ellipsis != expectedLine.ellipsis )
302 std::cout << " Different line info for line : " << index << std::endl;
304 std::cout << " expected" << std::endl;
305 Print( expectedLine );
309 // Do not compare the alignment offset as it's not calculated in the layout.
310 // Do not compare the line direction as it's not set in the layout.
316 //////////////////////////////////////////////////////////
318 struct ReLayoutRightToLeftLinesData
320 std::string description;
323 unsigned int numberOfFonts;
324 FontDescriptionRun* fontDescriptions;
325 unsigned int totalNumberOfGlyphs;
327 unsigned int startIndex;
328 unsigned int numberOfCharacters;
331 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
334 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
335 fontClient.SetDpi( 96u, 96u );
337 char* pathNamePtr = get_current_dir_name();
338 const std::string pathName( pathNamePtr );
341 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
342 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
343 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
345 // 1) Create the model.
346 LogicalModelPtr logicalModel;
347 VisualModelPtr visualModel;
351 Vector<FontDescriptionRun> fontDescriptionRuns;
352 if( 0u != data.numberOfFonts )
354 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
355 data.fontDescriptions,
356 data.fontDescriptions + data.numberOfFonts );
359 LayoutOptions options;
360 options.reorder = false;
361 options.align = false;
362 CreateTextModel( data.text,
371 // 2) Call the ReLayoutRightToLeftLines() method.
373 engine.SetMetrics( metrics );
375 LayoutParameters layoutParameters( data.textArea,
376 logicalModel->mText.Begin(),
377 logicalModel->mLineBreakInfo.Begin(),
378 logicalModel->mWordBreakInfo.Begin(),
379 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
380 visualModel->mGlyphs.Begin(),
381 visualModel->mGlyphsToCharacters.Begin(),
382 visualModel->mCharactersPerGlyph.Begin(),
383 visualModel->mCharactersToGlyph.Begin(),
384 visualModel->mGlyphsPerCharacter.Begin(),
385 visualModel->mGlyphs.Count() );
387 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
388 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
390 engine.ReLayoutRightToLeftLines( layoutParameters,
392 data.numberOfCharacters,
393 visualModel->mGlyphPositions );
395 // 3) Compare the results.
396 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
398 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
400 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
404 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
406 const Vector2& position = *( glyphPositions.Begin() + index );
408 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
410 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
413 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
415 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
423 //////////////////////////////////////////////////////////
427 std::string description;
430 unsigned int numberOfFonts;
431 FontDescriptionRun* fontDescriptions;
432 LayoutEngine::HorizontalAlignment horizontalAlignment;
433 LayoutEngine::VerticalAlignment verticalAlignment;
434 unsigned int startIndex;
435 unsigned int numberOfCharacters;
436 unsigned int numberOfLines;
440 bool AlignTest( const AlignData& data )
443 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
444 fontClient.SetDpi( 96u, 96u );
446 char* pathNamePtr = get_current_dir_name();
447 const std::string pathName( pathNamePtr );
450 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
451 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
452 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
454 // 1) Create the model.
455 LogicalModelPtr logicalModel;
456 VisualModelPtr visualModel;
460 Vector<FontDescriptionRun> fontDescriptionRuns;
461 if( 0u != data.numberOfFonts )
463 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
464 data.fontDescriptions,
465 data.fontDescriptions + data.numberOfFonts );
468 LayoutOptions options;
469 options.align = false;
470 CreateTextModel( data.text,
479 // Call the Align method.
481 engine.SetMetrics( metrics );
483 engine.SetHorizontalAlignment( data.horizontalAlignment );
484 engine.SetVerticalAlignment( data.verticalAlignment );
486 engine.Align( data.textArea,
488 data.numberOfCharacters,
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");
561 DALI_TEST_CHECK( LayoutEngine::SINGLE_LINE_BOX == engine.GetLayout() );
563 engine.SetLayout( LayoutEngine::MULTI_LINE_BOX );
564 DALI_TEST_CHECK( LayoutEngine::MULTI_LINE_BOX == engine.GetLayout() );
566 tet_result(TET_PASS);
570 int UtcDaliTextLayoutSetGetTextEllipsisEnabled(void)
572 ToolkitTestApplication application;
573 tet_infoline(" UtcDaliTextLayoutSetGetTextEllipsisEnabled");
577 DALI_TEST_CHECK( !engine.GetTextEllipsisEnabled() );
579 engine.SetTextEllipsisEnabled( true );
580 DALI_TEST_CHECK( engine.GetTextEllipsisEnabled() );
582 tet_result(TET_PASS);
586 int UtcDaliTextLayoutSetGetHorizontalAlignment(void)
588 ToolkitTestApplication application;
593 DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_BEGIN == engine.GetHorizontalAlignment() );
595 engine.SetHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_END );
596 DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_END == engine.GetHorizontalAlignment() );
598 tet_result(TET_PASS);
602 int UtcDaliTextLayoutSetGetVerticalAlignment(void)
604 ToolkitTestApplication application;
605 tet_infoline(" UtcDaliTextLayoutSetGetVerticalAlignment");
609 DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
611 engine.SetVerticalAlignment( LayoutEngine::VERTICAL_ALIGN_TOP );
612 DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
615 tet_result(TET_PASS);
619 int UtcDaliTextLayoutSetGetCursorWidth(void)
621 ToolkitTestApplication application;
626 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
628 engine.SetCursorWidth( 2 );
629 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
631 tet_result(TET_PASS);
635 int UtcDaliTextLayoutNoText(void)
637 ToolkitTestApplication application;
638 tet_infoline(" UtcDaliTextLayoutNoText");
640 Size textArea(100.f, 60.f);
641 Size layoutSize = Vector2::ZERO;
642 LayoutTextData data =
654 LayoutEngine::MULTI_LINE_BOX,
661 if( !LayoutTextTest( data ) )
663 tet_result(TET_FAIL);
666 tet_result(TET_PASS);
670 int UtcDaliTextLayoutSmallTextArea01(void)
672 ToolkitTestApplication application;
673 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
675 // Won't layout the text in multi-line if the width is too small.
677 const std::string fontFamily( "TizenSans" );
679 // Set a known font description
680 FontDescriptionRun fontDescriptionRun;
681 fontDescriptionRun.characterRun.characterIndex = 0u;
682 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
683 fontDescriptionRun.familyLength = fontFamily.size();
684 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
685 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
686 fontDescriptionRun.familyDefined = true;
687 fontDescriptionRun.weightDefined = false;
688 fontDescriptionRun.widthDefined = false;
689 fontDescriptionRun.slantDefined = false;
690 fontDescriptionRun.sizeDefined = false;
692 Vector<FontDescriptionRun> fontDescriptionRuns;
693 fontDescriptionRuns.PushBack( fontDescriptionRun );
694 Size textArea(1.f, 1.f);
695 Size layoutSize = Vector2::ZERO;
696 LayoutTextData data =
698 "Layout text in a small area",
702 fontDescriptionRuns.Begin(),
708 LayoutEngine::MULTI_LINE_BOX,
715 if( !LayoutTextTest( data ) )
717 tet_result(TET_FAIL);
720 tet_result(TET_PASS);
724 int UtcDaliTextLayoutSmallTextArea02(void)
726 ToolkitTestApplication application;
727 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
729 // Will layout the text in single line as it can be scrolled.
731 const std::string fontFamily( "TizenSans" );
733 // Set a known font description
734 FontDescriptionRun fontDescriptionRun;
735 fontDescriptionRun.characterRun.characterIndex = 0u;
736 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
737 fontDescriptionRun.familyLength = fontFamily.size();
738 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
739 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
740 fontDescriptionRun.familyDefined = true;
741 fontDescriptionRun.weightDefined = false;
742 fontDescriptionRun.widthDefined = false;
743 fontDescriptionRun.slantDefined = false;
744 fontDescriptionRun.sizeDefined = false;
746 Vector<FontDescriptionRun> fontDescriptionRuns;
747 fontDescriptionRuns.PushBack( fontDescriptionRun );
748 Size textArea(1.f, 1.f);
749 Size layoutSize(80.f, 20.f);
750 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 };
751 struct LineRun line =
763 Vector<LineRun> lines;
764 lines.PushBack( line );
766 LayoutTextData data =
768 "Layout text in a small area",
772 fontDescriptionRuns.Begin(),
778 LayoutEngine::SINGLE_LINE_BOX,
785 if( !LayoutTextTest( data ) )
787 tet_result(TET_FAIL);
790 tet_result(TET_PASS);
794 int UtcDaliTextLayoutMultilineText01(void)
796 ToolkitTestApplication application;
797 tet_infoline(" UtcDaliTextLayoutMultilineText01");
799 // Layout some lines of left to right text.
801 const std::string fontFamily( "TizenSans" );
803 // Set a known font description
804 FontDescriptionRun fontDescriptionRun1;
805 fontDescriptionRun1.characterRun.characterIndex = 0u;
806 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
807 fontDescriptionRun1.familyLength = fontFamily.size();
808 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
809 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
810 fontDescriptionRun1.familyDefined = true;
811 fontDescriptionRun1.weightDefined = false;
812 fontDescriptionRun1.widthDefined = false;
813 fontDescriptionRun1.slantDefined = false;
814 fontDescriptionRun1.sizeDefined = false;
816 FontDescriptionRun fontDescriptionRun2;
817 fontDescriptionRun2.characterRun.characterIndex = 18u;
818 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
819 fontDescriptionRun2.familyLength = fontFamily.size();
820 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
821 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
822 fontDescriptionRun2.familyDefined = true;
823 fontDescriptionRun2.weightDefined = false;
824 fontDescriptionRun2.widthDefined = false;
825 fontDescriptionRun2.slantDefined = false;
826 fontDescriptionRun2.sizeDefined = false;
828 Vector<FontDescriptionRun> fontDescriptionRuns;
829 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
830 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
831 Size textArea(100.f, 300.f);
832 Size layoutSize(95.f, 97.f);
835 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,
836 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
837 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,
838 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,
839 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
841 struct LineRun line0 =
853 struct LineRun line1 =
865 struct LineRun line2 =
877 struct LineRun line3 =
889 struct LineRun line4 =
901 Vector<LineRun> lines;
902 lines.PushBack( line0 );
903 lines.PushBack( line1 );
904 lines.PushBack( line2 );
905 lines.PushBack( line3 );
906 lines.PushBack( line4 );
908 LayoutTextData data =
910 "Layout simple multi-line text",
911 "Hello world demo.\n"
912 "Layout different lines of text.",
915 fontDescriptionRuns.Begin(),
921 LayoutEngine::MULTI_LINE_BOX,
928 if( !LayoutTextTest( data ) )
930 tet_result(TET_FAIL);
933 tet_result(TET_PASS);
937 int UtcDaliTextLayoutMultilineText02(void)
939 ToolkitTestApplication application;
940 tet_infoline(" UtcDaliTextLayoutMultilineText02");
942 // Layout some lines of bidirectional text.
944 const std::string fontFamily1( "TizenSans" );
946 // Set a known font description
947 FontDescriptionRun fontDescriptionRun1;
948 fontDescriptionRun1.characterRun.characterIndex = 0u;
949 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
950 fontDescriptionRun1.familyLength = fontFamily1.size();
951 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
952 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
953 fontDescriptionRun1.familyDefined = true;
954 fontDescriptionRun1.weightDefined = false;
955 fontDescriptionRun1.widthDefined = false;
956 fontDescriptionRun1.slantDefined = false;
957 fontDescriptionRun1.sizeDefined = false;
959 const std::string fontFamily2( "TizenSansHebrew" );
961 // Set a known font description
962 FontDescriptionRun fontDescriptionRun2;
963 fontDescriptionRun2.characterRun.characterIndex = 17u;
964 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
965 fontDescriptionRun2.familyLength = fontFamily2.size();
966 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
967 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
968 fontDescriptionRun2.familyDefined = true;
969 fontDescriptionRun2.weightDefined = false;
970 fontDescriptionRun2.widthDefined = false;
971 fontDescriptionRun2.slantDefined = false;
972 fontDescriptionRun2.sizeDefined = false;
974 const std::string fontFamily3( "TizenSans" );
976 // Set a known font description
977 FontDescriptionRun fontDescriptionRun3;
978 fontDescriptionRun3.characterRun.characterIndex = 26u;
979 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
980 fontDescriptionRun3.familyLength = fontFamily3.size();
981 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
982 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
983 fontDescriptionRun3.familyDefined = true;
984 fontDescriptionRun3.weightDefined = false;
985 fontDescriptionRun3.widthDefined = false;
986 fontDescriptionRun3.slantDefined = false;
987 fontDescriptionRun3.sizeDefined = false;
989 const std::string fontFamily4( "TizenSansHebrew" );
991 // Set a known font description
992 FontDescriptionRun fontDescriptionRun4;
993 fontDescriptionRun4.characterRun.characterIndex = 28u;
994 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
995 fontDescriptionRun4.familyLength = fontFamily4.size();
996 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
997 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
998 fontDescriptionRun4.familyDefined = true;
999 fontDescriptionRun4.weightDefined = false;
1000 fontDescriptionRun4.widthDefined = false;
1001 fontDescriptionRun4.slantDefined = false;
1002 fontDescriptionRun4.sizeDefined = false;
1004 const std::string fontFamily5( "TizenSans" );
1006 // Set a known font description
1007 FontDescriptionRun fontDescriptionRun5;
1008 fontDescriptionRun5.characterRun.characterIndex = 38u;
1009 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
1010 fontDescriptionRun5.familyLength = fontFamily5.size();
1011 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
1012 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
1013 fontDescriptionRun5.familyDefined = true;
1014 fontDescriptionRun5.weightDefined = false;
1015 fontDescriptionRun5.widthDefined = false;
1016 fontDescriptionRun5.slantDefined = false;
1017 fontDescriptionRun5.sizeDefined = false;
1019 Vector<FontDescriptionRun> fontDescriptionRuns;
1020 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1021 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1022 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1023 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
1024 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
1025 Size textArea(100.f, 300.f);
1026 Size layoutSize(81.f, 120.f);
1029 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,
1030 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,
1031 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1032 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,
1033 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,
1034 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1036 struct LineRun line0 =
1048 struct LineRun line1 =
1060 struct LineRun line2 =
1072 struct LineRun line3 =
1084 struct LineRun line4 =
1096 struct LineRun line5 =
1108 Vector<LineRun> lines;
1109 lines.PushBack( line0 );
1110 lines.PushBack( line1 );
1111 lines.PushBack( line2 );
1112 lines.PushBack( line3 );
1113 lines.PushBack( line4 );
1114 lines.PushBack( line5 );
1116 LayoutTextData data =
1118 "Layout bidirectional text.",
1119 "Hello world demo שלום עולם.\n"
1120 "שלום עולם hello world demo.",
1123 fontDescriptionRuns.Begin(),
1129 LayoutEngine::MULTI_LINE_BOX,
1136 if( !LayoutTextTest( data ) )
1138 tet_result(TET_FAIL);
1141 tet_result(TET_PASS);
1145 int UtcDaliTextLayoutMultilineText03(void)
1147 ToolkitTestApplication application;
1148 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1150 // Layout a long word which doesn't fit in the width of the text area.
1152 const std::string fontFamily( "TizenSans" );
1154 // Set a known font description
1155 FontDescriptionRun fontDescriptionRun;
1156 fontDescriptionRun.characterRun.characterIndex = 0u;
1157 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1158 fontDescriptionRun.familyLength = fontFamily.size();
1159 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1160 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1161 fontDescriptionRun.familyDefined = true;
1162 fontDescriptionRun.weightDefined = false;
1163 fontDescriptionRun.widthDefined = false;
1164 fontDescriptionRun.slantDefined = false;
1165 fontDescriptionRun.sizeDefined = false;
1167 Vector<FontDescriptionRun> fontDescriptionRuns;
1168 fontDescriptionRuns.PushBack( fontDescriptionRun );
1169 Size textArea(100.f, 300.f);
1170 Size layoutSize(96.f, 60.f);
1173 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,
1174 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,
1175 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1177 struct LineRun line0 =
1189 struct LineRun line1 =
1201 struct LineRun line2 =
1213 Vector<LineRun> lines;
1214 lines.PushBack( line0 );
1215 lines.PushBack( line1 );
1216 lines.PushBack( line2 );
1218 LayoutTextData data =
1220 "Layout a long word which doesn't fit in the width of the text area.",
1221 "Helloworlddemohelloworlddemo.",
1224 fontDescriptionRuns.Begin(),
1230 LayoutEngine::MULTI_LINE_BOX,
1237 if( !LayoutTextTest( data ) )
1239 tet_result(TET_FAIL);
1242 tet_result(TET_PASS);
1246 int UtcDaliTextLayoutMultilineText04(void)
1248 ToolkitTestApplication application;
1249 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1251 // Layout simple text ending with a \n. It has to add a void line at the end.
1253 const std::string fontFamily( "TizenSans" );
1255 // Set a known font description
1256 FontDescriptionRun fontDescriptionRun;
1257 fontDescriptionRun.characterRun.characterIndex = 0u;
1258 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1259 fontDescriptionRun.familyLength = fontFamily.size();
1260 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1261 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1262 fontDescriptionRun.familyDefined = true;
1263 fontDescriptionRun.weightDefined = false;
1264 fontDescriptionRun.widthDefined = false;
1265 fontDescriptionRun.slantDefined = false;
1266 fontDescriptionRun.sizeDefined = false;
1268 Vector<FontDescriptionRun> fontDescriptionRuns;
1269 fontDescriptionRuns.PushBack( fontDescriptionRun );
1270 Size textArea(100.f, 300.f);
1271 Size layoutSize(83.f, 40.f);
1274 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
1276 struct LineRun line0 =
1288 struct LineRun line1 =
1300 Vector<LineRun> lines;
1301 lines.PushBack( line0 );
1302 lines.PushBack( line1 );
1304 LayoutTextData data =
1306 "Layout simple text ending with a \n.",
1310 fontDescriptionRuns.Begin(),
1316 LayoutEngine::MULTI_LINE_BOX,
1323 if( !LayoutTextTest( data ) )
1325 tet_result(TET_FAIL);
1328 tet_result(TET_PASS);
1332 int UtcDaliTextLayoutMultilineText05(void)
1334 ToolkitTestApplication application;
1335 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1337 // Layout simple text with one character with a different font size.
1339 const std::string fontFamily( "TizenSans" );
1341 // Set a known font description
1342 FontDescriptionRun fontDescriptionRun1;
1343 fontDescriptionRun1.characterRun.characterIndex = 0u;
1344 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1345 fontDescriptionRun1.familyLength = fontFamily.size();
1346 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1347 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1348 fontDescriptionRun1.familyDefined = true;
1349 fontDescriptionRun1.weightDefined = false;
1350 fontDescriptionRun1.widthDefined = false;
1351 fontDescriptionRun1.slantDefined = false;
1352 fontDescriptionRun1.sizeDefined = false;
1354 FontDescriptionRun fontDescriptionRun2;
1355 fontDescriptionRun2.characterRun.characterIndex = 6u;
1356 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1357 fontDescriptionRun2.familyLength = fontFamily.size();
1358 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1359 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1360 fontDescriptionRun2.size = 1280u;
1361 fontDescriptionRun2.familyDefined = true;
1362 fontDescriptionRun2.weightDefined = false;
1363 fontDescriptionRun2.widthDefined = false;
1364 fontDescriptionRun2.slantDefined = false;
1365 fontDescriptionRun2.sizeDefined = true;
1367 FontDescriptionRun fontDescriptionRun3;
1368 fontDescriptionRun3.characterRun.characterIndex = 7u;
1369 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1370 fontDescriptionRun3.familyLength = fontFamily.size();
1371 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1372 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1373 fontDescriptionRun3.familyDefined = true;
1374 fontDescriptionRun3.weightDefined = false;
1375 fontDescriptionRun3.widthDefined = false;
1376 fontDescriptionRun3.slantDefined = false;
1377 fontDescriptionRun3.sizeDefined = false;
1379 Vector<FontDescriptionRun> fontDescriptionRuns;
1380 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1381 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1382 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1383 Size textArea(100.f, 300.f);
1384 Size layoutSize(88.f, 53.f);
1387 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,
1388 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f
1390 struct LineRun line0 =
1402 struct LineRun line1 =
1414 Vector<LineRun> lines;
1415 lines.PushBack( line0 );
1416 lines.PushBack( line1 );
1418 LayoutTextData data =
1420 "Layout simple text with one character with a different font size.",
1421 "Hello world demo.",
1424 fontDescriptionRuns.Begin(),
1430 LayoutEngine::MULTI_LINE_BOX,
1437 if( !LayoutTextTest( data ) )
1439 tet_result(TET_FAIL);
1442 tet_result(TET_PASS);
1446 int UtcDaliTextUpdateLayout01(void)
1448 ToolkitTestApplication application;
1449 tet_infoline(" UtcDaliTextUpdateLayout01");
1451 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1453 const std::string fontLatin( "TizenSans" );
1454 const std::string fontHebrew( "TizenSansHebrew" );
1455 const std::string fontArabic( "TizenSansArabic" );
1457 // Set a known font description
1458 FontDescriptionRun fontDescriptionRun01;
1459 fontDescriptionRun01.characterRun.characterIndex = 0u;
1460 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1461 fontDescriptionRun01.familyLength = fontLatin.size();
1462 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1463 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1464 fontDescriptionRun01.familyDefined = true;
1465 fontDescriptionRun01.weightDefined = false;
1466 fontDescriptionRun01.widthDefined = false;
1467 fontDescriptionRun01.slantDefined = false;
1468 fontDescriptionRun01.sizeDefined = false;
1470 // Set a known font description
1471 FontDescriptionRun fontDescriptionRun02;
1472 fontDescriptionRun02.characterRun.characterIndex = 17u;
1473 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1474 fontDescriptionRun02.familyLength = fontHebrew.size();
1475 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1476 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1477 fontDescriptionRun02.familyDefined = true;
1478 fontDescriptionRun02.weightDefined = false;
1479 fontDescriptionRun02.widthDefined = false;
1480 fontDescriptionRun02.slantDefined = false;
1481 fontDescriptionRun02.sizeDefined = false;
1483 // Set a known font description
1484 FontDescriptionRun fontDescriptionRun03;
1485 fontDescriptionRun03.characterRun.characterIndex = 26u;
1486 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1487 fontDescriptionRun03.familyLength = fontLatin.size();
1488 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1489 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1490 fontDescriptionRun03.familyDefined = true;
1491 fontDescriptionRun03.weightDefined = false;
1492 fontDescriptionRun03.widthDefined = false;
1493 fontDescriptionRun03.slantDefined = false;
1494 fontDescriptionRun03.sizeDefined = false;
1496 // Set a known font description
1497 FontDescriptionRun fontDescriptionRun04;
1498 fontDescriptionRun04.characterRun.characterIndex = 28u;
1499 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1500 fontDescriptionRun04.familyLength = fontArabic.size();
1501 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1502 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1503 fontDescriptionRun04.familyDefined = true;
1504 fontDescriptionRun04.weightDefined = false;
1505 fontDescriptionRun04.widthDefined = false;
1506 fontDescriptionRun04.slantDefined = false;
1507 fontDescriptionRun04.sizeDefined = false;
1509 // Set a known font description
1510 FontDescriptionRun fontDescriptionRun05;
1511 fontDescriptionRun05.characterRun.characterIndex = 42u;
1512 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1513 fontDescriptionRun05.familyLength = fontLatin.size();
1514 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1515 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1516 fontDescriptionRun05.familyDefined = true;
1517 fontDescriptionRun05.weightDefined = false;
1518 fontDescriptionRun05.widthDefined = false;
1519 fontDescriptionRun05.slantDefined = false;
1520 fontDescriptionRun05.sizeDefined = false;
1522 // Set a known font description
1523 FontDescriptionRun fontDescriptionRun06;
1524 fontDescriptionRun06.characterRun.characterIndex = 54u;
1525 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1526 fontDescriptionRun06.familyLength = fontHebrew.size();
1527 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1528 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1529 fontDescriptionRun06.familyDefined = true;
1530 fontDescriptionRun06.weightDefined = false;
1531 fontDescriptionRun06.widthDefined = false;
1532 fontDescriptionRun06.slantDefined = false;
1533 fontDescriptionRun06.sizeDefined = false;
1535 // Set a known font description
1536 FontDescriptionRun fontDescriptionRun07;
1537 fontDescriptionRun07.characterRun.characterIndex = 64u;
1538 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1539 fontDescriptionRun07.familyLength = fontHebrew.size();
1540 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1541 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1542 fontDescriptionRun07.familyDefined = true;
1543 fontDescriptionRun07.weightDefined = false;
1544 fontDescriptionRun07.widthDefined = false;
1545 fontDescriptionRun07.slantDefined = false;
1546 fontDescriptionRun07.sizeDefined = false;
1548 // Set a known font description
1549 FontDescriptionRun fontDescriptionRun08;
1550 fontDescriptionRun08.characterRun.characterIndex = 74u;
1551 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1552 fontDescriptionRun08.familyLength = fontLatin.size();
1553 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1554 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1555 fontDescriptionRun08.familyDefined = true;
1556 fontDescriptionRun08.weightDefined = false;
1557 fontDescriptionRun08.widthDefined = false;
1558 fontDescriptionRun08.slantDefined = false;
1559 fontDescriptionRun08.sizeDefined = false;
1561 // Set a known font description
1562 FontDescriptionRun fontDescriptionRun09;
1563 fontDescriptionRun09.characterRun.characterIndex = 92u;
1564 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1565 fontDescriptionRun09.familyLength = fontLatin.size();
1566 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1567 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1568 fontDescriptionRun09.familyDefined = true;
1569 fontDescriptionRun09.weightDefined = false;
1570 fontDescriptionRun09.widthDefined = false;
1571 fontDescriptionRun09.slantDefined = false;
1572 fontDescriptionRun09.sizeDefined = false;
1574 // Set a known font description
1575 FontDescriptionRun fontDescriptionRun10;
1576 fontDescriptionRun10.characterRun.characterIndex = 104u;
1577 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1578 fontDescriptionRun10.familyLength = fontArabic.size();
1579 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1580 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1581 fontDescriptionRun10.familyDefined = true;
1582 fontDescriptionRun10.weightDefined = false;
1583 fontDescriptionRun10.widthDefined = false;
1584 fontDescriptionRun10.slantDefined = false;
1585 fontDescriptionRun10.sizeDefined = false;
1587 // Set a known font description
1588 FontDescriptionRun fontDescriptionRun11;
1589 fontDescriptionRun11.characterRun.characterIndex = 118u;
1590 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1591 fontDescriptionRun11.familyLength = fontHebrew.size();
1592 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1593 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1594 fontDescriptionRun11.familyDefined = true;
1595 fontDescriptionRun11.weightDefined = false;
1596 fontDescriptionRun11.widthDefined = false;
1597 fontDescriptionRun11.slantDefined = false;
1598 fontDescriptionRun11.sizeDefined = false;
1600 // Set a known font description
1601 FontDescriptionRun fontDescriptionRun12;
1602 fontDescriptionRun12.characterRun.characterIndex = 128u;
1603 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1604 fontDescriptionRun12.familyLength = fontLatin.size();
1605 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1606 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1607 fontDescriptionRun12.familyDefined = true;
1608 fontDescriptionRun12.weightDefined = false;
1609 fontDescriptionRun12.widthDefined = false;
1610 fontDescriptionRun12.slantDefined = false;
1611 fontDescriptionRun12.sizeDefined = false;
1613 // Set a known font description
1614 FontDescriptionRun fontDescriptionRun13;
1615 fontDescriptionRun13.characterRun.characterIndex = 145u;
1616 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1617 fontDescriptionRun13.familyLength = fontHebrew.size();
1618 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1619 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1620 fontDescriptionRun13.familyDefined = true;
1621 fontDescriptionRun13.weightDefined = false;
1622 fontDescriptionRun13.widthDefined = false;
1623 fontDescriptionRun13.slantDefined = false;
1624 fontDescriptionRun13.sizeDefined = false;
1626 // Set a known font description
1627 FontDescriptionRun fontDescriptionRun14;
1628 fontDescriptionRun14.characterRun.characterIndex = 154u;
1629 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1630 fontDescriptionRun14.familyLength = fontLatin.size();
1631 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1632 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1633 fontDescriptionRun14.familyDefined = true;
1634 fontDescriptionRun14.weightDefined = false;
1635 fontDescriptionRun14.widthDefined = false;
1636 fontDescriptionRun14.slantDefined = false;
1637 fontDescriptionRun14.sizeDefined = false;
1639 // Set a known font description
1640 FontDescriptionRun fontDescriptionRun15;
1641 fontDescriptionRun15.characterRun.characterIndex = 156u;
1642 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1643 fontDescriptionRun15.familyLength = fontHebrew.size();
1644 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1645 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1646 fontDescriptionRun15.familyDefined = true;
1647 fontDescriptionRun15.weightDefined = false;
1648 fontDescriptionRun15.widthDefined = false;
1649 fontDescriptionRun15.slantDefined = false;
1650 fontDescriptionRun15.sizeDefined = false;
1652 // Set a known font description
1653 FontDescriptionRun fontDescriptionRun16;
1654 fontDescriptionRun16.characterRun.characterIndex = 166u;
1655 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1656 fontDescriptionRun16.familyLength = fontLatin.size();
1657 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1658 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1659 fontDescriptionRun16.familyDefined = true;
1660 fontDescriptionRun16.weightDefined = false;
1661 fontDescriptionRun16.widthDefined = false;
1662 fontDescriptionRun16.slantDefined = false;
1663 fontDescriptionRun16.sizeDefined = false;
1665 // Set a known font description
1666 FontDescriptionRun fontDescriptionRun17;
1667 fontDescriptionRun17.characterRun.characterIndex = 178u;
1668 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1669 fontDescriptionRun17.familyLength = fontArabic.size();
1670 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1671 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1672 fontDescriptionRun17.familyDefined = true;
1673 fontDescriptionRun17.weightDefined = false;
1674 fontDescriptionRun17.widthDefined = false;
1675 fontDescriptionRun17.slantDefined = false;
1676 fontDescriptionRun17.sizeDefined = false;
1678 Vector<FontDescriptionRun> fontDescriptionRuns;
1679 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1680 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1681 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1682 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1683 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1684 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1685 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1686 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1687 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1688 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1689 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1690 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1691 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1692 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1693 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1694 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1695 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1696 Size textArea(100.f, 300.f);
1697 Size layoutSize(92.f, 380.f);
1700 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,
1701 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,
1702 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1703 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,
1704 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,
1705 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1706 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,
1707 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,
1708 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
1709 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,
1710 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,
1711 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1712 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,
1713 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,
1714 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1715 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,
1716 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,
1717 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,
1720 struct LineRun line01 =
1732 struct LineRun line02 =
1744 struct LineRun line03 =
1756 struct LineRun line04 =
1768 struct LineRun line05 =
1780 struct LineRun line06 =
1792 struct LineRun line07 =
1804 struct LineRun line08 =
1816 struct LineRun line09 =
1828 struct LineRun line10 =
1840 struct LineRun line11 =
1852 struct LineRun line12 =
1864 struct LineRun line13 =
1876 struct LineRun line14 =
1888 struct LineRun line15 =
1900 struct LineRun line16 =
1912 struct LineRun line17 =
1924 struct LineRun line18 =
1936 struct LineRun line19 =
1948 Vector<LineRun> lines;
1949 lines.PushBack( line01 );
1950 lines.PushBack( line02 );
1951 lines.PushBack( line03 );
1952 lines.PushBack( line04 );
1953 lines.PushBack( line05 );
1954 lines.PushBack( line06 );
1955 lines.PushBack( line07 );
1956 lines.PushBack( line08 );
1957 lines.PushBack( line09 );
1958 lines.PushBack( line10 );
1959 lines.PushBack( line11 );
1960 lines.PushBack( line12 );
1961 lines.PushBack( line13 );
1962 lines.PushBack( line14 );
1963 lines.PushBack( line15 );
1964 lines.PushBack( line16 );
1965 lines.PushBack( line17 );
1966 lines.PushBack( line18 );
1967 lines.PushBack( line19 );
1969 LayoutTextData data =
1971 "Layout bidirectional text.",
1972 "Hello world demo שלום עולם.\n"
1973 "مرحبا بالعالم hello world שלום עולם\n"
1974 "שלום עולם hello world demo.\n"
1975 "hello world مرحبا بالعالم שלום עולם\n"
1976 "Hello world demo שלום עולם.\n"
1977 "שלום עולם hello world مرحبا بالعالم\n",
1980 fontDescriptionRuns.Begin(),
1986 LayoutEngine::MULTI_LINE_BOX,
1993 if( !LayoutTextTest( data ) )
1995 tet_result(TET_FAIL);
1998 tet_result(TET_PASS);
2002 int UtcDaliTextUpdateLayout02(void)
2004 ToolkitTestApplication application;
2005 tet_infoline(" UtcDaliTextUpdateLayout02");
2007 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2009 const std::string fontLatin( "TizenSans" );
2010 const std::string fontHebrew( "TizenSansHebrew" );
2011 const std::string fontArabic( "TizenSansArabic" );
2013 // Set a known font description
2014 FontDescriptionRun fontDescriptionRun01;
2015 fontDescriptionRun01.characterRun.characterIndex = 0u;
2016 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2017 fontDescriptionRun01.familyLength = fontLatin.size();
2018 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2019 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2020 fontDescriptionRun01.familyDefined = true;
2021 fontDescriptionRun01.weightDefined = false;
2022 fontDescriptionRun01.widthDefined = false;
2023 fontDescriptionRun01.slantDefined = false;
2024 fontDescriptionRun01.sizeDefined = false;
2026 // Set a known font description
2027 FontDescriptionRun fontDescriptionRun02;
2028 fontDescriptionRun02.characterRun.characterIndex = 17u;
2029 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2030 fontDescriptionRun02.familyLength = fontHebrew.size();
2031 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2032 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2033 fontDescriptionRun02.familyDefined = true;
2034 fontDescriptionRun02.weightDefined = false;
2035 fontDescriptionRun02.widthDefined = false;
2036 fontDescriptionRun02.slantDefined = false;
2037 fontDescriptionRun02.sizeDefined = false;
2039 // Set a known font description
2040 FontDescriptionRun fontDescriptionRun03;
2041 fontDescriptionRun03.characterRun.characterIndex = 26u;
2042 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2043 fontDescriptionRun03.familyLength = fontLatin.size();
2044 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2045 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2046 fontDescriptionRun03.familyDefined = true;
2047 fontDescriptionRun03.weightDefined = false;
2048 fontDescriptionRun03.widthDefined = false;
2049 fontDescriptionRun03.slantDefined = false;
2050 fontDescriptionRun03.sizeDefined = false;
2052 // Set a known font description
2053 FontDescriptionRun fontDescriptionRun04;
2054 fontDescriptionRun04.characterRun.characterIndex = 28u;
2055 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2056 fontDescriptionRun04.familyLength = fontArabic.size();
2057 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2058 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2059 fontDescriptionRun04.familyDefined = true;
2060 fontDescriptionRun04.weightDefined = false;
2061 fontDescriptionRun04.widthDefined = false;
2062 fontDescriptionRun04.slantDefined = false;
2063 fontDescriptionRun04.sizeDefined = false;
2065 // Set a known font description
2066 FontDescriptionRun fontDescriptionRun05;
2067 fontDescriptionRun05.characterRun.characterIndex = 42u;
2068 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2069 fontDescriptionRun05.familyLength = fontLatin.size();
2070 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2071 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2072 fontDescriptionRun05.familyDefined = true;
2073 fontDescriptionRun05.weightDefined = false;
2074 fontDescriptionRun05.widthDefined = false;
2075 fontDescriptionRun05.slantDefined = false;
2076 fontDescriptionRun05.sizeDefined = false;
2078 // Set a known font description
2079 FontDescriptionRun fontDescriptionRun06;
2080 fontDescriptionRun06.characterRun.characterIndex = 54u;
2081 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2082 fontDescriptionRun06.familyLength = fontHebrew.size();
2083 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2084 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2085 fontDescriptionRun06.familyDefined = true;
2086 fontDescriptionRun06.weightDefined = false;
2087 fontDescriptionRun06.widthDefined = false;
2088 fontDescriptionRun06.slantDefined = false;
2089 fontDescriptionRun06.sizeDefined = false;
2091 // Set a known font description
2092 FontDescriptionRun fontDescriptionRun07;
2093 fontDescriptionRun07.characterRun.characterIndex = 64u;
2094 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2095 fontDescriptionRun07.familyLength = fontHebrew.size();
2096 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2097 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2098 fontDescriptionRun07.familyDefined = true;
2099 fontDescriptionRun07.weightDefined = false;
2100 fontDescriptionRun07.widthDefined = false;
2101 fontDescriptionRun07.slantDefined = false;
2102 fontDescriptionRun07.sizeDefined = false;
2104 // Set a known font description
2105 FontDescriptionRun fontDescriptionRun08;
2106 fontDescriptionRun08.characterRun.characterIndex = 74u;
2107 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2108 fontDescriptionRun08.familyLength = fontLatin.size();
2109 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2110 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2111 fontDescriptionRun08.familyDefined = true;
2112 fontDescriptionRun08.weightDefined = false;
2113 fontDescriptionRun08.widthDefined = false;
2114 fontDescriptionRun08.slantDefined = false;
2115 fontDescriptionRun08.sizeDefined = false;
2117 // Set a known font description
2118 FontDescriptionRun fontDescriptionRun09;
2119 fontDescriptionRun09.characterRun.characterIndex = 92u;
2120 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2121 fontDescriptionRun09.familyLength = fontLatin.size();
2122 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2123 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2124 fontDescriptionRun09.familyDefined = true;
2125 fontDescriptionRun09.weightDefined = false;
2126 fontDescriptionRun09.widthDefined = false;
2127 fontDescriptionRun09.slantDefined = false;
2128 fontDescriptionRun09.sizeDefined = false;
2130 // Set a known font description
2131 FontDescriptionRun fontDescriptionRun10;
2132 fontDescriptionRun10.characterRun.characterIndex = 104u;
2133 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2134 fontDescriptionRun10.familyLength = fontArabic.size();
2135 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2136 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2137 fontDescriptionRun10.familyDefined = true;
2138 fontDescriptionRun10.weightDefined = false;
2139 fontDescriptionRun10.widthDefined = false;
2140 fontDescriptionRun10.slantDefined = false;
2141 fontDescriptionRun10.sizeDefined = false;
2143 // Set a known font description
2144 FontDescriptionRun fontDescriptionRun11;
2145 fontDescriptionRun11.characterRun.characterIndex = 118u;
2146 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2147 fontDescriptionRun11.familyLength = fontHebrew.size();
2148 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2149 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2150 fontDescriptionRun11.familyDefined = true;
2151 fontDescriptionRun11.weightDefined = false;
2152 fontDescriptionRun11.widthDefined = false;
2153 fontDescriptionRun11.slantDefined = false;
2154 fontDescriptionRun11.sizeDefined = false;
2156 // Set a known font description
2157 FontDescriptionRun fontDescriptionRun12;
2158 fontDescriptionRun12.characterRun.characterIndex = 128u;
2159 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2160 fontDescriptionRun12.familyLength = fontLatin.size();
2161 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2162 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2163 fontDescriptionRun12.familyDefined = true;
2164 fontDescriptionRun12.weightDefined = false;
2165 fontDescriptionRun12.widthDefined = false;
2166 fontDescriptionRun12.slantDefined = false;
2167 fontDescriptionRun12.sizeDefined = false;
2169 // Set a known font description
2170 FontDescriptionRun fontDescriptionRun13;
2171 fontDescriptionRun13.characterRun.characterIndex = 145u;
2172 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2173 fontDescriptionRun13.familyLength = fontHebrew.size();
2174 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2175 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2176 fontDescriptionRun13.familyDefined = true;
2177 fontDescriptionRun13.weightDefined = false;
2178 fontDescriptionRun13.widthDefined = false;
2179 fontDescriptionRun13.slantDefined = false;
2180 fontDescriptionRun13.sizeDefined = false;
2182 // Set a known font description
2183 FontDescriptionRun fontDescriptionRun14;
2184 fontDescriptionRun14.characterRun.characterIndex = 154u;
2185 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2186 fontDescriptionRun14.familyLength = fontLatin.size();
2187 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2188 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2189 fontDescriptionRun14.familyDefined = true;
2190 fontDescriptionRun14.weightDefined = false;
2191 fontDescriptionRun14.widthDefined = false;
2192 fontDescriptionRun14.slantDefined = false;
2193 fontDescriptionRun14.sizeDefined = false;
2195 // Set a known font description
2196 FontDescriptionRun fontDescriptionRun15;
2197 fontDescriptionRun15.characterRun.characterIndex = 156u;
2198 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2199 fontDescriptionRun15.familyLength = fontHebrew.size();
2200 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2201 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2202 fontDescriptionRun15.familyDefined = true;
2203 fontDescriptionRun15.weightDefined = false;
2204 fontDescriptionRun15.widthDefined = false;
2205 fontDescriptionRun15.slantDefined = false;
2206 fontDescriptionRun15.sizeDefined = false;
2208 // Set a known font description
2209 FontDescriptionRun fontDescriptionRun16;
2210 fontDescriptionRun16.characterRun.characterIndex = 166u;
2211 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2212 fontDescriptionRun16.familyLength = fontLatin.size();
2213 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2214 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2215 fontDescriptionRun16.familyDefined = true;
2216 fontDescriptionRun16.weightDefined = false;
2217 fontDescriptionRun16.widthDefined = false;
2218 fontDescriptionRun16.slantDefined = false;
2219 fontDescriptionRun16.sizeDefined = false;
2221 // Set a known font description
2222 FontDescriptionRun fontDescriptionRun17;
2223 fontDescriptionRun17.characterRun.characterIndex = 178u;
2224 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2225 fontDescriptionRun17.familyLength = fontArabic.size();
2226 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2227 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2228 fontDescriptionRun17.familyDefined = true;
2229 fontDescriptionRun17.weightDefined = false;
2230 fontDescriptionRun17.widthDefined = false;
2231 fontDescriptionRun17.slantDefined = false;
2232 fontDescriptionRun17.sizeDefined = false;
2234 Vector<FontDescriptionRun> fontDescriptionRuns;
2235 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2236 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2237 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2238 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2239 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2240 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2241 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2242 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2243 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2244 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2245 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2246 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2247 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2248 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2249 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2250 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2251 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2252 Size textArea(100.f, 300.f);
2253 Size layoutSize(92.f, 380.f);
2256 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,
2257 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,
2258 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2259 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,
2260 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,
2261 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2262 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,
2263 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,
2264 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2265 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,
2266 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,
2267 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2268 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,
2269 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,
2270 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2271 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,
2272 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,
2273 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,
2276 struct LineRun line01 =
2288 struct LineRun line02 =
2300 struct LineRun line03 =
2312 struct LineRun line04 =
2324 struct LineRun line05 =
2336 struct LineRun line06 =
2348 struct LineRun line07 =
2360 struct LineRun line08 =
2372 struct LineRun line09 =
2384 struct LineRun line10 =
2396 struct LineRun line11 =
2408 struct LineRun line12 =
2420 struct LineRun line13 =
2432 struct LineRun line14 =
2444 struct LineRun line15 =
2456 struct LineRun line16 =
2468 struct LineRun line17 =
2480 struct LineRun line18 =
2492 struct LineRun line19 =
2504 Vector<LineRun> lines;
2505 lines.PushBack( line01 );
2506 lines.PushBack( line02 );
2507 lines.PushBack( line03 );
2508 lines.PushBack( line04 );
2509 lines.PushBack( line05 );
2510 lines.PushBack( line06 );
2511 lines.PushBack( line07 );
2512 lines.PushBack( line08 );
2513 lines.PushBack( line09 );
2514 lines.PushBack( line10 );
2515 lines.PushBack( line11 );
2516 lines.PushBack( line12 );
2517 lines.PushBack( line13 );
2518 lines.PushBack( line14 );
2519 lines.PushBack( line15 );
2520 lines.PushBack( line16 );
2521 lines.PushBack( line17 );
2522 lines.PushBack( line18 );
2523 lines.PushBack( line19 );
2525 LayoutTextData data =
2527 "Layout bidirectional text.",
2528 "Hello world demo שלום עולם.\n"
2529 "مرحبا بالعالم hello world שלום עולם\n"
2530 "שלום עולם hello world demo.\n"
2531 "hello world مرحبا بالعالم שלום עולם\n"
2532 "Hello world demo שלום עולם.\n"
2533 "שלום עולם hello world مرحبا بالعالم\n",
2536 fontDescriptionRuns.Begin(),
2542 LayoutEngine::MULTI_LINE_BOX,
2549 if( !LayoutTextTest( data ) )
2551 tet_result(TET_FAIL);
2554 tet_result(TET_PASS);
2558 int UtcDaliTextUpdateLayout03(void)
2560 ToolkitTestApplication application;
2561 tet_infoline(" UtcDaliTextUpdateLayout03");
2563 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2565 const std::string fontLatin( "TizenSans" );
2566 const std::string fontHebrew( "TizenSansHebrew" );
2567 const std::string fontArabic( "TizenSansArabic" );
2569 // Set a known font description
2570 FontDescriptionRun fontDescriptionRun01;
2571 fontDescriptionRun01.characterRun.characterIndex = 0u;
2572 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2573 fontDescriptionRun01.familyLength = fontLatin.size();
2574 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2575 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2576 fontDescriptionRun01.familyDefined = true;
2577 fontDescriptionRun01.weightDefined = false;
2578 fontDescriptionRun01.widthDefined = false;
2579 fontDescriptionRun01.slantDefined = false;
2580 fontDescriptionRun01.sizeDefined = false;
2582 // Set a known font description
2583 FontDescriptionRun fontDescriptionRun02;
2584 fontDescriptionRun02.characterRun.characterIndex = 17u;
2585 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2586 fontDescriptionRun02.familyLength = fontHebrew.size();
2587 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2588 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2589 fontDescriptionRun02.familyDefined = true;
2590 fontDescriptionRun02.weightDefined = false;
2591 fontDescriptionRun02.widthDefined = false;
2592 fontDescriptionRun02.slantDefined = false;
2593 fontDescriptionRun02.sizeDefined = false;
2595 // Set a known font description
2596 FontDescriptionRun fontDescriptionRun03;
2597 fontDescriptionRun03.characterRun.characterIndex = 26u;
2598 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2599 fontDescriptionRun03.familyLength = fontLatin.size();
2600 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2601 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2602 fontDescriptionRun03.familyDefined = true;
2603 fontDescriptionRun03.weightDefined = false;
2604 fontDescriptionRun03.widthDefined = false;
2605 fontDescriptionRun03.slantDefined = false;
2606 fontDescriptionRun03.sizeDefined = false;
2608 // Set a known font description
2609 FontDescriptionRun fontDescriptionRun04;
2610 fontDescriptionRun04.characterRun.characterIndex = 28u;
2611 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2612 fontDescriptionRun04.familyLength = fontArabic.size();
2613 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2614 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2615 fontDescriptionRun04.familyDefined = true;
2616 fontDescriptionRun04.weightDefined = false;
2617 fontDescriptionRun04.widthDefined = false;
2618 fontDescriptionRun04.slantDefined = false;
2619 fontDescriptionRun04.sizeDefined = false;
2621 // Set a known font description
2622 FontDescriptionRun fontDescriptionRun05;
2623 fontDescriptionRun05.characterRun.characterIndex = 42u;
2624 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2625 fontDescriptionRun05.familyLength = fontLatin.size();
2626 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2627 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2628 fontDescriptionRun05.familyDefined = true;
2629 fontDescriptionRun05.weightDefined = false;
2630 fontDescriptionRun05.widthDefined = false;
2631 fontDescriptionRun05.slantDefined = false;
2632 fontDescriptionRun05.sizeDefined = false;
2634 // Set a known font description
2635 FontDescriptionRun fontDescriptionRun06;
2636 fontDescriptionRun06.characterRun.characterIndex = 54u;
2637 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2638 fontDescriptionRun06.familyLength = fontHebrew.size();
2639 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2640 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2641 fontDescriptionRun06.familyDefined = true;
2642 fontDescriptionRun06.weightDefined = false;
2643 fontDescriptionRun06.widthDefined = false;
2644 fontDescriptionRun06.slantDefined = false;
2645 fontDescriptionRun06.sizeDefined = false;
2647 // Set a known font description
2648 FontDescriptionRun fontDescriptionRun07;
2649 fontDescriptionRun07.characterRun.characterIndex = 64u;
2650 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2651 fontDescriptionRun07.familyLength = fontHebrew.size();
2652 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2653 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2654 fontDescriptionRun07.familyDefined = true;
2655 fontDescriptionRun07.weightDefined = false;
2656 fontDescriptionRun07.widthDefined = false;
2657 fontDescriptionRun07.slantDefined = false;
2658 fontDescriptionRun07.sizeDefined = false;
2660 // Set a known font description
2661 FontDescriptionRun fontDescriptionRun08;
2662 fontDescriptionRun08.characterRun.characterIndex = 74u;
2663 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2664 fontDescriptionRun08.familyLength = fontLatin.size();
2665 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2666 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2667 fontDescriptionRun08.familyDefined = true;
2668 fontDescriptionRun08.weightDefined = false;
2669 fontDescriptionRun08.widthDefined = false;
2670 fontDescriptionRun08.slantDefined = false;
2671 fontDescriptionRun08.sizeDefined = false;
2673 // Set a known font description
2674 FontDescriptionRun fontDescriptionRun09;
2675 fontDescriptionRun09.characterRun.characterIndex = 92u;
2676 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2677 fontDescriptionRun09.familyLength = fontLatin.size();
2678 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2679 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2680 fontDescriptionRun09.familyDefined = true;
2681 fontDescriptionRun09.weightDefined = false;
2682 fontDescriptionRun09.widthDefined = false;
2683 fontDescriptionRun09.slantDefined = false;
2684 fontDescriptionRun09.sizeDefined = false;
2686 // Set a known font description
2687 FontDescriptionRun fontDescriptionRun10;
2688 fontDescriptionRun10.characterRun.characterIndex = 104u;
2689 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2690 fontDescriptionRun10.familyLength = fontArabic.size();
2691 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2692 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2693 fontDescriptionRun10.familyDefined = true;
2694 fontDescriptionRun10.weightDefined = false;
2695 fontDescriptionRun10.widthDefined = false;
2696 fontDescriptionRun10.slantDefined = false;
2697 fontDescriptionRun10.sizeDefined = false;
2699 // Set a known font description
2700 FontDescriptionRun fontDescriptionRun11;
2701 fontDescriptionRun11.characterRun.characterIndex = 118u;
2702 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2703 fontDescriptionRun11.familyLength = fontHebrew.size();
2704 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2705 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2706 fontDescriptionRun11.familyDefined = true;
2707 fontDescriptionRun11.weightDefined = false;
2708 fontDescriptionRun11.widthDefined = false;
2709 fontDescriptionRun11.slantDefined = false;
2710 fontDescriptionRun11.sizeDefined = false;
2712 // Set a known font description
2713 FontDescriptionRun fontDescriptionRun12;
2714 fontDescriptionRun12.characterRun.characterIndex = 128u;
2715 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2716 fontDescriptionRun12.familyLength = fontLatin.size();
2717 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2718 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2719 fontDescriptionRun12.familyDefined = true;
2720 fontDescriptionRun12.weightDefined = false;
2721 fontDescriptionRun12.widthDefined = false;
2722 fontDescriptionRun12.slantDefined = false;
2723 fontDescriptionRun12.sizeDefined = false;
2725 // Set a known font description
2726 FontDescriptionRun fontDescriptionRun13;
2727 fontDescriptionRun13.characterRun.characterIndex = 145u;
2728 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2729 fontDescriptionRun13.familyLength = fontHebrew.size();
2730 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2731 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2732 fontDescriptionRun13.familyDefined = true;
2733 fontDescriptionRun13.weightDefined = false;
2734 fontDescriptionRun13.widthDefined = false;
2735 fontDescriptionRun13.slantDefined = false;
2736 fontDescriptionRun13.sizeDefined = false;
2738 // Set a known font description
2739 FontDescriptionRun fontDescriptionRun14;
2740 fontDescriptionRun14.characterRun.characterIndex = 154u;
2741 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2742 fontDescriptionRun14.familyLength = fontLatin.size();
2743 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2744 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2745 fontDescriptionRun14.familyDefined = true;
2746 fontDescriptionRun14.weightDefined = false;
2747 fontDescriptionRun14.widthDefined = false;
2748 fontDescriptionRun14.slantDefined = false;
2749 fontDescriptionRun14.sizeDefined = false;
2751 // Set a known font description
2752 FontDescriptionRun fontDescriptionRun15;
2753 fontDescriptionRun15.characterRun.characterIndex = 156u;
2754 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2755 fontDescriptionRun15.familyLength = fontHebrew.size();
2756 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2757 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2758 fontDescriptionRun15.familyDefined = true;
2759 fontDescriptionRun15.weightDefined = false;
2760 fontDescriptionRun15.widthDefined = false;
2761 fontDescriptionRun15.slantDefined = false;
2762 fontDescriptionRun15.sizeDefined = false;
2764 // Set a known font description
2765 FontDescriptionRun fontDescriptionRun16;
2766 fontDescriptionRun16.characterRun.characterIndex = 166u;
2767 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2768 fontDescriptionRun16.familyLength = fontLatin.size();
2769 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2770 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2771 fontDescriptionRun16.familyDefined = true;
2772 fontDescriptionRun16.weightDefined = false;
2773 fontDescriptionRun16.widthDefined = false;
2774 fontDescriptionRun16.slantDefined = false;
2775 fontDescriptionRun16.sizeDefined = false;
2777 // Set a known font description
2778 FontDescriptionRun fontDescriptionRun17;
2779 fontDescriptionRun17.characterRun.characterIndex = 178u;
2780 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2781 fontDescriptionRun17.familyLength = fontArabic.size();
2782 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2783 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2784 fontDescriptionRun17.familyDefined = true;
2785 fontDescriptionRun17.weightDefined = false;
2786 fontDescriptionRun17.widthDefined = false;
2787 fontDescriptionRun17.slantDefined = false;
2788 fontDescriptionRun17.sizeDefined = false;
2790 Vector<FontDescriptionRun> fontDescriptionRuns;
2791 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2792 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2793 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2794 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2795 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2796 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2797 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2798 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2799 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2800 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2801 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2802 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2803 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2804 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2805 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2806 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2807 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2808 Size textArea(100.f, 300.f);
2809 Size layoutSize(92.f, 380.f);
2812 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,
2813 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,
2814 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2815 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,
2816 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,
2817 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2818 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,
2819 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,
2820 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2821 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,
2822 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,
2823 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2824 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,
2825 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,
2826 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2827 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,
2828 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,
2829 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,
2832 struct LineRun line01 =
2844 struct LineRun line02 =
2856 struct LineRun line03 =
2868 struct LineRun line04 =
2880 struct LineRun line05 =
2892 struct LineRun line06 =
2904 struct LineRun line07 =
2916 struct LineRun line08 =
2928 struct LineRun line09 =
2940 struct LineRun line10 =
2952 struct LineRun line11 =
2964 struct LineRun line12 =
2976 struct LineRun line13 =
2988 struct LineRun line14 =
3000 struct LineRun line15 =
3012 struct LineRun line16 =
3024 struct LineRun line17 =
3036 struct LineRun line18 =
3048 struct LineRun line19 =
3060 Vector<LineRun> lines;
3061 lines.PushBack( line01 );
3062 lines.PushBack( line02 );
3063 lines.PushBack( line03 );
3064 lines.PushBack( line04 );
3065 lines.PushBack( line05 );
3066 lines.PushBack( line06 );
3067 lines.PushBack( line07 );
3068 lines.PushBack( line08 );
3069 lines.PushBack( line09 );
3070 lines.PushBack( line10 );
3071 lines.PushBack( line11 );
3072 lines.PushBack( line12 );
3073 lines.PushBack( line13 );
3074 lines.PushBack( line14 );
3075 lines.PushBack( line15 );
3076 lines.PushBack( line16 );
3077 lines.PushBack( line17 );
3078 lines.PushBack( line18 );
3079 lines.PushBack( line19 );
3081 LayoutTextData data =
3083 "Layout bidirectional text.",
3084 "Hello world demo שלום עולם.\n"
3085 "مرحبا بالعالم hello world שלום עולם\n"
3086 "שלום עולם hello world demo.\n"
3087 "hello world مرحبا بالعالم שלום עולם\n"
3088 "Hello world demo שלום עולם.\n"
3089 "שלום עולם hello world مرحبا بالعالم\n",
3092 fontDescriptionRuns.Begin(),
3098 LayoutEngine::MULTI_LINE_BOX,
3105 if( !LayoutTextTest( data ) )
3107 tet_result(TET_FAIL);
3110 tet_result(TET_PASS);
3114 int UtcDaliTextLayoutEllipsis01(void)
3116 ToolkitTestApplication application;
3117 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3119 // Layout single-line LTR text with ellipsis.
3121 const std::string fontLatin( "TizenSans" );
3123 // Set a known font description
3124 FontDescriptionRun fontDescriptionRun01;
3125 fontDescriptionRun01.characterRun.characterIndex = 0u;
3126 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3127 fontDescriptionRun01.familyLength = fontLatin.size();
3128 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3129 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3130 fontDescriptionRun01.familyDefined = true;
3131 fontDescriptionRun01.weightDefined = false;
3132 fontDescriptionRun01.widthDefined = false;
3133 fontDescriptionRun01.slantDefined = false;
3134 fontDescriptionRun01.sizeDefined = false;
3136 Vector<FontDescriptionRun> fontDescriptionRuns;
3137 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3139 struct LineRun line01 =
3151 Vector<LineRun> lines;
3152 lines.PushBack( line01 );
3156 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,
3159 Size textArea( 100.f, 50.f );
3160 Size layoutSize( 100.f, 20.f );
3162 LayoutTextData data =
3164 "Layout single-line LTR text with ellipsis.",
3165 "Hello world demo hello world demo hello world demo.",
3168 fontDescriptionRuns.Begin(),
3174 LayoutEngine::SINGLE_LINE_BOX,
3181 if( !LayoutTextTest( data ) )
3183 tet_result(TET_FAIL);
3186 tet_result(TET_PASS);
3190 int UtcDaliTextLayoutEllipsis02(void)
3192 ToolkitTestApplication application;
3193 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3195 // Layout multi-line LTR text with ellipsis.
3197 const std::string fontLatin( "TizenSans" );
3199 // Set a known font description
3200 FontDescriptionRun fontDescriptionRun01;
3201 fontDescriptionRun01.characterRun.characterIndex = 0u;
3202 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3203 fontDescriptionRun01.familyLength = fontLatin.size();
3204 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3205 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3206 fontDescriptionRun01.familyDefined = true;
3207 fontDescriptionRun01.weightDefined = false;
3208 fontDescriptionRun01.widthDefined = false;
3209 fontDescriptionRun01.slantDefined = false;
3210 fontDescriptionRun01.sizeDefined = false;
3212 Vector<FontDescriptionRun> fontDescriptionRuns;
3213 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3215 struct LineRun line01 =
3227 struct LineRun line02 =
3239 Vector<LineRun> lines;
3240 lines.PushBack( line01 );
3241 lines.PushBack( line02 );
3245 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,
3246 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,
3249 Size textArea( 100.f, 50.f );
3250 Size layoutSize( 100.f, 40.f );
3252 LayoutTextData data =
3254 "Layout multi-line LTR text with ellipsis.",
3255 "Hello world demo hello world demo hello world demo.",
3258 fontDescriptionRuns.Begin(),
3264 LayoutEngine::MULTI_LINE_BOX,
3271 if( !LayoutTextTest( data ) )
3273 tet_result(TET_FAIL);
3276 tet_result(TET_PASS);
3280 int UtcDaliTextLayoutEllipsis03(void)
3282 ToolkitTestApplication application;
3283 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3285 // Layout single-line RTL text with ellipsis.
3287 const std::string fontHebrew( "TizenSansHebrew" );
3288 const std::string fontArabic( "TizenSansArabic" );
3290 // Set a known font description
3291 FontDescriptionRun fontDescriptionRun01;
3292 fontDescriptionRun01.characterRun.characterIndex = 0u;
3293 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3294 fontDescriptionRun01.familyLength = fontHebrew.size();
3295 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3296 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3297 fontDescriptionRun01.familyDefined = true;
3298 fontDescriptionRun01.weightDefined = false;
3299 fontDescriptionRun01.widthDefined = false;
3300 fontDescriptionRun01.slantDefined = false;
3301 fontDescriptionRun01.sizeDefined = false;
3303 FontDescriptionRun fontDescriptionRun02;
3304 fontDescriptionRun02.characterRun.characterIndex = 10u;
3305 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3306 fontDescriptionRun02.familyLength = fontArabic.size();
3307 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3308 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3309 fontDescriptionRun02.familyDefined = true;
3310 fontDescriptionRun02.weightDefined = false;
3311 fontDescriptionRun02.widthDefined = false;
3312 fontDescriptionRun02.slantDefined = false;
3313 fontDescriptionRun02.sizeDefined = false;
3315 FontDescriptionRun fontDescriptionRun03;
3316 fontDescriptionRun03.characterRun.characterIndex = 24u;
3317 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3318 fontDescriptionRun03.familyLength = fontHebrew.size();
3319 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3320 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3321 fontDescriptionRun03.familyDefined = true;
3322 fontDescriptionRun03.weightDefined = false;
3323 fontDescriptionRun03.widthDefined = false;
3324 fontDescriptionRun03.slantDefined = false;
3325 fontDescriptionRun03.sizeDefined = false;
3327 FontDescriptionRun fontDescriptionRun04;
3328 fontDescriptionRun04.characterRun.characterIndex = 34u;
3329 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3330 fontDescriptionRun04.familyLength = fontArabic.size();
3331 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3332 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3333 fontDescriptionRun04.familyDefined = true;
3334 fontDescriptionRun04.weightDefined = false;
3335 fontDescriptionRun04.widthDefined = false;
3336 fontDescriptionRun04.slantDefined = false;
3337 fontDescriptionRun04.sizeDefined = false;
3339 FontDescriptionRun fontDescriptionRun05;
3340 fontDescriptionRun05.characterRun.characterIndex = 48u;
3341 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3342 fontDescriptionRun05.familyLength = fontHebrew.size();
3343 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3344 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3345 fontDescriptionRun05.familyDefined = true;
3346 fontDescriptionRun05.weightDefined = false;
3347 fontDescriptionRun05.widthDefined = false;
3348 fontDescriptionRun05.slantDefined = false;
3349 fontDescriptionRun05.sizeDefined = false;
3351 FontDescriptionRun fontDescriptionRun06;
3352 fontDescriptionRun06.characterRun.characterIndex = 58u;
3353 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3354 fontDescriptionRun06.familyLength = fontArabic.size();
3355 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3356 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3357 fontDescriptionRun06.familyDefined = true;
3358 fontDescriptionRun06.weightDefined = false;
3359 fontDescriptionRun06.widthDefined = false;
3360 fontDescriptionRun06.slantDefined = false;
3361 fontDescriptionRun06.sizeDefined = false;
3363 Vector<FontDescriptionRun> fontDescriptionRuns;
3364 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3365 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3366 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3367 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3368 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3369 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3371 struct LineRun line01 =
3383 Vector<LineRun> lines;
3384 lines.PushBack( line01 );
3388 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,
3391 Size textArea( 100.f, 50.f );
3392 Size layoutSize( 100.f, 20.f );
3394 LayoutTextData data =
3396 "Layout single-line RTL text with ellipsis.",
3397 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3400 fontDescriptionRuns.Begin(),
3406 LayoutEngine::SINGLE_LINE_BOX,
3413 if( !LayoutTextTest( data ) )
3415 tet_result(TET_FAIL);
3418 tet_result(TET_PASS);
3422 int UtcDaliTextLayoutEllipsis04(void)
3424 ToolkitTestApplication application;
3425 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3427 // Layout multi-line RTL text with ellipsis.
3429 const std::string fontHebrew( "TizenSansHebrew" );
3430 const std::string fontArabic( "TizenSansArabic" );
3432 // Set a known font description
3433 FontDescriptionRun fontDescriptionRun01;
3434 fontDescriptionRun01.characterRun.characterIndex = 0u;
3435 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3436 fontDescriptionRun01.familyLength = fontHebrew.size();
3437 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3438 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3439 fontDescriptionRun01.familyDefined = true;
3440 fontDescriptionRun01.weightDefined = false;
3441 fontDescriptionRun01.widthDefined = false;
3442 fontDescriptionRun01.slantDefined = false;
3443 fontDescriptionRun01.sizeDefined = false;
3445 FontDescriptionRun fontDescriptionRun02;
3446 fontDescriptionRun02.characterRun.characterIndex = 10u;
3447 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3448 fontDescriptionRun02.familyLength = fontArabic.size();
3449 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3450 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3451 fontDescriptionRun02.familyDefined = true;
3452 fontDescriptionRun02.weightDefined = false;
3453 fontDescriptionRun02.widthDefined = false;
3454 fontDescriptionRun02.slantDefined = false;
3455 fontDescriptionRun02.sizeDefined = false;
3457 FontDescriptionRun fontDescriptionRun03;
3458 fontDescriptionRun03.characterRun.characterIndex = 24u;
3459 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3460 fontDescriptionRun03.familyLength = fontHebrew.size();
3461 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3462 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3463 fontDescriptionRun03.familyDefined = true;
3464 fontDescriptionRun03.weightDefined = false;
3465 fontDescriptionRun03.widthDefined = false;
3466 fontDescriptionRun03.slantDefined = false;
3467 fontDescriptionRun03.sizeDefined = false;
3469 FontDescriptionRun fontDescriptionRun04;
3470 fontDescriptionRun04.characterRun.characterIndex = 34u;
3471 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3472 fontDescriptionRun04.familyLength = fontArabic.size();
3473 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3474 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3475 fontDescriptionRun04.familyDefined = true;
3476 fontDescriptionRun04.weightDefined = false;
3477 fontDescriptionRun04.widthDefined = false;
3478 fontDescriptionRun04.slantDefined = false;
3479 fontDescriptionRun04.sizeDefined = false;
3481 FontDescriptionRun fontDescriptionRun05;
3482 fontDescriptionRun05.characterRun.characterIndex = 48u;
3483 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3484 fontDescriptionRun05.familyLength = fontHebrew.size();
3485 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3486 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3487 fontDescriptionRun05.familyDefined = true;
3488 fontDescriptionRun05.weightDefined = false;
3489 fontDescriptionRun05.widthDefined = false;
3490 fontDescriptionRun05.slantDefined = false;
3491 fontDescriptionRun05.sizeDefined = false;
3493 FontDescriptionRun fontDescriptionRun06;
3494 fontDescriptionRun06.characterRun.characterIndex = 58u;
3495 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3496 fontDescriptionRun06.familyLength = fontArabic.size();
3497 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3498 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3499 fontDescriptionRun06.familyDefined = true;
3500 fontDescriptionRun06.weightDefined = false;
3501 fontDescriptionRun06.widthDefined = false;
3502 fontDescriptionRun06.slantDefined = false;
3503 fontDescriptionRun06.sizeDefined = false;
3505 Vector<FontDescriptionRun> fontDescriptionRuns;
3506 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3507 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3508 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3509 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3510 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3511 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3513 struct LineRun line01 =
3525 struct LineRun line02 =
3537 Vector<LineRun> lines;
3538 lines.PushBack( line01 );
3539 lines.PushBack( line02 );
3543 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,
3544 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,
3547 Size textArea( 100.f, 50.f );
3548 Size layoutSize( 100.f, 40.f );
3550 LayoutTextData data =
3552 "Layout single-line RTL text with ellipsis.",
3553 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3556 fontDescriptionRuns.Begin(),
3562 LayoutEngine::MULTI_LINE_BOX,
3569 if( !LayoutTextTest( data ) )
3571 tet_result(TET_FAIL);
3574 tet_result(TET_PASS);
3578 int UtcDaliTextLayoutEllipsis05(void)
3580 ToolkitTestApplication application;
3581 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3583 const std::string fontLatin( "TizenSans" );
3585 // Set a known font description
3586 FontDescriptionRun fontDescriptionRun01;
3587 fontDescriptionRun01.characterRun.characterIndex = 0u;
3588 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3589 fontDescriptionRun01.familyLength = fontLatin.size();
3590 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3591 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3592 fontDescriptionRun01.familyDefined = true;
3593 fontDescriptionRun01.weightDefined = false;
3594 fontDescriptionRun01.widthDefined = false;
3595 fontDescriptionRun01.slantDefined = false;
3596 fontDescriptionRun01.sizeDefined = false;
3598 Vector<FontDescriptionRun> fontDescriptionRuns;
3599 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3601 struct LineRun line01 =
3613 Vector<LineRun> lines;
3614 lines.PushBack( line01 );
3621 Size textArea( 100.f, 19.f );
3622 Size layoutSize( 100.f, 20.f );
3624 LayoutTextData data =
3626 "Not enough height.",
3630 fontDescriptionRuns.Begin(),
3636 LayoutEngine::MULTI_LINE_BOX,
3643 if( !LayoutTextTest( data ) )
3645 tet_result(TET_FAIL);
3648 tet_result(TET_PASS);
3652 int UtcDaliTextReorderLayout01(void)
3654 ToolkitTestApplication application;
3655 tet_infoline(" UtcDaliTextReorderLayout01");
3657 // Reorder lines. No right to left characters.
3659 const std::string fontLatin( "TizenSans" );
3661 // Set a known font description
3662 FontDescriptionRun fontDescriptionRun01;
3663 fontDescriptionRun01.characterRun.characterIndex = 0u;
3664 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3665 fontDescriptionRun01.familyLength = fontLatin.size();
3666 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3667 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3668 fontDescriptionRun01.familyDefined = true;
3669 fontDescriptionRun01.weightDefined = false;
3670 fontDescriptionRun01.widthDefined = false;
3671 fontDescriptionRun01.slantDefined = false;
3672 fontDescriptionRun01.sizeDefined = false;
3674 Vector<FontDescriptionRun> fontDescriptionRuns;
3675 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3679 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,
3682 Size textArea( 100.f, 300.f );
3684 ReLayoutRightToLeftLinesData data =
3686 "Text with no right to left text.",
3690 fontDescriptionRuns.Begin(),
3697 if( !ReLayoutRightToLeftLinesTest( data ) )
3699 tet_result(TET_FAIL);
3702 tet_result(TET_PASS);
3706 int UtcDaliTextReorderLayout02(void)
3708 ToolkitTestApplication application;
3709 tet_infoline(" UtcDaliTextReorderLayout02");
3711 // Reorder lines of the first paragraph.
3713 const std::string fontHebrew( "TizenSansHebrew" );
3714 const std::string fontArabic( "TizenSansArabic" );
3716 // Set a known font description
3717 FontDescriptionRun fontDescriptionRun01;
3718 fontDescriptionRun01.characterRun.characterIndex = 0u;
3719 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3720 fontDescriptionRun01.familyLength = fontHebrew.size();
3721 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3722 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3723 fontDescriptionRun01.familyDefined = true;
3724 fontDescriptionRun01.weightDefined = false;
3725 fontDescriptionRun01.widthDefined = false;
3726 fontDescriptionRun01.slantDefined = false;
3727 fontDescriptionRun01.sizeDefined = false;
3729 FontDescriptionRun fontDescriptionRun02;
3730 fontDescriptionRun02.characterRun.characterIndex = 10u;
3731 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3732 fontDescriptionRun02.familyLength = fontArabic.size();
3733 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3734 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3735 fontDescriptionRun02.familyDefined = true;
3736 fontDescriptionRun02.weightDefined = false;
3737 fontDescriptionRun02.widthDefined = false;
3738 fontDescriptionRun02.slantDefined = false;
3739 fontDescriptionRun02.sizeDefined = false;
3741 FontDescriptionRun fontDescriptionRun03;
3742 fontDescriptionRun03.characterRun.characterIndex = 24u;
3743 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3744 fontDescriptionRun03.familyLength = fontArabic.size();
3745 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3746 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3747 fontDescriptionRun03.familyDefined = true;
3748 fontDescriptionRun03.weightDefined = false;
3749 fontDescriptionRun03.widthDefined = false;
3750 fontDescriptionRun03.slantDefined = false;
3751 fontDescriptionRun03.sizeDefined = false;
3753 FontDescriptionRun fontDescriptionRun04;
3754 fontDescriptionRun04.characterRun.characterIndex = 38u;
3755 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3756 fontDescriptionRun04.familyLength = fontHebrew.size();
3757 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3758 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3759 fontDescriptionRun04.familyDefined = true;
3760 fontDescriptionRun04.weightDefined = false;
3761 fontDescriptionRun04.widthDefined = false;
3762 fontDescriptionRun04.slantDefined = false;
3763 fontDescriptionRun04.sizeDefined = false;
3765 FontDescriptionRun fontDescriptionRun05;
3766 fontDescriptionRun05.characterRun.characterIndex = 48u;
3767 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3768 fontDescriptionRun05.familyLength = fontHebrew.size();
3769 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3770 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3771 fontDescriptionRun05.familyDefined = true;
3772 fontDescriptionRun05.weightDefined = false;
3773 fontDescriptionRun05.widthDefined = false;
3774 fontDescriptionRun05.slantDefined = false;
3775 fontDescriptionRun05.sizeDefined = false;
3777 FontDescriptionRun fontDescriptionRun06;
3778 fontDescriptionRun06.characterRun.characterIndex = 58u;
3779 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3780 fontDescriptionRun06.familyLength = fontArabic.size();
3781 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3782 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3783 fontDescriptionRun06.familyDefined = true;
3784 fontDescriptionRun06.weightDefined = false;
3785 fontDescriptionRun06.widthDefined = false;
3786 fontDescriptionRun06.slantDefined = false;
3787 fontDescriptionRun06.sizeDefined = false;
3789 Vector<FontDescriptionRun> fontDescriptionRuns;
3790 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3791 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3792 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3793 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3794 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3795 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3799 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,
3800 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,
3801 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,
3802 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3803 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,
3804 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,
3807 Size textArea( 100.f, 300.f );
3809 ReLayoutRightToLeftLinesData data =
3811 "Paragraphs with right to left text.",
3812 "שלום עולם مرحبا بالعالم\n"
3813 "مرحبا بالعالم שלום עולם\n"
3814 "שלום עולם مرحبا بالعالم.",
3817 fontDescriptionRuns.Begin(),
3824 if( !ReLayoutRightToLeftLinesTest( data ) )
3826 tet_result(TET_FAIL);
3829 tet_result(TET_PASS);
3833 int UtcDaliTextReorderLayout03(void)
3835 ToolkitTestApplication application;
3836 tet_infoline(" UtcDaliTextReorderLayout03");
3838 // Reorder lines of the mid paragraph.
3840 const std::string fontHebrew( "TizenSansHebrew" );
3841 const std::string fontArabic( "TizenSansArabic" );
3843 // Set a known font description
3844 FontDescriptionRun fontDescriptionRun01;
3845 fontDescriptionRun01.characterRun.characterIndex = 0u;
3846 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3847 fontDescriptionRun01.familyLength = fontHebrew.size();
3848 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3849 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3850 fontDescriptionRun01.familyDefined = true;
3851 fontDescriptionRun01.weightDefined = false;
3852 fontDescriptionRun01.widthDefined = false;
3853 fontDescriptionRun01.slantDefined = false;
3854 fontDescriptionRun01.sizeDefined = false;
3856 FontDescriptionRun fontDescriptionRun02;
3857 fontDescriptionRun02.characterRun.characterIndex = 10u;
3858 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3859 fontDescriptionRun02.familyLength = fontArabic.size();
3860 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3861 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3862 fontDescriptionRun02.familyDefined = true;
3863 fontDescriptionRun02.weightDefined = false;
3864 fontDescriptionRun02.widthDefined = false;
3865 fontDescriptionRun02.slantDefined = false;
3866 fontDescriptionRun02.sizeDefined = false;
3868 FontDescriptionRun fontDescriptionRun03;
3869 fontDescriptionRun03.characterRun.characterIndex = 24u;
3870 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3871 fontDescriptionRun03.familyLength = fontArabic.size();
3872 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3873 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3874 fontDescriptionRun03.familyDefined = true;
3875 fontDescriptionRun03.weightDefined = false;
3876 fontDescriptionRun03.widthDefined = false;
3877 fontDescriptionRun03.slantDefined = false;
3878 fontDescriptionRun03.sizeDefined = false;
3880 FontDescriptionRun fontDescriptionRun04;
3881 fontDescriptionRun04.characterRun.characterIndex = 38u;
3882 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3883 fontDescriptionRun04.familyLength = fontHebrew.size();
3884 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3885 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3886 fontDescriptionRun04.familyDefined = true;
3887 fontDescriptionRun04.weightDefined = false;
3888 fontDescriptionRun04.widthDefined = false;
3889 fontDescriptionRun04.slantDefined = false;
3890 fontDescriptionRun04.sizeDefined = false;
3892 FontDescriptionRun fontDescriptionRun05;
3893 fontDescriptionRun05.characterRun.characterIndex = 48u;
3894 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3895 fontDescriptionRun05.familyLength = fontHebrew.size();
3896 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3897 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3898 fontDescriptionRun05.familyDefined = true;
3899 fontDescriptionRun05.weightDefined = false;
3900 fontDescriptionRun05.widthDefined = false;
3901 fontDescriptionRun05.slantDefined = false;
3902 fontDescriptionRun05.sizeDefined = false;
3904 FontDescriptionRun fontDescriptionRun06;
3905 fontDescriptionRun06.characterRun.characterIndex = 58u;
3906 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3907 fontDescriptionRun06.familyLength = fontArabic.size();
3908 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3909 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3910 fontDescriptionRun06.familyDefined = true;
3911 fontDescriptionRun06.weightDefined = false;
3912 fontDescriptionRun06.widthDefined = false;
3913 fontDescriptionRun06.slantDefined = false;
3914 fontDescriptionRun06.sizeDefined = false;
3916 Vector<FontDescriptionRun> fontDescriptionRuns;
3917 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3918 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3919 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3920 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3921 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3922 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3926 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,
3927 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,
3928 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,
3929 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3930 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,
3931 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,
3934 Size textArea( 100.f, 300.f );
3936 ReLayoutRightToLeftLinesData data =
3938 "Paragraphs with right to left text.",
3939 "שלום עולם مرحبا بالعالم\n"
3940 "مرحبا بالعالم שלום עולם\n"
3941 "שלום עולם مرحبا بالعالم.",
3944 fontDescriptionRuns.Begin(),
3951 if( !ReLayoutRightToLeftLinesTest( data ) )
3953 tet_result(TET_FAIL);
3956 tet_result(TET_PASS);
3960 int UtcDaliTextReorderLayout04(void)
3962 ToolkitTestApplication application;
3963 tet_infoline(" UtcDaliTextReorderLayout04");
3965 // Reorder lines of the last paragraph.
3967 const std::string fontHebrew( "TizenSansHebrew" );
3968 const std::string fontArabic( "TizenSansArabic" );
3970 // Set a known font description
3971 FontDescriptionRun fontDescriptionRun01;
3972 fontDescriptionRun01.characterRun.characterIndex = 0u;
3973 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3974 fontDescriptionRun01.familyLength = fontHebrew.size();
3975 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3976 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3977 fontDescriptionRun01.familyDefined = true;
3978 fontDescriptionRun01.weightDefined = false;
3979 fontDescriptionRun01.widthDefined = false;
3980 fontDescriptionRun01.slantDefined = false;
3981 fontDescriptionRun01.sizeDefined = false;
3983 FontDescriptionRun fontDescriptionRun02;
3984 fontDescriptionRun02.characterRun.characterIndex = 10u;
3985 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3986 fontDescriptionRun02.familyLength = fontArabic.size();
3987 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3988 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3989 fontDescriptionRun02.familyDefined = true;
3990 fontDescriptionRun02.weightDefined = false;
3991 fontDescriptionRun02.widthDefined = false;
3992 fontDescriptionRun02.slantDefined = false;
3993 fontDescriptionRun02.sizeDefined = false;
3995 FontDescriptionRun fontDescriptionRun03;
3996 fontDescriptionRun03.characterRun.characterIndex = 24u;
3997 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3998 fontDescriptionRun03.familyLength = fontArabic.size();
3999 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4000 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4001 fontDescriptionRun03.familyDefined = true;
4002 fontDescriptionRun03.weightDefined = false;
4003 fontDescriptionRun03.widthDefined = false;
4004 fontDescriptionRun03.slantDefined = false;
4005 fontDescriptionRun03.sizeDefined = false;
4007 FontDescriptionRun fontDescriptionRun04;
4008 fontDescriptionRun04.characterRun.characterIndex = 38u;
4009 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
4010 fontDescriptionRun04.familyLength = fontHebrew.size();
4011 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4012 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
4013 fontDescriptionRun04.familyDefined = true;
4014 fontDescriptionRun04.weightDefined = false;
4015 fontDescriptionRun04.widthDefined = false;
4016 fontDescriptionRun04.slantDefined = false;
4017 fontDescriptionRun04.sizeDefined = false;
4019 FontDescriptionRun fontDescriptionRun05;
4020 fontDescriptionRun05.characterRun.characterIndex = 48u;
4021 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4022 fontDescriptionRun05.familyLength = fontHebrew.size();
4023 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4024 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
4025 fontDescriptionRun05.familyDefined = true;
4026 fontDescriptionRun05.weightDefined = false;
4027 fontDescriptionRun05.widthDefined = false;
4028 fontDescriptionRun05.slantDefined = false;
4029 fontDescriptionRun05.sizeDefined = false;
4031 FontDescriptionRun fontDescriptionRun06;
4032 fontDescriptionRun06.characterRun.characterIndex = 58u;
4033 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4034 fontDescriptionRun06.familyLength = fontArabic.size();
4035 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4036 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4037 fontDescriptionRun06.familyDefined = true;
4038 fontDescriptionRun06.weightDefined = false;
4039 fontDescriptionRun06.widthDefined = false;
4040 fontDescriptionRun06.slantDefined = false;
4041 fontDescriptionRun06.sizeDefined = false;
4043 Vector<FontDescriptionRun> fontDescriptionRuns;
4044 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4045 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4046 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4047 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4048 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4049 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4053 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,
4054 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,
4055 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,
4056 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4057 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,
4058 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,
4061 Size textArea( 100.f, 300.f );
4063 ReLayoutRightToLeftLinesData data =
4065 "Paragraphs with right to left text.",
4066 "שלום עולם مرحبا بالعالم\n"
4067 "مرحبا بالعالم שלום עולם\n"
4068 "שלום עולם مرحبا بالعالم.",
4071 fontDescriptionRuns.Begin(),
4078 if( !ReLayoutRightToLeftLinesTest( data ) )
4080 tet_result(TET_FAIL);
4083 tet_result(TET_PASS);
4087 int UtcDaliTextAlign01(void)
4089 ToolkitTestApplication application;
4090 tet_infoline(" UtcDaliTextAlign01");
4092 // Calculate text alignment.
4094 const std::string fontLatin( "TizenSans" );
4095 const std::string fontHebrew( "TizenSansHebrew" );
4096 const std::string fontArabic( "TizenSansArabic" );
4098 // Set a known font description
4099 FontDescriptionRun fontDescriptionRun01;
4100 fontDescriptionRun01.characterRun.characterIndex = 0u;
4101 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4102 fontDescriptionRun01.familyLength = fontLatin.size();
4103 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4104 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4105 fontDescriptionRun01.familyDefined = true;
4106 fontDescriptionRun01.weightDefined = false;
4107 fontDescriptionRun01.widthDefined = false;
4108 fontDescriptionRun01.slantDefined = false;
4109 fontDescriptionRun01.sizeDefined = false;
4111 FontDescriptionRun fontDescriptionRun02;
4112 fontDescriptionRun02.characterRun.characterIndex = 12u;
4113 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4114 fontDescriptionRun02.familyLength = fontHebrew.size();
4115 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4116 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4117 fontDescriptionRun02.familyDefined = true;
4118 fontDescriptionRun02.weightDefined = false;
4119 fontDescriptionRun02.widthDefined = false;
4120 fontDescriptionRun02.slantDefined = false;
4121 fontDescriptionRun02.sizeDefined = false;
4123 FontDescriptionRun fontDescriptionRun03;
4124 fontDescriptionRun03.characterRun.characterIndex = 22u;
4125 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4126 fontDescriptionRun03.familyLength = fontArabic.size();
4127 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4128 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4129 fontDescriptionRun03.familyDefined = true;
4130 fontDescriptionRun03.weightDefined = false;
4131 fontDescriptionRun03.widthDefined = false;
4132 fontDescriptionRun03.slantDefined = false;
4133 fontDescriptionRun03.sizeDefined = false;
4135 FontDescriptionRun fontDescriptionRun04;
4136 fontDescriptionRun04.characterRun.characterIndex = 36u;
4137 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4138 fontDescriptionRun04.familyLength = fontLatin.size();
4139 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4140 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4141 fontDescriptionRun04.familyDefined = true;
4142 fontDescriptionRun04.weightDefined = false;
4143 fontDescriptionRun04.widthDefined = false;
4144 fontDescriptionRun04.slantDefined = false;
4145 fontDescriptionRun04.sizeDefined = false;
4147 FontDescriptionRun fontDescriptionRun05;
4148 fontDescriptionRun05.characterRun.characterIndex = 48u;
4149 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4150 fontDescriptionRun05.familyLength = fontLatin.size();
4151 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4152 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4153 fontDescriptionRun05.familyDefined = true;
4154 fontDescriptionRun05.weightDefined = false;
4155 fontDescriptionRun05.widthDefined = false;
4156 fontDescriptionRun05.slantDefined = false;
4157 fontDescriptionRun05.sizeDefined = false;
4159 FontDescriptionRun fontDescriptionRun06;
4160 fontDescriptionRun06.characterRun.characterIndex = 60u;
4161 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4162 fontDescriptionRun06.familyLength = fontArabic.size();
4163 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4164 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4165 fontDescriptionRun06.familyDefined = true;
4166 fontDescriptionRun06.weightDefined = false;
4167 fontDescriptionRun06.widthDefined = false;
4168 fontDescriptionRun06.slantDefined = false;
4169 fontDescriptionRun06.sizeDefined = false;
4171 Vector<FontDescriptionRun> fontDescriptionRuns;
4172 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4173 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4174 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4175 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4176 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4177 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4179 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4181 Size textArea( 100.f, 300.f );
4184 "Begin alignment for the first paragraph.",
4185 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4188 fontDescriptionRuns.Begin(),
4189 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4190 LayoutEngine::VERTICAL_ALIGN_TOP,
4197 if( !AlignTest( data ) )
4199 tet_result(TET_FAIL);
4202 tet_result(TET_PASS);
4206 int UtcDaliTextAlign02(void)
4208 ToolkitTestApplication application;
4209 tet_infoline(" UtcDaliTextAlign02");
4211 // Calculate text alignment.
4213 const std::string fontLatin( "TizenSans" );
4214 const std::string fontHebrew( "TizenSansHebrew" );
4215 const std::string fontArabic( "TizenSansArabic" );
4217 // Set a known font description
4218 FontDescriptionRun fontDescriptionRun01;
4219 fontDescriptionRun01.characterRun.characterIndex = 0u;
4220 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4221 fontDescriptionRun01.familyLength = fontLatin.size();
4222 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4223 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4224 fontDescriptionRun01.familyDefined = true;
4225 fontDescriptionRun01.weightDefined = false;
4226 fontDescriptionRun01.widthDefined = false;
4227 fontDescriptionRun01.slantDefined = false;
4228 fontDescriptionRun01.sizeDefined = false;
4230 FontDescriptionRun fontDescriptionRun02;
4231 fontDescriptionRun02.characterRun.characterIndex = 12u;
4232 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4233 fontDescriptionRun02.familyLength = fontHebrew.size();
4234 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4235 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4236 fontDescriptionRun02.familyDefined = true;
4237 fontDescriptionRun02.weightDefined = false;
4238 fontDescriptionRun02.widthDefined = false;
4239 fontDescriptionRun02.slantDefined = false;
4240 fontDescriptionRun02.sizeDefined = false;
4242 FontDescriptionRun fontDescriptionRun03;
4243 fontDescriptionRun03.characterRun.characterIndex = 22u;
4244 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4245 fontDescriptionRun03.familyLength = fontArabic.size();
4246 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4247 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4248 fontDescriptionRun03.familyDefined = true;
4249 fontDescriptionRun03.weightDefined = false;
4250 fontDescriptionRun03.widthDefined = false;
4251 fontDescriptionRun03.slantDefined = false;
4252 fontDescriptionRun03.sizeDefined = false;
4254 FontDescriptionRun fontDescriptionRun04;
4255 fontDescriptionRun04.characterRun.characterIndex = 36u;
4256 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4257 fontDescriptionRun04.familyLength = fontLatin.size();
4258 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4259 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4260 fontDescriptionRun04.familyDefined = true;
4261 fontDescriptionRun04.weightDefined = false;
4262 fontDescriptionRun04.widthDefined = false;
4263 fontDescriptionRun04.slantDefined = false;
4264 fontDescriptionRun04.sizeDefined = false;
4266 FontDescriptionRun fontDescriptionRun05;
4267 fontDescriptionRun05.characterRun.characterIndex = 48u;
4268 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4269 fontDescriptionRun05.familyLength = fontLatin.size();
4270 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4271 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4272 fontDescriptionRun05.familyDefined = true;
4273 fontDescriptionRun05.weightDefined = false;
4274 fontDescriptionRun05.widthDefined = false;
4275 fontDescriptionRun05.slantDefined = false;
4276 fontDescriptionRun05.sizeDefined = false;
4278 FontDescriptionRun fontDescriptionRun06;
4279 fontDescriptionRun06.characterRun.characterIndex = 60u;
4280 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4281 fontDescriptionRun06.familyLength = fontArabic.size();
4282 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4283 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4284 fontDescriptionRun06.familyDefined = true;
4285 fontDescriptionRun06.weightDefined = false;
4286 fontDescriptionRun06.widthDefined = false;
4287 fontDescriptionRun06.slantDefined = false;
4288 fontDescriptionRun06.sizeDefined = false;
4290 Vector<FontDescriptionRun> fontDescriptionRuns;
4291 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4292 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4293 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4294 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4295 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4296 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4298 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4300 Size textArea( 100.f, 300.f );
4303 "Begin alignment for the mid paragraph.",
4304 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4307 fontDescriptionRuns.Begin(),
4308 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4309 LayoutEngine::VERTICAL_ALIGN_TOP,
4316 if( !AlignTest( data ) )
4318 tet_result(TET_FAIL);
4321 tet_result(TET_PASS);
4325 int UtcDaliTextAlign03(void)
4327 ToolkitTestApplication application;
4328 tet_infoline(" UtcDaliTextAlign03");
4330 // Calculate text alignment.
4332 const std::string fontLatin( "TizenSans" );
4333 const std::string fontHebrew( "TizenSansHebrew" );
4334 const std::string fontArabic( "TizenSansArabic" );
4336 // Set a known font description
4337 FontDescriptionRun fontDescriptionRun01;
4338 fontDescriptionRun01.characterRun.characterIndex = 0u;
4339 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4340 fontDescriptionRun01.familyLength = fontLatin.size();
4341 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4342 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4343 fontDescriptionRun01.familyDefined = true;
4344 fontDescriptionRun01.weightDefined = false;
4345 fontDescriptionRun01.widthDefined = false;
4346 fontDescriptionRun01.slantDefined = false;
4347 fontDescriptionRun01.sizeDefined = false;
4349 FontDescriptionRun fontDescriptionRun02;
4350 fontDescriptionRun02.characterRun.characterIndex = 12u;
4351 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4352 fontDescriptionRun02.familyLength = fontHebrew.size();
4353 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4354 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4355 fontDescriptionRun02.familyDefined = true;
4356 fontDescriptionRun02.weightDefined = false;
4357 fontDescriptionRun02.widthDefined = false;
4358 fontDescriptionRun02.slantDefined = false;
4359 fontDescriptionRun02.sizeDefined = false;
4361 FontDescriptionRun fontDescriptionRun03;
4362 fontDescriptionRun03.characterRun.characterIndex = 22u;
4363 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4364 fontDescriptionRun03.familyLength = fontArabic.size();
4365 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4366 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4367 fontDescriptionRun03.familyDefined = true;
4368 fontDescriptionRun03.weightDefined = false;
4369 fontDescriptionRun03.widthDefined = false;
4370 fontDescriptionRun03.slantDefined = false;
4371 fontDescriptionRun03.sizeDefined = false;
4373 FontDescriptionRun fontDescriptionRun04;
4374 fontDescriptionRun04.characterRun.characterIndex = 36u;
4375 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4376 fontDescriptionRun04.familyLength = fontLatin.size();
4377 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4378 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4379 fontDescriptionRun04.familyDefined = true;
4380 fontDescriptionRun04.weightDefined = false;
4381 fontDescriptionRun04.widthDefined = false;
4382 fontDescriptionRun04.slantDefined = false;
4383 fontDescriptionRun04.sizeDefined = false;
4385 FontDescriptionRun fontDescriptionRun05;
4386 fontDescriptionRun05.characterRun.characterIndex = 48u;
4387 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4388 fontDescriptionRun05.familyLength = fontLatin.size();
4389 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4390 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4391 fontDescriptionRun05.familyDefined = true;
4392 fontDescriptionRun05.weightDefined = false;
4393 fontDescriptionRun05.widthDefined = false;
4394 fontDescriptionRun05.slantDefined = false;
4395 fontDescriptionRun05.sizeDefined = false;
4397 FontDescriptionRun fontDescriptionRun06;
4398 fontDescriptionRun06.characterRun.characterIndex = 60u;
4399 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4400 fontDescriptionRun06.familyLength = fontArabic.size();
4401 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4402 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4403 fontDescriptionRun06.familyDefined = true;
4404 fontDescriptionRun06.weightDefined = false;
4405 fontDescriptionRun06.widthDefined = false;
4406 fontDescriptionRun06.slantDefined = false;
4407 fontDescriptionRun06.sizeDefined = false;
4409 Vector<FontDescriptionRun> fontDescriptionRuns;
4410 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4411 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4412 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4413 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4414 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4415 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4417 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4419 Size textArea( 100.f, 300.f );
4422 "Begin alignment for the last paragraph.",
4423 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4426 fontDescriptionRuns.Begin(),
4427 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4428 LayoutEngine::VERTICAL_ALIGN_TOP,
4435 if( !AlignTest( data ) )
4437 tet_result(TET_FAIL);
4440 tet_result(TET_PASS);
4444 int UtcDaliTextAlign04(void)
4446 ToolkitTestApplication application;
4447 tet_infoline(" UtcDaliTextAlign04");
4449 // Calculate text alignment.
4451 const std::string fontLatin( "TizenSans" );
4452 const std::string fontHebrew( "TizenSansHebrew" );
4453 const std::string fontArabic( "TizenSansArabic" );
4455 // Set a known font description
4456 FontDescriptionRun fontDescriptionRun01;
4457 fontDescriptionRun01.characterRun.characterIndex = 0u;
4458 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4459 fontDescriptionRun01.familyLength = fontLatin.size();
4460 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4461 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4462 fontDescriptionRun01.familyDefined = true;
4463 fontDescriptionRun01.weightDefined = false;
4464 fontDescriptionRun01.widthDefined = false;
4465 fontDescriptionRun01.slantDefined = false;
4466 fontDescriptionRun01.sizeDefined = false;
4468 FontDescriptionRun fontDescriptionRun02;
4469 fontDescriptionRun02.characterRun.characterIndex = 12u;
4470 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4471 fontDescriptionRun02.familyLength = fontHebrew.size();
4472 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4473 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4474 fontDescriptionRun02.familyDefined = true;
4475 fontDescriptionRun02.weightDefined = false;
4476 fontDescriptionRun02.widthDefined = false;
4477 fontDescriptionRun02.slantDefined = false;
4478 fontDescriptionRun02.sizeDefined = false;
4480 FontDescriptionRun fontDescriptionRun03;
4481 fontDescriptionRun03.characterRun.characterIndex = 22u;
4482 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4483 fontDescriptionRun03.familyLength = fontArabic.size();
4484 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4485 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4486 fontDescriptionRun03.familyDefined = true;
4487 fontDescriptionRun03.weightDefined = false;
4488 fontDescriptionRun03.widthDefined = false;
4489 fontDescriptionRun03.slantDefined = false;
4490 fontDescriptionRun03.sizeDefined = false;
4492 FontDescriptionRun fontDescriptionRun04;
4493 fontDescriptionRun04.characterRun.characterIndex = 36u;
4494 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4495 fontDescriptionRun04.familyLength = fontLatin.size();
4496 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4497 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4498 fontDescriptionRun04.familyDefined = true;
4499 fontDescriptionRun04.weightDefined = false;
4500 fontDescriptionRun04.widthDefined = false;
4501 fontDescriptionRun04.slantDefined = false;
4502 fontDescriptionRun04.sizeDefined = false;
4504 FontDescriptionRun fontDescriptionRun05;
4505 fontDescriptionRun05.characterRun.characterIndex = 48u;
4506 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4507 fontDescriptionRun05.familyLength = fontLatin.size();
4508 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4509 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4510 fontDescriptionRun05.familyDefined = true;
4511 fontDescriptionRun05.weightDefined = false;
4512 fontDescriptionRun05.widthDefined = false;
4513 fontDescriptionRun05.slantDefined = false;
4514 fontDescriptionRun05.sizeDefined = false;
4516 FontDescriptionRun fontDescriptionRun06;
4517 fontDescriptionRun06.characterRun.characterIndex = 60u;
4518 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4519 fontDescriptionRun06.familyLength = fontArabic.size();
4520 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4521 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4522 fontDescriptionRun06.familyDefined = true;
4523 fontDescriptionRun06.weightDefined = false;
4524 fontDescriptionRun06.widthDefined = false;
4525 fontDescriptionRun06.slantDefined = false;
4526 fontDescriptionRun06.sizeDefined = false;
4528 Vector<FontDescriptionRun> fontDescriptionRuns;
4529 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4530 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4531 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4532 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4533 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4534 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4536 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4538 Size textArea( 100.f, 300.f );
4541 "Center alignment for the first paragraph.",
4542 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4545 fontDescriptionRuns.Begin(),
4546 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4547 LayoutEngine::VERTICAL_ALIGN_TOP,
4554 if( !AlignTest( data ) )
4556 tet_result(TET_FAIL);
4559 tet_result(TET_PASS);
4563 int UtcDaliTextAlign05(void)
4565 ToolkitTestApplication application;
4566 tet_infoline(" UtcDaliTextAlign05");
4568 // Calculate text alignment.
4570 const std::string fontLatin( "TizenSans" );
4571 const std::string fontHebrew( "TizenSansHebrew" );
4572 const std::string fontArabic( "TizenSansArabic" );
4574 // Set a known font description
4575 FontDescriptionRun fontDescriptionRun01;
4576 fontDescriptionRun01.characterRun.characterIndex = 0u;
4577 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4578 fontDescriptionRun01.familyLength = fontLatin.size();
4579 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4580 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4581 fontDescriptionRun01.familyDefined = true;
4582 fontDescriptionRun01.weightDefined = false;
4583 fontDescriptionRun01.widthDefined = false;
4584 fontDescriptionRun01.slantDefined = false;
4585 fontDescriptionRun01.sizeDefined = false;
4587 FontDescriptionRun fontDescriptionRun02;
4588 fontDescriptionRun02.characterRun.characterIndex = 12u;
4589 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4590 fontDescriptionRun02.familyLength = fontHebrew.size();
4591 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4592 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4593 fontDescriptionRun02.familyDefined = true;
4594 fontDescriptionRun02.weightDefined = false;
4595 fontDescriptionRun02.widthDefined = false;
4596 fontDescriptionRun02.slantDefined = false;
4597 fontDescriptionRun02.sizeDefined = false;
4599 FontDescriptionRun fontDescriptionRun03;
4600 fontDescriptionRun03.characterRun.characterIndex = 22u;
4601 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4602 fontDescriptionRun03.familyLength = fontArabic.size();
4603 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4604 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4605 fontDescriptionRun03.familyDefined = true;
4606 fontDescriptionRun03.weightDefined = false;
4607 fontDescriptionRun03.widthDefined = false;
4608 fontDescriptionRun03.slantDefined = false;
4609 fontDescriptionRun03.sizeDefined = false;
4611 FontDescriptionRun fontDescriptionRun04;
4612 fontDescriptionRun04.characterRun.characterIndex = 36u;
4613 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4614 fontDescriptionRun04.familyLength = fontLatin.size();
4615 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4616 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4617 fontDescriptionRun04.familyDefined = true;
4618 fontDescriptionRun04.weightDefined = false;
4619 fontDescriptionRun04.widthDefined = false;
4620 fontDescriptionRun04.slantDefined = false;
4621 fontDescriptionRun04.sizeDefined = false;
4623 FontDescriptionRun fontDescriptionRun05;
4624 fontDescriptionRun05.characterRun.characterIndex = 48u;
4625 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4626 fontDescriptionRun05.familyLength = fontLatin.size();
4627 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4628 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4629 fontDescriptionRun05.familyDefined = true;
4630 fontDescriptionRun05.weightDefined = false;
4631 fontDescriptionRun05.widthDefined = false;
4632 fontDescriptionRun05.slantDefined = false;
4633 fontDescriptionRun05.sizeDefined = false;
4635 FontDescriptionRun fontDescriptionRun06;
4636 fontDescriptionRun06.characterRun.characterIndex = 60u;
4637 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4638 fontDescriptionRun06.familyLength = fontArabic.size();
4639 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4640 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4641 fontDescriptionRun06.familyDefined = true;
4642 fontDescriptionRun06.weightDefined = false;
4643 fontDescriptionRun06.widthDefined = false;
4644 fontDescriptionRun06.slantDefined = false;
4645 fontDescriptionRun06.sizeDefined = false;
4647 Vector<FontDescriptionRun> fontDescriptionRuns;
4648 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4649 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4650 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4651 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4652 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4653 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4655 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4657 Size textArea( 100.f, 300.f );
4660 "Center alignment for the mid paragraph.",
4661 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4664 fontDescriptionRuns.Begin(),
4665 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4666 LayoutEngine::VERTICAL_ALIGN_TOP,
4673 if( !AlignTest( data ) )
4675 tet_result(TET_FAIL);
4678 tet_result(TET_PASS);
4682 int UtcDaliTextAlign06(void)
4684 ToolkitTestApplication application;
4685 tet_infoline(" UtcDaliTextAlign06");
4687 // Calculate text alignment.
4689 const std::string fontLatin( "TizenSans" );
4690 const std::string fontHebrew( "TizenSansHebrew" );
4691 const std::string fontArabic( "TizenSansArabic" );
4693 // Set a known font description
4694 FontDescriptionRun fontDescriptionRun01;
4695 fontDescriptionRun01.characterRun.characterIndex = 0u;
4696 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4697 fontDescriptionRun01.familyLength = fontLatin.size();
4698 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4699 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4700 fontDescriptionRun01.familyDefined = true;
4701 fontDescriptionRun01.weightDefined = false;
4702 fontDescriptionRun01.widthDefined = false;
4703 fontDescriptionRun01.slantDefined = false;
4704 fontDescriptionRun01.sizeDefined = false;
4706 FontDescriptionRun fontDescriptionRun02;
4707 fontDescriptionRun02.characterRun.characterIndex = 12u;
4708 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4709 fontDescriptionRun02.familyLength = fontHebrew.size();
4710 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4711 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4712 fontDescriptionRun02.familyDefined = true;
4713 fontDescriptionRun02.weightDefined = false;
4714 fontDescriptionRun02.widthDefined = false;
4715 fontDescriptionRun02.slantDefined = false;
4716 fontDescriptionRun02.sizeDefined = false;
4718 FontDescriptionRun fontDescriptionRun03;
4719 fontDescriptionRun03.characterRun.characterIndex = 22u;
4720 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4721 fontDescriptionRun03.familyLength = fontArabic.size();
4722 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4723 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4724 fontDescriptionRun03.familyDefined = true;
4725 fontDescriptionRun03.weightDefined = false;
4726 fontDescriptionRun03.widthDefined = false;
4727 fontDescriptionRun03.slantDefined = false;
4728 fontDescriptionRun03.sizeDefined = false;
4730 FontDescriptionRun fontDescriptionRun04;
4731 fontDescriptionRun04.characterRun.characterIndex = 36u;
4732 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4733 fontDescriptionRun04.familyLength = fontLatin.size();
4734 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4735 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4736 fontDescriptionRun04.familyDefined = true;
4737 fontDescriptionRun04.weightDefined = false;
4738 fontDescriptionRun04.widthDefined = false;
4739 fontDescriptionRun04.slantDefined = false;
4740 fontDescriptionRun04.sizeDefined = false;
4742 FontDescriptionRun fontDescriptionRun05;
4743 fontDescriptionRun05.characterRun.characterIndex = 48u;
4744 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4745 fontDescriptionRun05.familyLength = fontLatin.size();
4746 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4747 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4748 fontDescriptionRun05.familyDefined = true;
4749 fontDescriptionRun05.weightDefined = false;
4750 fontDescriptionRun05.widthDefined = false;
4751 fontDescriptionRun05.slantDefined = false;
4752 fontDescriptionRun05.sizeDefined = false;
4754 FontDescriptionRun fontDescriptionRun06;
4755 fontDescriptionRun06.characterRun.characterIndex = 60u;
4756 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4757 fontDescriptionRun06.familyLength = fontArabic.size();
4758 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4759 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4760 fontDescriptionRun06.familyDefined = true;
4761 fontDescriptionRun06.weightDefined = false;
4762 fontDescriptionRun06.widthDefined = false;
4763 fontDescriptionRun06.slantDefined = false;
4764 fontDescriptionRun06.sizeDefined = false;
4766 Vector<FontDescriptionRun> fontDescriptionRuns;
4767 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4768 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4769 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4770 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4771 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4772 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4774 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4776 Size textArea( 100.f, 300.f );
4779 "Center alignment for the last paragraph.",
4780 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4783 fontDescriptionRuns.Begin(),
4784 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4785 LayoutEngine::VERTICAL_ALIGN_TOP,
4792 if( !AlignTest( data ) )
4794 tet_result(TET_FAIL);
4797 tet_result(TET_PASS);
4801 int UtcDaliTextAlign07(void)
4803 ToolkitTestApplication application;
4804 tet_infoline(" UtcDaliTextAlign07");
4806 // Calculate text alignment.
4808 const std::string fontLatin( "TizenSans" );
4809 const std::string fontHebrew( "TizenSansHebrew" );
4810 const std::string fontArabic( "TizenSansArabic" );
4812 // Set a known font description
4813 FontDescriptionRun fontDescriptionRun01;
4814 fontDescriptionRun01.characterRun.characterIndex = 0u;
4815 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4816 fontDescriptionRun01.familyLength = fontLatin.size();
4817 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4818 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4819 fontDescriptionRun01.familyDefined = true;
4820 fontDescriptionRun01.weightDefined = false;
4821 fontDescriptionRun01.widthDefined = false;
4822 fontDescriptionRun01.slantDefined = false;
4823 fontDescriptionRun01.sizeDefined = false;
4825 FontDescriptionRun fontDescriptionRun02;
4826 fontDescriptionRun02.characterRun.characterIndex = 12u;
4827 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4828 fontDescriptionRun02.familyLength = fontHebrew.size();
4829 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4830 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4831 fontDescriptionRun02.familyDefined = true;
4832 fontDescriptionRun02.weightDefined = false;
4833 fontDescriptionRun02.widthDefined = false;
4834 fontDescriptionRun02.slantDefined = false;
4835 fontDescriptionRun02.sizeDefined = false;
4837 FontDescriptionRun fontDescriptionRun03;
4838 fontDescriptionRun03.characterRun.characterIndex = 22u;
4839 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4840 fontDescriptionRun03.familyLength = fontArabic.size();
4841 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4842 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4843 fontDescriptionRun03.familyDefined = true;
4844 fontDescriptionRun03.weightDefined = false;
4845 fontDescriptionRun03.widthDefined = false;
4846 fontDescriptionRun03.slantDefined = false;
4847 fontDescriptionRun03.sizeDefined = false;
4849 FontDescriptionRun fontDescriptionRun04;
4850 fontDescriptionRun04.characterRun.characterIndex = 36u;
4851 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4852 fontDescriptionRun04.familyLength = fontLatin.size();
4853 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4854 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4855 fontDescriptionRun04.familyDefined = true;
4856 fontDescriptionRun04.weightDefined = false;
4857 fontDescriptionRun04.widthDefined = false;
4858 fontDescriptionRun04.slantDefined = false;
4859 fontDescriptionRun04.sizeDefined = false;
4861 FontDescriptionRun fontDescriptionRun05;
4862 fontDescriptionRun05.characterRun.characterIndex = 48u;
4863 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4864 fontDescriptionRun05.familyLength = fontLatin.size();
4865 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4866 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4867 fontDescriptionRun05.familyDefined = true;
4868 fontDescriptionRun05.weightDefined = false;
4869 fontDescriptionRun05.widthDefined = false;
4870 fontDescriptionRun05.slantDefined = false;
4871 fontDescriptionRun05.sizeDefined = false;
4873 FontDescriptionRun fontDescriptionRun06;
4874 fontDescriptionRun06.characterRun.characterIndex = 60u;
4875 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4876 fontDescriptionRun06.familyLength = fontArabic.size();
4877 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4878 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4879 fontDescriptionRun06.familyDefined = true;
4880 fontDescriptionRun06.weightDefined = false;
4881 fontDescriptionRun06.widthDefined = false;
4882 fontDescriptionRun06.slantDefined = false;
4883 fontDescriptionRun06.sizeDefined = false;
4885 Vector<FontDescriptionRun> fontDescriptionRuns;
4886 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4887 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4888 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4889 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4890 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4891 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4893 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4895 Size textArea( 100.f, 300.f );
4898 "End alignment for the first paragraph.",
4899 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4902 fontDescriptionRuns.Begin(),
4903 LayoutEngine::HORIZONTAL_ALIGN_END,
4904 LayoutEngine::VERTICAL_ALIGN_TOP,
4911 if( !AlignTest( data ) )
4913 tet_result(TET_FAIL);
4916 tet_result(TET_PASS);
4920 int UtcDaliTextAlign08(void)
4922 ToolkitTestApplication application;
4923 tet_infoline(" UtcDaliTextAlign08");
4925 // Calculate text alignment.
4927 const std::string fontLatin( "TizenSans" );
4928 const std::string fontHebrew( "TizenSansHebrew" );
4929 const std::string fontArabic( "TizenSansArabic" );
4931 // Set a known font description
4932 FontDescriptionRun fontDescriptionRun01;
4933 fontDescriptionRun01.characterRun.characterIndex = 0u;
4934 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4935 fontDescriptionRun01.familyLength = fontLatin.size();
4936 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4937 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4938 fontDescriptionRun01.familyDefined = true;
4939 fontDescriptionRun01.weightDefined = false;
4940 fontDescriptionRun01.widthDefined = false;
4941 fontDescriptionRun01.slantDefined = false;
4942 fontDescriptionRun01.sizeDefined = false;
4944 FontDescriptionRun fontDescriptionRun02;
4945 fontDescriptionRun02.characterRun.characterIndex = 12u;
4946 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4947 fontDescriptionRun02.familyLength = fontHebrew.size();
4948 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4949 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4950 fontDescriptionRun02.familyDefined = true;
4951 fontDescriptionRun02.weightDefined = false;
4952 fontDescriptionRun02.widthDefined = false;
4953 fontDescriptionRun02.slantDefined = false;
4954 fontDescriptionRun02.sizeDefined = false;
4956 FontDescriptionRun fontDescriptionRun03;
4957 fontDescriptionRun03.characterRun.characterIndex = 22u;
4958 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4959 fontDescriptionRun03.familyLength = fontArabic.size();
4960 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4961 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4962 fontDescriptionRun03.familyDefined = true;
4963 fontDescriptionRun03.weightDefined = false;
4964 fontDescriptionRun03.widthDefined = false;
4965 fontDescriptionRun03.slantDefined = false;
4966 fontDescriptionRun03.sizeDefined = false;
4968 FontDescriptionRun fontDescriptionRun04;
4969 fontDescriptionRun04.characterRun.characterIndex = 36u;
4970 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4971 fontDescriptionRun04.familyLength = fontLatin.size();
4972 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4973 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4974 fontDescriptionRun04.familyDefined = true;
4975 fontDescriptionRun04.weightDefined = false;
4976 fontDescriptionRun04.widthDefined = false;
4977 fontDescriptionRun04.slantDefined = false;
4978 fontDescriptionRun04.sizeDefined = false;
4980 FontDescriptionRun fontDescriptionRun05;
4981 fontDescriptionRun05.characterRun.characterIndex = 48u;
4982 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4983 fontDescriptionRun05.familyLength = fontLatin.size();
4984 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4985 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4986 fontDescriptionRun05.familyDefined = true;
4987 fontDescriptionRun05.weightDefined = false;
4988 fontDescriptionRun05.widthDefined = false;
4989 fontDescriptionRun05.slantDefined = false;
4990 fontDescriptionRun05.sizeDefined = false;
4992 FontDescriptionRun fontDescriptionRun06;
4993 fontDescriptionRun06.characterRun.characterIndex = 60u;
4994 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4995 fontDescriptionRun06.familyLength = fontArabic.size();
4996 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4997 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4998 fontDescriptionRun06.familyDefined = true;
4999 fontDescriptionRun06.weightDefined = false;
5000 fontDescriptionRun06.widthDefined = false;
5001 fontDescriptionRun06.slantDefined = false;
5002 fontDescriptionRun06.sizeDefined = false;
5004 Vector<FontDescriptionRun> fontDescriptionRuns;
5005 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5006 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5007 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5008 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5009 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5010 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5012 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
5014 Size textArea( 100.f, 300.f );
5017 "End alignment for the mid paragraph.",
5018 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5021 fontDescriptionRuns.Begin(),
5022 LayoutEngine::HORIZONTAL_ALIGN_END,
5023 LayoutEngine::VERTICAL_ALIGN_TOP,
5030 if( !AlignTest( data ) )
5032 tet_result(TET_FAIL);
5035 tet_result(TET_PASS);
5039 int UtcDaliTextAlign09(void)
5041 ToolkitTestApplication application;
5042 tet_infoline(" UtcDaliTextAlign09");
5044 // Calculate text alignment.
5046 const std::string fontLatin( "TizenSans" );
5047 const std::string fontHebrew( "TizenSansHebrew" );
5048 const std::string fontArabic( "TizenSansArabic" );
5050 // Set a known font description
5051 FontDescriptionRun fontDescriptionRun01;
5052 fontDescriptionRun01.characterRun.characterIndex = 0u;
5053 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5054 fontDescriptionRun01.familyLength = fontLatin.size();
5055 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5056 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5057 fontDescriptionRun01.familyDefined = true;
5058 fontDescriptionRun01.weightDefined = false;
5059 fontDescriptionRun01.widthDefined = false;
5060 fontDescriptionRun01.slantDefined = false;
5061 fontDescriptionRun01.sizeDefined = false;
5063 FontDescriptionRun fontDescriptionRun02;
5064 fontDescriptionRun02.characterRun.characterIndex = 12u;
5065 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5066 fontDescriptionRun02.familyLength = fontHebrew.size();
5067 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5068 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5069 fontDescriptionRun02.familyDefined = true;
5070 fontDescriptionRun02.weightDefined = false;
5071 fontDescriptionRun02.widthDefined = false;
5072 fontDescriptionRun02.slantDefined = false;
5073 fontDescriptionRun02.sizeDefined = false;
5075 FontDescriptionRun fontDescriptionRun03;
5076 fontDescriptionRun03.characterRun.characterIndex = 22u;
5077 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5078 fontDescriptionRun03.familyLength = fontArabic.size();
5079 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5080 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5081 fontDescriptionRun03.familyDefined = true;
5082 fontDescriptionRun03.weightDefined = false;
5083 fontDescriptionRun03.widthDefined = false;
5084 fontDescriptionRun03.slantDefined = false;
5085 fontDescriptionRun03.sizeDefined = false;
5087 FontDescriptionRun fontDescriptionRun04;
5088 fontDescriptionRun04.characterRun.characterIndex = 36u;
5089 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5090 fontDescriptionRun04.familyLength = fontLatin.size();
5091 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5092 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5093 fontDescriptionRun04.familyDefined = true;
5094 fontDescriptionRun04.weightDefined = false;
5095 fontDescriptionRun04.widthDefined = false;
5096 fontDescriptionRun04.slantDefined = false;
5097 fontDescriptionRun04.sizeDefined = false;
5099 FontDescriptionRun fontDescriptionRun05;
5100 fontDescriptionRun05.characterRun.characterIndex = 48u;
5101 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5102 fontDescriptionRun05.familyLength = fontLatin.size();
5103 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5104 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5105 fontDescriptionRun05.familyDefined = true;
5106 fontDescriptionRun05.weightDefined = false;
5107 fontDescriptionRun05.widthDefined = false;
5108 fontDescriptionRun05.slantDefined = false;
5109 fontDescriptionRun05.sizeDefined = false;
5111 FontDescriptionRun fontDescriptionRun06;
5112 fontDescriptionRun06.characterRun.characterIndex = 60u;
5113 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5114 fontDescriptionRun06.familyLength = fontArabic.size();
5115 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5116 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5117 fontDescriptionRun06.familyDefined = true;
5118 fontDescriptionRun06.weightDefined = false;
5119 fontDescriptionRun06.widthDefined = false;
5120 fontDescriptionRun06.slantDefined = false;
5121 fontDescriptionRun06.sizeDefined = false;
5123 Vector<FontDescriptionRun> fontDescriptionRuns;
5124 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5125 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5126 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5127 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5128 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5129 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5131 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5133 Size textArea( 100.f, 300.f );
5136 "End alignment for the last paragraph.",
5137 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5140 fontDescriptionRuns.Begin(),
5141 LayoutEngine::HORIZONTAL_ALIGN_END,
5142 LayoutEngine::VERTICAL_ALIGN_TOP,
5149 if( !AlignTest( data ) )
5151 tet_result(TET_FAIL);
5154 tet_result(TET_PASS);