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 = LogicalModel::New();
90 VisualModelPtr visualModel = VisualModel::New();
93 Vector<FontDescriptionRun> fontDescriptionRuns;
94 if( 0u != data.numberOfFonts )
96 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
97 data.fontDescriptions,
98 data.fontDescriptions + data.numberOfFonts );
101 LayoutOptions options;
102 options.reorder = false;
103 options.align = false;
104 CreateTextModel( data.text,
112 // 2) Clear the layout.
113 Vector<LineRun>& lines = visualModel->mLines;
115 const Length numberOfCharacters = logicalModel->mText.Count();
116 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
117 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
118 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
120 LineIndex startRemoveIndex = 0u;
122 if( 0u != lines.Count() )
124 startRemoveIndex = lines.Count();
125 LineIndex endRemoveIndex = startRemoveIndex;
126 ClearGlyphRuns( data.startIndex,
127 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
132 // Update the character runs of the lines.
133 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
134 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
135 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
136 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
137 ClearCharacterRuns( startCharacterIndex,
138 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
143 lines.Erase( lines.Begin() + startRemoveIndex,
144 lines.Begin() + endRemoveIndex );
147 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
149 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
150 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
153 MetricsPtr metrics = Metrics::New( fontClient );
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;
181 layoutSize = Vector2::ZERO;
183 const bool updated = engine.LayoutText( layoutParameters,
188 // 4) Compare the results.
190 if( updated != data.updated )
192 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
196 if( layoutSize != data.layoutSize )
198 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
202 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
204 const Vector2& position = *( glyphPositions.Begin() + index );
206 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
208 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
211 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
213 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
218 if( lines.Count() != data.numberOfLines )
220 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
224 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
226 const LineRun& line = *( lines.Begin() + index );
227 const LineRun& expectedLine = *( data.lines + index );
229 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
231 std::cout << " Different line info for line : " << index << std::endl;
233 std::cout << " expected" << std::endl;
234 Print( expectedLine );
237 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
239 std::cout << " Different line info for line : " << index << std::endl;
241 std::cout << " expected" << std::endl;
242 Print( expectedLine );
246 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
248 std::cout << " Different line info for line : " << index << std::endl;
250 std::cout << " expected" << std::endl;
251 Print( expectedLine );
254 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
256 std::cout << " Different line info for line : " << index << std::endl;
258 std::cout << " expected" << std::endl;
259 Print( expectedLine );
263 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
265 std::cout << " Different line info for line : " << index << std::endl;
267 std::cout << " expected" << std::endl;
268 Print( expectedLine );
272 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
274 std::cout << " Different line info for line : " << index << std::endl;
276 std::cout << " expected" << std::endl;
277 Print( expectedLine );
281 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
283 std::cout << " Different line info for line : " << index << std::endl;
285 std::cout << " expected" << std::endl;
286 Print( expectedLine );
290 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
292 std::cout << " Different line info for line : " << index << std::endl;
294 std::cout << " expected" << std::endl;
295 Print( expectedLine );
299 if( line.ellipsis != expectedLine.ellipsis )
301 std::cout << " Different line info for line : " << index << std::endl;
303 std::cout << " expected" << std::endl;
304 Print( expectedLine );
308 // Do not compare the alignment offset as it's not calculated in the layout.
309 // Do not compare the line direction as it's not set in the layout.
315 //////////////////////////////////////////////////////////
317 struct ReLayoutRightToLeftLinesData
319 std::string description;
322 unsigned int numberOfFonts;
323 FontDescriptionRun* fontDescriptions;
324 unsigned int totalNumberOfGlyphs;
326 unsigned int startIndex;
327 unsigned int numberOfCharacters;
330 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
333 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
334 fontClient.SetDpi( 96u, 96u );
336 char* pathNamePtr = get_current_dir_name();
337 const std::string pathName( pathNamePtr );
340 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
341 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
342 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
344 // 1) Create the model.
345 LogicalModelPtr logicalModel = LogicalModel::New();
346 VisualModelPtr visualModel = VisualModel::New();
349 Vector<FontDescriptionRun> fontDescriptionRuns;
350 if( 0u != data.numberOfFonts )
352 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
353 data.fontDescriptions,
354 data.fontDescriptions + data.numberOfFonts );
357 LayoutOptions options;
358 options.reorder = false;
359 options.align = false;
360 CreateTextModel( data.text,
368 // 2) Call the ReLayoutRightToLeftLines() method.
369 MetricsPtr metrics = Metrics::New( fontClient );
372 engine.SetMetrics( metrics );
374 LayoutParameters layoutParameters( data.textArea,
375 logicalModel->mText.Begin(),
376 logicalModel->mLineBreakInfo.Begin(),
377 logicalModel->mWordBreakInfo.Begin(),
378 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
379 visualModel->mGlyphs.Begin(),
380 visualModel->mGlyphsToCharacters.Begin(),
381 visualModel->mCharactersPerGlyph.Begin(),
382 visualModel->mCharactersToGlyph.Begin(),
383 visualModel->mGlyphsPerCharacter.Begin(),
384 visualModel->mGlyphs.Count() );
386 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
387 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
389 engine.ReLayoutRightToLeftLines( layoutParameters,
391 data.numberOfCharacters,
392 visualModel->mGlyphPositions );
394 // 3) Compare the results.
395 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
397 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
399 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
403 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
405 const Vector2& position = *( glyphPositions.Begin() + index );
407 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
409 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
412 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
414 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
422 //////////////////////////////////////////////////////////
426 std::string description;
429 unsigned int numberOfFonts;
430 FontDescriptionRun* fontDescriptions;
431 LayoutEngine::HorizontalAlignment horizontalAlignment;
432 LayoutEngine::VerticalAlignment verticalAlignment;
433 unsigned int startIndex;
434 unsigned int numberOfCharacters;
435 unsigned int numberOfLines;
439 bool AlignTest( const AlignData& data )
442 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
443 fontClient.SetDpi( 96u, 96u );
445 char* pathNamePtr = get_current_dir_name();
446 const std::string pathName( pathNamePtr );
449 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
450 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
451 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
453 // 1) Create the model.
454 LogicalModelPtr logicalModel = LogicalModel::New();
455 VisualModelPtr visualModel = VisualModel::New();
458 Vector<FontDescriptionRun> fontDescriptionRuns;
459 if( 0u != data.numberOfFonts )
461 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
462 data.fontDescriptions,
463 data.fontDescriptions + data.numberOfFonts );
466 LayoutOptions options;
467 options.align = false;
468 CreateTextModel( data.text,
476 // Call the Align method.
477 MetricsPtr metrics = Metrics::New( fontClient );
480 engine.SetMetrics( metrics );
482 engine.SetHorizontalAlignment( data.horizontalAlignment );
483 engine.SetVerticalAlignment( data.verticalAlignment );
485 engine.Align( data.textArea,
487 data.numberOfCharacters,
488 visualModel->mLines );
491 if( data.numberOfLines != visualModel->mLines.Count() )
493 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
497 const LineRun* const linesBuffer = visualModel->mLines.Begin();
498 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
500 const LineRun& line = *( linesBuffer + index );
502 if( line.alignmentOffset != *( data.lineOffsets + index ) )
504 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
514 //////////////////////////////////////////////////////////
516 // UtcDaliTextLayoutSetGetLayout
517 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
518 // UtcDaliTextLayoutSetGetHorizontalAlignment
519 // UtcDaliTextLayoutSetGetVerticalAlignment
520 // UtcDaliTextLayoutSetGetCursorWidth
521 // UtcDaliTextLayoutNoText
522 // UtcDaliTextLayoutSmallTextArea01
523 // UtcDaliTextLayoutSmallTextArea02
524 // UtcDaliTextLayoutMultilineText01
525 // UtcDaliTextLayoutMultilineText02
526 // UtcDaliTextLayoutMultilineText03
527 // UtcDaliTextLayoutMultilineText04
528 // UtcDaliTextLayoutMultilineText05
529 // UtcDaliTextUpdateLayout01
530 // UtcDaliTextUpdateLayout02
531 // UtcDaliTextUpdateLayout03
532 // UtcDaliTextLayoutEllipsis01
533 // UtcDaliTextLayoutEllipsis02
534 // UtcDaliTextLayoutEllipsis03
535 // UtcDaliTextLayoutEllipsis04
536 // UtcDaliTextLayoutEllipsis04
537 // UtcDaliTextReorderLayout01
538 // UtcDaliTextReorderLayout02
539 // UtcDaliTextReorderLayout03
540 // UtcDaliTextReorderLayout04
541 // UtcDaliTextAlign01
542 // UtcDaliTextAlign02
543 // UtcDaliTextAlign03
544 // UtcDaliTextAlign04
545 // UtcDaliTextAlign05
546 // UtcDaliTextAlign06
547 // UtcDaliTextAlign07
548 // UtcDaliTextAlign08
549 // UtcDaliTextAlign09
551 //////////////////////////////////////////////////////////
553 int UtcDaliTextLayoutSetGetLayout(void)
555 ToolkitTestApplication application;
556 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
560 DALI_TEST_CHECK( LayoutEngine::SINGLE_LINE_BOX == engine.GetLayout() );
562 engine.SetLayout( LayoutEngine::MULTI_LINE_BOX );
563 DALI_TEST_CHECK( LayoutEngine::MULTI_LINE_BOX == engine.GetLayout() );
565 tet_result(TET_PASS);
569 int UtcDaliTextLayoutSetGetTextEllipsisEnabled(void)
571 ToolkitTestApplication application;
572 tet_infoline(" UtcDaliTextLayoutSetGetTextEllipsisEnabled");
576 DALI_TEST_CHECK( !engine.GetTextEllipsisEnabled() );
578 engine.SetTextEllipsisEnabled( true );
579 DALI_TEST_CHECK( engine.GetTextEllipsisEnabled() );
581 tet_result(TET_PASS);
585 int UtcDaliTextLayoutSetGetHorizontalAlignment(void)
587 ToolkitTestApplication application;
592 DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_BEGIN == engine.GetHorizontalAlignment() );
594 engine.SetHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_END );
595 DALI_TEST_CHECK( LayoutEngine::HORIZONTAL_ALIGN_END == engine.GetHorizontalAlignment() );
597 tet_result(TET_PASS);
601 int UtcDaliTextLayoutSetGetVerticalAlignment(void)
603 ToolkitTestApplication application;
604 tet_infoline(" UtcDaliTextLayoutSetGetVerticalAlignment");
608 DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
610 engine.SetVerticalAlignment( LayoutEngine::VERTICAL_ALIGN_TOP );
611 DALI_TEST_CHECK( LayoutEngine::VERTICAL_ALIGN_TOP == engine.GetVerticalAlignment() );
614 tet_result(TET_PASS);
618 int UtcDaliTextLayoutSetGetCursorWidth(void)
620 ToolkitTestApplication application;
625 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
627 engine.SetCursorWidth( 2 );
628 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
630 tet_result(TET_PASS);
634 int UtcDaliTextLayoutNoText(void)
636 ToolkitTestApplication application;
637 tet_infoline(" UtcDaliTextLayoutNoText");
639 Size textArea(100.f, 60.f);
640 Size layoutSize = Vector2::ZERO;
641 LayoutTextData data =
653 LayoutEngine::MULTI_LINE_BOX,
660 if( !LayoutTextTest( data ) )
662 tet_result(TET_FAIL);
665 tet_result(TET_PASS);
669 int UtcDaliTextLayoutSmallTextArea01(void)
671 ToolkitTestApplication application;
672 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
674 // Won't layout the text in multi-line if the width is too small.
676 const std::string fontFamily( "TizenSans" );
678 // Set a known font description
679 FontDescriptionRun fontDescriptionRun;
680 fontDescriptionRun.characterRun.characterIndex = 0u;
681 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
682 fontDescriptionRun.familyLength = fontFamily.size();
683 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
684 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
685 fontDescriptionRun.familyDefined = true;
686 fontDescriptionRun.weightDefined = false;
687 fontDescriptionRun.widthDefined = false;
688 fontDescriptionRun.slantDefined = false;
689 fontDescriptionRun.sizeDefined = false;
691 Vector<FontDescriptionRun> fontDescriptionRuns;
692 fontDescriptionRuns.PushBack( fontDescriptionRun );
693 Size textArea(1.f, 1.f);
694 Size layoutSize = Vector2::ZERO;
695 LayoutTextData data =
697 "Layout text in a small area",
701 fontDescriptionRuns.Begin(),
707 LayoutEngine::MULTI_LINE_BOX,
714 if( !LayoutTextTest( data ) )
716 tet_result(TET_FAIL);
719 tet_result(TET_PASS);
723 int UtcDaliTextLayoutSmallTextArea02(void)
725 ToolkitTestApplication application;
726 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
728 // Will layout the text in single line as it can be scrolled.
730 const std::string fontFamily( "TizenSans" );
732 // Set a known font description
733 FontDescriptionRun fontDescriptionRun;
734 fontDescriptionRun.characterRun.characterIndex = 0u;
735 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
736 fontDescriptionRun.familyLength = fontFamily.size();
737 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
738 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
739 fontDescriptionRun.familyDefined = true;
740 fontDescriptionRun.weightDefined = false;
741 fontDescriptionRun.widthDefined = false;
742 fontDescriptionRun.slantDefined = false;
743 fontDescriptionRun.sizeDefined = false;
745 Vector<FontDescriptionRun> fontDescriptionRuns;
746 fontDescriptionRuns.PushBack( fontDescriptionRun );
747 Size textArea(1.f, 1.f);
748 Size layoutSize(80.f, 20.f);
749 float positions[] = { 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f };
750 struct LineRun line =
762 Vector<LineRun> lines;
763 lines.PushBack( line );
765 LayoutTextData data =
767 "Layout text in a small area",
771 fontDescriptionRuns.Begin(),
777 LayoutEngine::SINGLE_LINE_BOX,
784 if( !LayoutTextTest( data ) )
786 tet_result(TET_FAIL);
789 tet_result(TET_PASS);
793 int UtcDaliTextLayoutMultilineText01(void)
795 ToolkitTestApplication application;
796 tet_infoline(" UtcDaliTextLayoutMultilineText01");
798 // Layout some lines of left to right text.
800 const std::string fontFamily( "TizenSans" );
802 // Set a known font description
803 FontDescriptionRun fontDescriptionRun1;
804 fontDescriptionRun1.characterRun.characterIndex = 0u;
805 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
806 fontDescriptionRun1.familyLength = fontFamily.size();
807 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
808 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
809 fontDescriptionRun1.familyDefined = true;
810 fontDescriptionRun1.weightDefined = false;
811 fontDescriptionRun1.widthDefined = false;
812 fontDescriptionRun1.slantDefined = false;
813 fontDescriptionRun1.sizeDefined = false;
815 FontDescriptionRun fontDescriptionRun2;
816 fontDescriptionRun2.characterRun.characterIndex = 18u;
817 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
818 fontDescriptionRun2.familyLength = fontFamily.size();
819 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
820 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
821 fontDescriptionRun2.familyDefined = true;
822 fontDescriptionRun2.weightDefined = false;
823 fontDescriptionRun2.widthDefined = false;
824 fontDescriptionRun2.slantDefined = false;
825 fontDescriptionRun2.sizeDefined = false;
827 Vector<FontDescriptionRun> fontDescriptionRuns;
828 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
829 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
830 Size textArea(100.f, 300.f);
831 Size layoutSize(95.f, 97.f);
834 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
835 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 32.f, 42.f, 23.f,
836 1.f, 43.f, 9.f, 46.f, 17.f, 46.f, 27.f, 46.f, 36.f, 46.f, 45.f, 44.f, 51.f, 55.f,
837 1.f, 62.f, 11.f, 62.f, 15.f, 62.f, 26.f, 65.f, 35.f, 65.f, 41.f, 65.f, 50.f, 65.f, 59.f, 63.f, 65.f, 74.f,
838 1.f, 81.f, 5.f, 81.f, 9.f, 84.f, 19.f, 84.f, 28.f, 84.f, 35.f, 93.f, 41.f, 84.f, 50.f, 81.f, 54.f, 93.f, 59.f, 82.f, 66.f, 84.f, 75.f, 84.f, 83.f, 82.f, 91.f, 91.f
840 struct LineRun line0 =
852 struct LineRun line1 =
864 struct LineRun line2 =
876 struct LineRun line3 =
888 struct LineRun line4 =
900 Vector<LineRun> lines;
901 lines.PushBack( line0 );
902 lines.PushBack( line1 );
903 lines.PushBack( line2 );
904 lines.PushBack( line3 );
905 lines.PushBack( line4 );
907 LayoutTextData data =
909 "Layout simple multi-line text",
910 "Hello world demo.\n"
911 "Layout different lines of text.",
914 fontDescriptionRuns.Begin(),
920 LayoutEngine::MULTI_LINE_BOX,
927 if( !LayoutTextTest( data ) )
929 tet_result(TET_FAIL);
932 tet_result(TET_PASS);
936 int UtcDaliTextLayoutMultilineText02(void)
938 ToolkitTestApplication application;
939 tet_infoline(" UtcDaliTextLayoutMultilineText02");
941 // Layout some lines of bidirectional text.
943 const std::string fontFamily1( "TizenSans" );
945 // Set a known font description
946 FontDescriptionRun fontDescriptionRun1;
947 fontDescriptionRun1.characterRun.characterIndex = 0u;
948 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
949 fontDescriptionRun1.familyLength = fontFamily1.size();
950 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
951 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
952 fontDescriptionRun1.familyDefined = true;
953 fontDescriptionRun1.weightDefined = false;
954 fontDescriptionRun1.widthDefined = false;
955 fontDescriptionRun1.slantDefined = false;
956 fontDescriptionRun1.sizeDefined = false;
958 const std::string fontFamily2( "TizenSansHebrew" );
960 // Set a known font description
961 FontDescriptionRun fontDescriptionRun2;
962 fontDescriptionRun2.characterRun.characterIndex = 17u;
963 fontDescriptionRun2.characterRun.numberOfCharacters = 11u;
964 fontDescriptionRun2.familyLength = fontFamily2.size();
965 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
966 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
967 fontDescriptionRun2.familyDefined = true;
968 fontDescriptionRun2.weightDefined = false;
969 fontDescriptionRun2.widthDefined = false;
970 fontDescriptionRun2.slantDefined = false;
971 fontDescriptionRun2.sizeDefined = false;
973 const std::string fontFamily3( "TizenSansHebrew" );
975 // Set a known font description
976 FontDescriptionRun fontDescriptionRun3;
977 fontDescriptionRun3.characterRun.characterIndex = 28u;
978 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
979 fontDescriptionRun3.familyLength = fontFamily3.size();
980 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
981 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
982 fontDescriptionRun3.familyDefined = true;
983 fontDescriptionRun3.weightDefined = false;
984 fontDescriptionRun3.widthDefined = false;
985 fontDescriptionRun3.slantDefined = false;
986 fontDescriptionRun3.sizeDefined = false;
988 const std::string fontFamily4( "TizenSans" );
990 // Set a known font description
991 FontDescriptionRun fontDescriptionRun4;
992 fontDescriptionRun4.characterRun.characterIndex = 38u;
993 fontDescriptionRun4.characterRun.numberOfCharacters = 17u;
994 fontDescriptionRun4.familyLength = fontFamily4.size();
995 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
996 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
997 fontDescriptionRun4.familyDefined = true;
998 fontDescriptionRun4.weightDefined = false;
999 fontDescriptionRun4.widthDefined = false;
1000 fontDescriptionRun4.slantDefined = false;
1001 fontDescriptionRun4.sizeDefined = false;
1003 Vector<FontDescriptionRun> fontDescriptionRuns;
1004 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1005 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1006 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1007 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
1008 Size textArea(100.f, 300.f);
1009 Size layoutSize(81.f, 120.f);
1012 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
1013 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
1014 1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
1015 1.f, 65.f, 12.f, 62.f, 19.f, 65.f, 24.f, 65.f, 32.f, 75.f, 37.f, 65.f, 45.f, 65.f, 50.f, 62.f, 58.f, 65.f, 66.f, 75.f,
1016 1.f, 82.f, 10.f, 86.f, 18.f, 82.f, 22.f, 82.f, 25.f, 86.f, 34.f, 95.f, 38.f, 86.f, 49.f, 86.f, 59.f, 86.f, 65.f, 82.f, 68.f, 82.f, 77.f, 95.f,
1017 0.f, 102.f, 10.f, 106.f, 18.f, 106.f, 30.f, 106.f, 39.f, 112.f
1019 struct LineRun line0 =
1031 struct LineRun line1 =
1043 struct LineRun line2 =
1055 struct LineRun line3 =
1067 struct LineRun line4 =
1079 struct LineRun line5 =
1091 Vector<LineRun> lines;
1092 lines.PushBack( line0 );
1093 lines.PushBack( line1 );
1094 lines.PushBack( line2 );
1095 lines.PushBack( line3 );
1096 lines.PushBack( line4 );
1097 lines.PushBack( line5 );
1099 LayoutTextData data =
1101 "Layout bidirectional text.",
1102 "Hello world demo שלום עולם.\n"
1103 "שלום עולם hello world demo.",
1106 fontDescriptionRuns.Begin(),
1112 LayoutEngine::MULTI_LINE_BOX,
1119 if( !LayoutTextTest( data ) )
1121 tet_result(TET_FAIL);
1124 tet_result(TET_PASS);
1128 int UtcDaliTextLayoutMultilineText03(void)
1130 ToolkitTestApplication application;
1131 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1133 // Layout a long word which doesn't fit in the width of the text area.
1135 const std::string fontFamily( "TizenSans" );
1137 // Set a known font description
1138 FontDescriptionRun fontDescriptionRun;
1139 fontDescriptionRun.characterRun.characterIndex = 0u;
1140 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1141 fontDescriptionRun.familyLength = fontFamily.size();
1142 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1143 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1144 fontDescriptionRun.familyDefined = true;
1145 fontDescriptionRun.weightDefined = false;
1146 fontDescriptionRun.widthDefined = false;
1147 fontDescriptionRun.slantDefined = false;
1148 fontDescriptionRun.sizeDefined = false;
1150 Vector<FontDescriptionRun> fontDescriptionRuns;
1151 fontDescriptionRuns.PushBack( fontDescriptionRun );
1152 Size textArea(100.f, 300.f);
1153 Size layoutSize(96.f, 60.f);
1156 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 6.f, 47.f, 6.f, 57.f, 6.f, 63.f, 2.f, 66.f, 2.f, 75.f, 2.f, 85.f, 6.f,
1157 1.f, 26.f, 13.f, 26.f, 23.f, 22.f, 32.f, 26.f, 40.f, 22.f, 44.f, 22.f, 47.f, 26.f, 56.f, 26.f, 67.f, 26.f, 77.f, 26.f, 83.f, 22.f, 86.f, 22.f,
1158 0.f, 42.f, 10.f, 46.f, 18.f, 46.f, 30.f, 46.f, 39.f, 52.f
1160 struct LineRun line0 =
1172 struct LineRun line1 =
1184 struct LineRun line2 =
1196 Vector<LineRun> lines;
1197 lines.PushBack( line0 );
1198 lines.PushBack( line1 );
1199 lines.PushBack( line2 );
1201 LayoutTextData data =
1203 "Layout a long word which doesn't fit in the width of the text area.",
1204 "Helloworlddemohelloworlddemo.",
1207 fontDescriptionRuns.Begin(),
1213 LayoutEngine::MULTI_LINE_BOX,
1220 if( !LayoutTextTest( data ) )
1222 tet_result(TET_FAIL);
1225 tet_result(TET_PASS);
1229 int UtcDaliTextLayoutMultilineText04(void)
1231 ToolkitTestApplication application;
1232 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1234 // Layout simple text ending with a \n. It has to add a void line at the end.
1236 const std::string fontFamily( "TizenSans" );
1238 // Set a known font description
1239 FontDescriptionRun fontDescriptionRun;
1240 fontDescriptionRun.characterRun.characterIndex = 0u;
1241 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1242 fontDescriptionRun.familyLength = fontFamily.size();
1243 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1244 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1245 fontDescriptionRun.familyDefined = true;
1246 fontDescriptionRun.weightDefined = false;
1247 fontDescriptionRun.widthDefined = false;
1248 fontDescriptionRun.slantDefined = false;
1249 fontDescriptionRun.sizeDefined = false;
1251 Vector<FontDescriptionRun> fontDescriptionRuns;
1252 fontDescriptionRuns.PushBack( fontDescriptionRun );
1253 Size textArea(100.f, 300.f);
1254 Size layoutSize(83.f, 40.f);
1257 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 12.f, 82.f, 3.f
1259 struct LineRun line0 =
1271 struct LineRun line1 =
1283 Vector<LineRun> lines;
1284 lines.PushBack( line0 );
1285 lines.PushBack( line1 );
1287 LayoutTextData data =
1289 "Layout simple text ending with a \n.",
1293 fontDescriptionRuns.Begin(),
1299 LayoutEngine::MULTI_LINE_BOX,
1306 if( !LayoutTextTest( data ) )
1308 tet_result(TET_FAIL);
1311 tet_result(TET_PASS);
1315 int UtcDaliTextLayoutMultilineText05(void)
1317 ToolkitTestApplication application;
1318 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1320 // Layout simple text with one character with a different font size.
1322 const std::string fontFamily( "TizenSans" );
1324 // Set a known font description
1325 FontDescriptionRun fontDescriptionRun1;
1326 fontDescriptionRun1.characterRun.characterIndex = 0u;
1327 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1328 fontDescriptionRun1.familyLength = fontFamily.size();
1329 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1330 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1331 fontDescriptionRun1.familyDefined = true;
1332 fontDescriptionRun1.weightDefined = false;
1333 fontDescriptionRun1.widthDefined = false;
1334 fontDescriptionRun1.slantDefined = false;
1335 fontDescriptionRun1.sizeDefined = false;
1337 FontDescriptionRun fontDescriptionRun2;
1338 fontDescriptionRun2.characterRun.characterIndex = 6u;
1339 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1340 fontDescriptionRun2.familyLength = fontFamily.size();
1341 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1342 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1343 fontDescriptionRun2.size = 1280u;
1344 fontDescriptionRun2.familyDefined = true;
1345 fontDescriptionRun2.weightDefined = false;
1346 fontDescriptionRun2.widthDefined = false;
1347 fontDescriptionRun2.slantDefined = false;
1348 fontDescriptionRun2.sizeDefined = true;
1350 FontDescriptionRun fontDescriptionRun3;
1351 fontDescriptionRun3.characterRun.characterIndex = 7u;
1352 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1353 fontDescriptionRun3.familyLength = fontFamily.size();
1354 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1355 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1356 fontDescriptionRun3.familyDefined = true;
1357 fontDescriptionRun3.weightDefined = false;
1358 fontDescriptionRun3.widthDefined = false;
1359 fontDescriptionRun3.slantDefined = false;
1360 fontDescriptionRun3.sizeDefined = false;
1362 Vector<FontDescriptionRun> fontDescriptionRuns;
1363 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1364 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1365 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1366 Size textArea(100.f, 300.f);
1367 Size layoutSize(88.f, 53.f);
1370 1.f, 13.f, 12.f, 16.f, 20.f, 12.f, 24.f, 12.f, 27.f, 16.f, 36.f, 25.f, 40.f, 11.f, 59.f, 16.f, 69.f, 16.f, 75.f, 12.f, 78.f, 12.f, 87.f, 25.f,
1371 0.f, 35.f, 10.f, 39.f, 18.f, 39.f, 30.f, 39.f, 39.f, 45.f
1373 struct LineRun line0 =
1385 struct LineRun line1 =
1397 Vector<LineRun> lines;
1398 lines.PushBack( line0 );
1399 lines.PushBack( line1 );
1401 LayoutTextData data =
1403 "Layout simple text with one character with a different font size.",
1404 "Hello world demo.",
1407 fontDescriptionRuns.Begin(),
1413 LayoutEngine::MULTI_LINE_BOX,
1420 if( !LayoutTextTest( data ) )
1422 tet_result(TET_FAIL);
1425 tet_result(TET_PASS);
1429 int UtcDaliTextUpdateLayout01(void)
1431 ToolkitTestApplication application;
1432 tet_infoline(" UtcDaliTextUpdateLayout01");
1434 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1436 const std::string fontLatin( "TizenSans" );
1437 const std::string fontHebrew( "TizenSansHebrew" );
1438 const std::string fontArabic( "TizenSansArabic" );
1440 // Set a known font description
1441 FontDescriptionRun fontDescriptionRun01;
1442 fontDescriptionRun01.characterRun.characterIndex = 0u;
1443 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1444 fontDescriptionRun01.familyLength = fontLatin.size();
1445 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1446 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1447 fontDescriptionRun01.familyDefined = true;
1448 fontDescriptionRun01.weightDefined = false;
1449 fontDescriptionRun01.widthDefined = false;
1450 fontDescriptionRun01.slantDefined = false;
1451 fontDescriptionRun01.sizeDefined = false;
1453 // Set a known font description
1454 FontDescriptionRun fontDescriptionRun02;
1455 fontDescriptionRun02.characterRun.characterIndex = 17u;
1456 fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
1457 fontDescriptionRun02.familyLength = fontHebrew.size();
1458 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1459 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1460 fontDescriptionRun02.familyDefined = true;
1461 fontDescriptionRun02.weightDefined = false;
1462 fontDescriptionRun02.widthDefined = false;
1463 fontDescriptionRun02.slantDefined = false;
1464 fontDescriptionRun02.sizeDefined = false;
1466 // Set a known font description
1467 FontDescriptionRun fontDescriptionRun03;
1468 fontDescriptionRun03.characterRun.characterIndex = 28u;
1469 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
1470 fontDescriptionRun03.familyLength = fontArabic.size();
1471 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1472 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
1473 fontDescriptionRun03.familyDefined = true;
1474 fontDescriptionRun03.weightDefined = false;
1475 fontDescriptionRun03.widthDefined = false;
1476 fontDescriptionRun03.slantDefined = false;
1477 fontDescriptionRun03.sizeDefined = false;
1479 // Set a known font description
1480 FontDescriptionRun fontDescriptionRun04;
1481 fontDescriptionRun04.characterRun.characterIndex = 42u;
1482 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
1483 fontDescriptionRun04.familyLength = fontLatin.size();
1484 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1485 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
1486 fontDescriptionRun04.familyDefined = true;
1487 fontDescriptionRun04.weightDefined = false;
1488 fontDescriptionRun04.widthDefined = false;
1489 fontDescriptionRun04.slantDefined = false;
1490 fontDescriptionRun04.sizeDefined = false;
1492 // Set a known font description
1493 FontDescriptionRun fontDescriptionRun05;
1494 fontDescriptionRun05.characterRun.characterIndex = 54u;
1495 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
1496 fontDescriptionRun05.familyLength = fontHebrew.size();
1497 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1498 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
1499 fontDescriptionRun05.familyDefined = true;
1500 fontDescriptionRun05.weightDefined = false;
1501 fontDescriptionRun05.widthDefined = false;
1502 fontDescriptionRun05.slantDefined = false;
1503 fontDescriptionRun05.sizeDefined = false;
1505 // Set a known font description
1506 FontDescriptionRun fontDescriptionRun06;
1507 fontDescriptionRun06.characterRun.characterIndex = 64u;
1508 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1509 fontDescriptionRun06.familyLength = fontHebrew.size();
1510 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1511 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1512 fontDescriptionRun06.familyDefined = true;
1513 fontDescriptionRun06.weightDefined = false;
1514 fontDescriptionRun06.widthDefined = false;
1515 fontDescriptionRun06.slantDefined = false;
1516 fontDescriptionRun06.sizeDefined = false;
1518 // Set a known font description
1519 FontDescriptionRun fontDescriptionRun07;
1520 fontDescriptionRun07.characterRun.characterIndex = 74u;
1521 fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
1522 fontDescriptionRun07.familyLength = fontLatin.size();
1523 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1524 memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
1525 fontDescriptionRun07.familyDefined = true;
1526 fontDescriptionRun07.weightDefined = false;
1527 fontDescriptionRun07.widthDefined = false;
1528 fontDescriptionRun07.slantDefined = false;
1529 fontDescriptionRun07.sizeDefined = false;
1531 // Set a known font description
1532 FontDescriptionRun fontDescriptionRun08;
1533 fontDescriptionRun08.characterRun.characterIndex = 92u;
1534 fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
1535 fontDescriptionRun08.familyLength = fontLatin.size();
1536 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1537 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1538 fontDescriptionRun08.familyDefined = true;
1539 fontDescriptionRun08.weightDefined = false;
1540 fontDescriptionRun08.widthDefined = false;
1541 fontDescriptionRun08.slantDefined = false;
1542 fontDescriptionRun08.sizeDefined = false;
1544 // Set a known font description
1545 FontDescriptionRun fontDescriptionRun09;
1546 fontDescriptionRun09.characterRun.characterIndex = 104u;
1547 fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
1548 fontDescriptionRun09.familyLength = fontArabic.size();
1549 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1550 memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
1551 fontDescriptionRun09.familyDefined = true;
1552 fontDescriptionRun09.weightDefined = false;
1553 fontDescriptionRun09.widthDefined = false;
1554 fontDescriptionRun09.slantDefined = false;
1555 fontDescriptionRun09.sizeDefined = false;
1557 // Set a known font description
1558 FontDescriptionRun fontDescriptionRun10;
1559 fontDescriptionRun10.characterRun.characterIndex = 118u;
1560 fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
1561 fontDescriptionRun10.familyLength = fontHebrew.size();
1562 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1563 memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
1564 fontDescriptionRun10.familyDefined = true;
1565 fontDescriptionRun10.weightDefined = false;
1566 fontDescriptionRun10.widthDefined = false;
1567 fontDescriptionRun10.slantDefined = false;
1568 fontDescriptionRun10.sizeDefined = false;
1570 // Set a known font description
1571 FontDescriptionRun fontDescriptionRun11;
1572 fontDescriptionRun11.characterRun.characterIndex = 128u;
1573 fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
1574 fontDescriptionRun11.familyLength = fontLatin.size();
1575 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1576 memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
1577 fontDescriptionRun11.familyDefined = true;
1578 fontDescriptionRun11.weightDefined = false;
1579 fontDescriptionRun11.widthDefined = false;
1580 fontDescriptionRun11.slantDefined = false;
1581 fontDescriptionRun11.sizeDefined = false;
1583 // Set a known font description
1584 FontDescriptionRun fontDescriptionRun12;
1585 fontDescriptionRun12.characterRun.characterIndex = 145u;
1586 fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
1587 fontDescriptionRun12.familyLength = fontHebrew.size();
1588 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1589 memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
1590 fontDescriptionRun12.familyDefined = true;
1591 fontDescriptionRun12.weightDefined = false;
1592 fontDescriptionRun12.widthDefined = false;
1593 fontDescriptionRun12.slantDefined = false;
1594 fontDescriptionRun12.sizeDefined = false;
1596 // Set a known font description
1597 FontDescriptionRun fontDescriptionRun13;
1598 fontDescriptionRun13.characterRun.characterIndex = 156u;
1599 fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
1600 fontDescriptionRun13.familyLength = fontHebrew.size();
1601 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1602 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1603 fontDescriptionRun13.familyDefined = true;
1604 fontDescriptionRun13.weightDefined = false;
1605 fontDescriptionRun13.widthDefined = false;
1606 fontDescriptionRun13.slantDefined = false;
1607 fontDescriptionRun13.sizeDefined = false;
1609 // Set a known font description
1610 FontDescriptionRun fontDescriptionRun14;
1611 fontDescriptionRun14.characterRun.characterIndex = 166u;
1612 fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
1613 fontDescriptionRun14.familyLength = fontLatin.size();
1614 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1615 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1616 fontDescriptionRun14.familyDefined = true;
1617 fontDescriptionRun14.weightDefined = false;
1618 fontDescriptionRun14.widthDefined = false;
1619 fontDescriptionRun14.slantDefined = false;
1620 fontDescriptionRun14.sizeDefined = false;
1622 // Set a known font description
1623 FontDescriptionRun fontDescriptionRun15;
1624 fontDescriptionRun15.characterRun.characterIndex = 178u;
1625 fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
1626 fontDescriptionRun15.familyLength = fontArabic.size();
1627 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1628 memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
1629 fontDescriptionRun15.familyDefined = true;
1630 fontDescriptionRun15.weightDefined = false;
1631 fontDescriptionRun15.widthDefined = false;
1632 fontDescriptionRun15.slantDefined = false;
1633 fontDescriptionRun15.sizeDefined = false;
1635 Vector<FontDescriptionRun> fontDescriptionRuns;
1636 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1637 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1638 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1639 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1640 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1641 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1642 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1643 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1644 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1645 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1646 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1647 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1648 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1649 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1650 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1651 Size textArea(100.f, 300.f);
1652 Size layoutSize(92.f, 380.f);
1655 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
1656 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
1657 1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
1658 0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
1659 0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
1660 1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
1661 1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
1662 1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
1663 0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
1664 1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
1665 0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
1666 1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
1667 1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
1668 0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
1669 1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
1670 1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
1671 1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
1672 0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
1674 struct LineRun line01 =
1686 struct LineRun line02 =
1698 struct LineRun line03 =
1710 struct LineRun line04 =
1722 struct LineRun line05 =
1734 struct LineRun line06 =
1746 struct LineRun line07 =
1758 struct LineRun line08 =
1770 struct LineRun line09 =
1782 struct LineRun line10 =
1794 struct LineRun line11 =
1806 struct LineRun line12 =
1818 struct LineRun line13 =
1830 struct LineRun line14 =
1842 struct LineRun line15 =
1854 struct LineRun line16 =
1866 struct LineRun line17 =
1878 struct LineRun line18 =
1890 struct LineRun line19 =
1902 Vector<LineRun> lines;
1903 lines.PushBack( line01 );
1904 lines.PushBack( line02 );
1905 lines.PushBack( line03 );
1906 lines.PushBack( line04 );
1907 lines.PushBack( line05 );
1908 lines.PushBack( line06 );
1909 lines.PushBack( line07 );
1910 lines.PushBack( line08 );
1911 lines.PushBack( line09 );
1912 lines.PushBack( line10 );
1913 lines.PushBack( line11 );
1914 lines.PushBack( line12 );
1915 lines.PushBack( line13 );
1916 lines.PushBack( line14 );
1917 lines.PushBack( line15 );
1918 lines.PushBack( line16 );
1919 lines.PushBack( line17 );
1920 lines.PushBack( line18 );
1921 lines.PushBack( line19 );
1923 LayoutTextData data =
1925 "Layout bidirectional text.",
1926 "Hello world demo שלום עולם.\n"
1927 "مرحبا بالعالم hello world שלום עולם\n"
1928 "שלום עולם hello world demo.\n"
1929 "hello world مرحبا بالعالم שלום עולם\n"
1930 "Hello world demo שלום עולם.\n"
1931 "שלום עולם hello world مرحبا بالعالم\n",
1934 fontDescriptionRuns.Begin(),
1940 LayoutEngine::MULTI_LINE_BOX,
1947 if( !LayoutTextTest( data ) )
1949 tet_result(TET_FAIL);
1952 tet_result(TET_PASS);
1956 int UtcDaliTextUpdateLayout02(void)
1958 ToolkitTestApplication application;
1959 tet_infoline(" UtcDaliTextUpdateLayout02");
1961 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1963 const std::string fontLatin( "TizenSans" );
1964 const std::string fontHebrew( "TizenSansHebrew" );
1965 const std::string fontArabic( "TizenSansArabic" );
1967 // Set a known font description
1968 FontDescriptionRun fontDescriptionRun01;
1969 fontDescriptionRun01.characterRun.characterIndex = 0u;
1970 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1971 fontDescriptionRun01.familyLength = fontLatin.size();
1972 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1973 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1974 fontDescriptionRun01.familyDefined = true;
1975 fontDescriptionRun01.weightDefined = false;
1976 fontDescriptionRun01.widthDefined = false;
1977 fontDescriptionRun01.slantDefined = false;
1978 fontDescriptionRun01.sizeDefined = false;
1980 // Set a known font description
1981 FontDescriptionRun fontDescriptionRun02;
1982 fontDescriptionRun02.characterRun.characterIndex = 17u;
1983 fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
1984 fontDescriptionRun02.familyLength = fontHebrew.size();
1985 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1986 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1987 fontDescriptionRun02.familyDefined = true;
1988 fontDescriptionRun02.weightDefined = false;
1989 fontDescriptionRun02.widthDefined = false;
1990 fontDescriptionRun02.slantDefined = false;
1991 fontDescriptionRun02.sizeDefined = false;
1993 // Set a known font description
1994 FontDescriptionRun fontDescriptionRun03;
1995 fontDescriptionRun03.characterRun.characterIndex = 28u;
1996 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
1997 fontDescriptionRun03.familyLength = fontArabic.size();
1998 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1999 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
2000 fontDescriptionRun03.familyDefined = true;
2001 fontDescriptionRun03.weightDefined = false;
2002 fontDescriptionRun03.widthDefined = false;
2003 fontDescriptionRun03.slantDefined = false;
2004 fontDescriptionRun03.sizeDefined = false;
2006 // Set a known font description
2007 FontDescriptionRun fontDescriptionRun04;
2008 fontDescriptionRun04.characterRun.characterIndex = 42u;
2009 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
2010 fontDescriptionRun04.familyLength = fontLatin.size();
2011 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2012 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
2013 fontDescriptionRun04.familyDefined = true;
2014 fontDescriptionRun04.weightDefined = false;
2015 fontDescriptionRun04.widthDefined = false;
2016 fontDescriptionRun04.slantDefined = false;
2017 fontDescriptionRun04.sizeDefined = false;
2019 // Set a known font description
2020 FontDescriptionRun fontDescriptionRun05;
2021 fontDescriptionRun05.characterRun.characterIndex = 54u;
2022 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
2023 fontDescriptionRun05.familyLength = fontHebrew.size();
2024 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2025 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
2026 fontDescriptionRun05.familyDefined = true;
2027 fontDescriptionRun05.weightDefined = false;
2028 fontDescriptionRun05.widthDefined = false;
2029 fontDescriptionRun05.slantDefined = false;
2030 fontDescriptionRun05.sizeDefined = false;
2032 // Set a known font description
2033 FontDescriptionRun fontDescriptionRun06;
2034 fontDescriptionRun06.characterRun.characterIndex = 64u;
2035 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2036 fontDescriptionRun06.familyLength = fontHebrew.size();
2037 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2038 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2039 fontDescriptionRun06.familyDefined = true;
2040 fontDescriptionRun06.weightDefined = false;
2041 fontDescriptionRun06.widthDefined = false;
2042 fontDescriptionRun06.slantDefined = false;
2043 fontDescriptionRun06.sizeDefined = false;
2045 // Set a known font description
2046 FontDescriptionRun fontDescriptionRun07;
2047 fontDescriptionRun07.characterRun.characterIndex = 74u;
2048 fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
2049 fontDescriptionRun07.familyLength = fontLatin.size();
2050 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2051 memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
2052 fontDescriptionRun07.familyDefined = true;
2053 fontDescriptionRun07.weightDefined = false;
2054 fontDescriptionRun07.widthDefined = false;
2055 fontDescriptionRun07.slantDefined = false;
2056 fontDescriptionRun07.sizeDefined = false;
2058 // Set a known font description
2059 FontDescriptionRun fontDescriptionRun08;
2060 fontDescriptionRun08.characterRun.characterIndex = 92u;
2061 fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
2062 fontDescriptionRun08.familyLength = fontLatin.size();
2063 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2064 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2065 fontDescriptionRun08.familyDefined = true;
2066 fontDescriptionRun08.weightDefined = false;
2067 fontDescriptionRun08.widthDefined = false;
2068 fontDescriptionRun08.slantDefined = false;
2069 fontDescriptionRun08.sizeDefined = false;
2071 // Set a known font description
2072 FontDescriptionRun fontDescriptionRun09;
2073 fontDescriptionRun09.characterRun.characterIndex = 104u;
2074 fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
2075 fontDescriptionRun09.familyLength = fontArabic.size();
2076 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2077 memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
2078 fontDescriptionRun09.familyDefined = true;
2079 fontDescriptionRun09.weightDefined = false;
2080 fontDescriptionRun09.widthDefined = false;
2081 fontDescriptionRun09.slantDefined = false;
2082 fontDescriptionRun09.sizeDefined = false;
2084 // Set a known font description
2085 FontDescriptionRun fontDescriptionRun10;
2086 fontDescriptionRun10.characterRun.characterIndex = 118u;
2087 fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
2088 fontDescriptionRun10.familyLength = fontHebrew.size();
2089 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2090 memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
2091 fontDescriptionRun10.familyDefined = true;
2092 fontDescriptionRun10.weightDefined = false;
2093 fontDescriptionRun10.widthDefined = false;
2094 fontDescriptionRun10.slantDefined = false;
2095 fontDescriptionRun10.sizeDefined = false;
2097 // Set a known font description
2098 FontDescriptionRun fontDescriptionRun11;
2099 fontDescriptionRun11.characterRun.characterIndex = 128u;
2100 fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
2101 fontDescriptionRun11.familyLength = fontLatin.size();
2102 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2103 memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
2104 fontDescriptionRun11.familyDefined = true;
2105 fontDescriptionRun11.weightDefined = false;
2106 fontDescriptionRun11.widthDefined = false;
2107 fontDescriptionRun11.slantDefined = false;
2108 fontDescriptionRun11.sizeDefined = false;
2110 // Set a known font description
2111 FontDescriptionRun fontDescriptionRun12;
2112 fontDescriptionRun12.characterRun.characterIndex = 145u;
2113 fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
2114 fontDescriptionRun12.familyLength = fontHebrew.size();
2115 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2116 memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
2117 fontDescriptionRun12.familyDefined = true;
2118 fontDescriptionRun12.weightDefined = false;
2119 fontDescriptionRun12.widthDefined = false;
2120 fontDescriptionRun12.slantDefined = false;
2121 fontDescriptionRun12.sizeDefined = false;
2123 // Set a known font description
2124 FontDescriptionRun fontDescriptionRun13;
2125 fontDescriptionRun13.characterRun.characterIndex = 156u;
2126 fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
2127 fontDescriptionRun13.familyLength = fontHebrew.size();
2128 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2129 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2130 fontDescriptionRun13.familyDefined = true;
2131 fontDescriptionRun13.weightDefined = false;
2132 fontDescriptionRun13.widthDefined = false;
2133 fontDescriptionRun13.slantDefined = false;
2134 fontDescriptionRun13.sizeDefined = false;
2136 // Set a known font description
2137 FontDescriptionRun fontDescriptionRun14;
2138 fontDescriptionRun14.characterRun.characterIndex = 166u;
2139 fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
2140 fontDescriptionRun14.familyLength = fontLatin.size();
2141 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2142 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2143 fontDescriptionRun14.familyDefined = true;
2144 fontDescriptionRun14.weightDefined = false;
2145 fontDescriptionRun14.widthDefined = false;
2146 fontDescriptionRun14.slantDefined = false;
2147 fontDescriptionRun14.sizeDefined = false;
2149 // Set a known font description
2150 FontDescriptionRun fontDescriptionRun15;
2151 fontDescriptionRun15.characterRun.characterIndex = 178u;
2152 fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
2153 fontDescriptionRun15.familyLength = fontArabic.size();
2154 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2155 memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
2156 fontDescriptionRun15.familyDefined = true;
2157 fontDescriptionRun15.weightDefined = false;
2158 fontDescriptionRun15.widthDefined = false;
2159 fontDescriptionRun15.slantDefined = false;
2160 fontDescriptionRun15.sizeDefined = false;
2162 Vector<FontDescriptionRun> fontDescriptionRuns;
2163 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2164 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2165 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2166 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2167 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2168 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2169 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2170 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2171 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2172 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2173 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2174 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2175 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2176 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2177 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2178 Size textArea(100.f, 300.f);
2179 Size layoutSize(92.f, 380.f);
2182 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
2183 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
2184 1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
2185 0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
2186 0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
2187 1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
2188 1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
2189 1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
2190 0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
2191 1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
2192 0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
2193 1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
2194 1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
2195 0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
2196 1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
2197 1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
2198 1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
2199 0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
2201 struct LineRun line01 =
2213 struct LineRun line02 =
2225 struct LineRun line03 =
2237 struct LineRun line04 =
2249 struct LineRun line05 =
2261 struct LineRun line06 =
2273 struct LineRun line07 =
2285 struct LineRun line08 =
2297 struct LineRun line09 =
2309 struct LineRun line10 =
2321 struct LineRun line11 =
2333 struct LineRun line12 =
2345 struct LineRun line13 =
2357 struct LineRun line14 =
2369 struct LineRun line15 =
2381 struct LineRun line16 =
2393 struct LineRun line17 =
2405 struct LineRun line18 =
2417 struct LineRun line19 =
2429 Vector<LineRun> lines;
2430 lines.PushBack( line01 );
2431 lines.PushBack( line02 );
2432 lines.PushBack( line03 );
2433 lines.PushBack( line04 );
2434 lines.PushBack( line05 );
2435 lines.PushBack( line06 );
2436 lines.PushBack( line07 );
2437 lines.PushBack( line08 );
2438 lines.PushBack( line09 );
2439 lines.PushBack( line10 );
2440 lines.PushBack( line11 );
2441 lines.PushBack( line12 );
2442 lines.PushBack( line13 );
2443 lines.PushBack( line14 );
2444 lines.PushBack( line15 );
2445 lines.PushBack( line16 );
2446 lines.PushBack( line17 );
2447 lines.PushBack( line18 );
2448 lines.PushBack( line19 );
2450 LayoutTextData data =
2452 "Layout bidirectional text.",
2453 "Hello world demo שלום עולם.\n"
2454 "مرحبا بالعالم hello world שלום עולם\n"
2455 "שלום עולם hello world demo.\n"
2456 "hello world مرحبا بالعالم שלום עולם\n"
2457 "Hello world demo שלום עולם.\n"
2458 "שלום עולם hello world مرحبا بالعالم\n",
2461 fontDescriptionRuns.Begin(),
2467 LayoutEngine::MULTI_LINE_BOX,
2474 if( !LayoutTextTest( data ) )
2476 tet_result(TET_FAIL);
2479 tet_result(TET_PASS);
2483 int UtcDaliTextUpdateLayout03(void)
2485 ToolkitTestApplication application;
2486 tet_infoline(" UtcDaliTextUpdateLayout03");
2488 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2490 const std::string fontLatin( "TizenSans" );
2491 const std::string fontHebrew( "TizenSansHebrew" );
2492 const std::string fontArabic( "TizenSansArabic" );
2494 // Set a known font description
2495 FontDescriptionRun fontDescriptionRun01;
2496 fontDescriptionRun01.characterRun.characterIndex = 0u;
2497 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2498 fontDescriptionRun01.familyLength = fontLatin.size();
2499 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2500 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2501 fontDescriptionRun01.familyDefined = true;
2502 fontDescriptionRun01.weightDefined = false;
2503 fontDescriptionRun01.widthDefined = false;
2504 fontDescriptionRun01.slantDefined = false;
2505 fontDescriptionRun01.sizeDefined = false;
2507 // Set a known font description
2508 FontDescriptionRun fontDescriptionRun02;
2509 fontDescriptionRun02.characterRun.characterIndex = 17u;
2510 fontDescriptionRun02.characterRun.numberOfCharacters = 11u;
2511 fontDescriptionRun02.familyLength = fontHebrew.size();
2512 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2513 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2514 fontDescriptionRun02.familyDefined = true;
2515 fontDescriptionRun02.weightDefined = false;
2516 fontDescriptionRun02.widthDefined = false;
2517 fontDescriptionRun02.slantDefined = false;
2518 fontDescriptionRun02.sizeDefined = false;
2520 // Set a known font description
2521 FontDescriptionRun fontDescriptionRun03;
2522 fontDescriptionRun03.characterRun.characterIndex = 28u;
2523 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
2524 fontDescriptionRun03.familyLength = fontArabic.size();
2525 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2526 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
2527 fontDescriptionRun03.familyDefined = true;
2528 fontDescriptionRun03.weightDefined = false;
2529 fontDescriptionRun03.widthDefined = false;
2530 fontDescriptionRun03.slantDefined = false;
2531 fontDescriptionRun03.sizeDefined = false;
2533 // Set a known font description
2534 FontDescriptionRun fontDescriptionRun04;
2535 fontDescriptionRun04.characterRun.characterIndex = 42u;
2536 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
2537 fontDescriptionRun04.familyLength = fontLatin.size();
2538 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2539 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
2540 fontDescriptionRun04.familyDefined = true;
2541 fontDescriptionRun04.weightDefined = false;
2542 fontDescriptionRun04.widthDefined = false;
2543 fontDescriptionRun04.slantDefined = false;
2544 fontDescriptionRun04.sizeDefined = false;
2546 // Set a known font description
2547 FontDescriptionRun fontDescriptionRun05;
2548 fontDescriptionRun05.characterRun.characterIndex = 54u;
2549 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
2550 fontDescriptionRun05.familyLength = fontHebrew.size();
2551 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2552 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
2553 fontDescriptionRun05.familyDefined = true;
2554 fontDescriptionRun05.weightDefined = false;
2555 fontDescriptionRun05.widthDefined = false;
2556 fontDescriptionRun05.slantDefined = false;
2557 fontDescriptionRun05.sizeDefined = false;
2559 // Set a known font description
2560 FontDescriptionRun fontDescriptionRun06;
2561 fontDescriptionRun06.characterRun.characterIndex = 64u;
2562 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2563 fontDescriptionRun06.familyLength = fontHebrew.size();
2564 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2565 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2566 fontDescriptionRun06.familyDefined = true;
2567 fontDescriptionRun06.weightDefined = false;
2568 fontDescriptionRun06.widthDefined = false;
2569 fontDescriptionRun06.slantDefined = false;
2570 fontDescriptionRun06.sizeDefined = false;
2572 // Set a known font description
2573 FontDescriptionRun fontDescriptionRun07;
2574 fontDescriptionRun07.characterRun.characterIndex = 74u;
2575 fontDescriptionRun07.characterRun.numberOfCharacters = 18u;
2576 fontDescriptionRun07.familyLength = fontLatin.size();
2577 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2578 memcpy( fontDescriptionRun07.familyName, fontLatin.c_str(), fontDescriptionRun07.familyLength );
2579 fontDescriptionRun07.familyDefined = true;
2580 fontDescriptionRun07.weightDefined = false;
2581 fontDescriptionRun07.widthDefined = false;
2582 fontDescriptionRun07.slantDefined = false;
2583 fontDescriptionRun07.sizeDefined = false;
2585 // Set a known font description
2586 FontDescriptionRun fontDescriptionRun08;
2587 fontDescriptionRun08.characterRun.characterIndex = 92u;
2588 fontDescriptionRun08.characterRun.numberOfCharacters = 12u;
2589 fontDescriptionRun08.familyLength = fontLatin.size();
2590 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2591 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2592 fontDescriptionRun08.familyDefined = true;
2593 fontDescriptionRun08.weightDefined = false;
2594 fontDescriptionRun08.widthDefined = false;
2595 fontDescriptionRun08.slantDefined = false;
2596 fontDescriptionRun08.sizeDefined = false;
2598 // Set a known font description
2599 FontDescriptionRun fontDescriptionRun09;
2600 fontDescriptionRun09.characterRun.characterIndex = 104u;
2601 fontDescriptionRun09.characterRun.numberOfCharacters = 14u;
2602 fontDescriptionRun09.familyLength = fontArabic.size();
2603 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2604 memcpy( fontDescriptionRun09.familyName, fontArabic.c_str(), fontDescriptionRun09.familyLength );
2605 fontDescriptionRun09.familyDefined = true;
2606 fontDescriptionRun09.weightDefined = false;
2607 fontDescriptionRun09.widthDefined = false;
2608 fontDescriptionRun09.slantDefined = false;
2609 fontDescriptionRun09.sizeDefined = false;
2611 // Set a known font description
2612 FontDescriptionRun fontDescriptionRun10;
2613 fontDescriptionRun10.characterRun.characterIndex = 118u;
2614 fontDescriptionRun10.characterRun.numberOfCharacters = 10u;
2615 fontDescriptionRun10.familyLength = fontHebrew.size();
2616 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2617 memcpy( fontDescriptionRun10.familyName, fontHebrew.c_str(), fontDescriptionRun10.familyLength );
2618 fontDescriptionRun10.familyDefined = true;
2619 fontDescriptionRun10.weightDefined = false;
2620 fontDescriptionRun10.widthDefined = false;
2621 fontDescriptionRun10.slantDefined = false;
2622 fontDescriptionRun10.sizeDefined = false;
2624 // Set a known font description
2625 FontDescriptionRun fontDescriptionRun11;
2626 fontDescriptionRun11.characterRun.characterIndex = 128u;
2627 fontDescriptionRun11.characterRun.numberOfCharacters = 17u;
2628 fontDescriptionRun11.familyLength = fontLatin.size();
2629 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2630 memcpy( fontDescriptionRun11.familyName, fontLatin.c_str(), fontDescriptionRun11.familyLength );
2631 fontDescriptionRun11.familyDefined = true;
2632 fontDescriptionRun11.weightDefined = false;
2633 fontDescriptionRun11.widthDefined = false;
2634 fontDescriptionRun11.slantDefined = false;
2635 fontDescriptionRun11.sizeDefined = false;
2637 // Set a known font description
2638 FontDescriptionRun fontDescriptionRun12;
2639 fontDescriptionRun12.characterRun.characterIndex = 145u;
2640 fontDescriptionRun12.characterRun.numberOfCharacters = 11u;
2641 fontDescriptionRun12.familyLength = fontHebrew.size();
2642 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2643 memcpy( fontDescriptionRun12.familyName, fontHebrew.c_str(), fontDescriptionRun12.familyLength );
2644 fontDescriptionRun12.familyDefined = true;
2645 fontDescriptionRun12.weightDefined = false;
2646 fontDescriptionRun12.widthDefined = false;
2647 fontDescriptionRun12.slantDefined = false;
2648 fontDescriptionRun12.sizeDefined = false;
2650 // Set a known font description
2651 FontDescriptionRun fontDescriptionRun13;
2652 fontDescriptionRun13.characterRun.characterIndex = 156u;
2653 fontDescriptionRun13.characterRun.numberOfCharacters = 10u;
2654 fontDescriptionRun13.familyLength = fontHebrew.size();
2655 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2656 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2657 fontDescriptionRun13.familyDefined = true;
2658 fontDescriptionRun13.weightDefined = false;
2659 fontDescriptionRun13.widthDefined = false;
2660 fontDescriptionRun13.slantDefined = false;
2661 fontDescriptionRun13.sizeDefined = false;
2663 // Set a known font description
2664 FontDescriptionRun fontDescriptionRun14;
2665 fontDescriptionRun14.characterRun.characterIndex = 166u;
2666 fontDescriptionRun14.characterRun.numberOfCharacters = 12u;
2667 fontDescriptionRun14.familyLength = fontLatin.size();
2668 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2669 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2670 fontDescriptionRun14.familyDefined = true;
2671 fontDescriptionRun14.weightDefined = false;
2672 fontDescriptionRun14.widthDefined = false;
2673 fontDescriptionRun14.slantDefined = false;
2674 fontDescriptionRun14.sizeDefined = false;
2676 // Set a known font description
2677 FontDescriptionRun fontDescriptionRun15;
2678 fontDescriptionRun15.characterRun.characterIndex = 178u;
2679 fontDescriptionRun15.characterRun.numberOfCharacters = 14u;
2680 fontDescriptionRun15.familyLength = fontArabic.size();
2681 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2682 memcpy( fontDescriptionRun15.familyName, fontArabic.c_str(), fontDescriptionRun15.familyLength );
2683 fontDescriptionRun15.familyDefined = true;
2684 fontDescriptionRun15.weightDefined = false;
2685 fontDescriptionRun15.widthDefined = false;
2686 fontDescriptionRun15.slantDefined = false;
2687 fontDescriptionRun15.sizeDefined = false;
2689 Vector<FontDescriptionRun> fontDescriptionRuns;
2690 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2691 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2692 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2693 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2694 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2695 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2696 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2697 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2698 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2699 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2700 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2701 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2702 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2703 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2704 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2705 Size textArea(100.f, 300.f);
2706 Size layoutSize(92.f, 380.f);
2709 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
2710 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 25.f, 55.f, 22.f, 62.f, 25.f, 67.f, 25.f, 75.f, 35.f,
2711 1.f, 45.f, 9.f, 45.f, 14.f, 42.f, 22.f, 45.f, 32.f, 53.f, 35.f, 44.f,
2712 0.f, 67.f, 7.f, 69.f, 12.f, 68.f, 18.f, 68.f, 23.f, 64.f, 25.f, 75.f, 27.f, 68.f, 32.f, 64.f, 33.f, 64.f, 37.f, 67.f, 44.f, 64.f, 45.f, 64.f, 49.f, 67.f, 55.f, 75.f, 59.f, 62.f, 68.f, 66.f, 76.f, 62.f, 80.f, 62.f, 83.f, 66.f, 92.f, 75.f,
2713 0.f, 86.f, 11.f, 86.f, 21.f, 86.f, 27.f, 82.f, 30.f, 82.f, 39.f, 95.f, 44.f, 85.f, 55.f, 82.f, 62.f, 85.f, 67.f, 85.f, 75.f, 95.f,
2714 1.f, 105.f, 9.f, 105.f, 14.f, 102.f, 22.f, 105.f, 30.f, 115.f,
2715 1.f, 125.f, 12.f, 122.f, 19.f, 125.f, 24.f, 125.f, 32.f, 135.f, 37.f, 125.f, 45.f, 125.f, 50.f, 122.f, 58.f, 125.f, 66.f, 135.f,
2716 1.f, 142.f, 10.f, 146.f, 18.f, 142.f, 22.f, 142.f, 25.f, 146.f, 34.f, 155.f, 38.f, 146.f, 49.f, 146.f, 59.f, 146.f, 65.f, 142.f, 68.f, 142.f, 77.f, 155.f,
2717 0.f, 162.f, 10.f, 166.f, 18.f, 166.f, 30.f, 166.f, 39.f, 172.f, 42.f, 163.f,
2718 1.f, 182.f, 10.f, 186.f, 18.f, 182.f, 22.f, 182.f, 25.f, 186.f, 34.f, 195.f, 38.f, 186.f, 49.f, 186.f, 59.f, 186.f, 65.f, 182.f, 68.f, 182.f, 77.f, 195.f,
2719 0.f, 207.f, 7.f, 209.f, 12.f, 208.f, 18.f, 208.f, 23.f, 204.f, 25.f, 215.f, 27.f, 208.f, 32.f, 204.f, 33.f, 204.f, 37.f, 207.f, 44.f, 204.f, 45.f, 204.f, 49.f, 207.f, 55.f, 215.f, 59.f, 205.f, 70.f, 202.f, 77.f, 205.f, 82.f, 205.f, 90.f, 215.f,
2720 1.f, 225.f, 9.f, 225.f, 14.f, 222.f, 22.f, 225.f, 30.f, 235.f,
2721 1.f, 243.f, 12.f, 246.f, 20.f, 242.f, 24.f, 242.f, 27.f, 246.f, 36.f, 255.f, 40.f, 246.f, 51.f, 246.f, 61.f, 246.f, 67.f, 242.f, 70.f, 242.f, 79.f, 255.f,
2722 0.f, 262.f, 10.f, 266.f, 18.f, 266.f, 30.f, 266.f, 39.f, 275.f, 44.f, 265.f, 55.f, 262.f, 62.f, 265.f, 67.f, 265.f, 75.f, 275.f,
2723 1.f, 285.f, 9.f, 285.f, 14.f, 282.f, 22.f, 285.f, 32.f, 293.f, 35.f, 284.f,
2724 1.f, 305.f, 12.f, 302.f, 19.f, 305.f, 24.f, 305.f, 32.f, 315.f, 37.f, 305.f, 45.f, 305.f, 50.f, 302.f, 58.f, 305.f, 66.f, 315.f,
2725 1.f, 322.f, 10.f, 326.f, 18.f, 322.f, 22.f, 322.f, 25.f, 326.f, 34.f, 335.f, 38.f, 326.f, 49.f, 326.f, 59.f, 326.f, 65.f, 322.f, 68.f, 322.f, 77.f, 335.f,
2726 0.f, 347.f, 7.f, 349.f, 12.f, 348.f, 18.f, 348.f, 23.f, 344.f, 25.f, 355.f, 27.f, 348.f, 32.f, 344.f, 33.f, 344.f, 37.f, 347.f, 44.f, 344.f, 45.f, 344.f, 49.f, 347.f, 55.f, 355.f,
2728 struct LineRun line01 =
2740 struct LineRun line02 =
2752 struct LineRun line03 =
2764 struct LineRun line04 =
2776 struct LineRun line05 =
2788 struct LineRun line06 =
2800 struct LineRun line07 =
2812 struct LineRun line08 =
2824 struct LineRun line09 =
2836 struct LineRun line10 =
2848 struct LineRun line11 =
2860 struct LineRun line12 =
2872 struct LineRun line13 =
2884 struct LineRun line14 =
2896 struct LineRun line15 =
2908 struct LineRun line16 =
2920 struct LineRun line17 =
2932 struct LineRun line18 =
2944 struct LineRun line19 =
2956 Vector<LineRun> lines;
2957 lines.PushBack( line01 );
2958 lines.PushBack( line02 );
2959 lines.PushBack( line03 );
2960 lines.PushBack( line04 );
2961 lines.PushBack( line05 );
2962 lines.PushBack( line06 );
2963 lines.PushBack( line07 );
2964 lines.PushBack( line08 );
2965 lines.PushBack( line09 );
2966 lines.PushBack( line10 );
2967 lines.PushBack( line11 );
2968 lines.PushBack( line12 );
2969 lines.PushBack( line13 );
2970 lines.PushBack( line14 );
2971 lines.PushBack( line15 );
2972 lines.PushBack( line16 );
2973 lines.PushBack( line17 );
2974 lines.PushBack( line18 );
2975 lines.PushBack( line19 );
2977 LayoutTextData data =
2979 "Layout bidirectional text.",
2980 "Hello world demo שלום עולם.\n"
2981 "مرحبا بالعالم hello world שלום עולם\n"
2982 "שלום עולם hello world demo.\n"
2983 "hello world مرحبا بالعالم שלום עולם\n"
2984 "Hello world demo שלום עולם.\n"
2985 "שלום עולם hello world مرحبا بالعالم\n",
2988 fontDescriptionRuns.Begin(),
2994 LayoutEngine::MULTI_LINE_BOX,
3001 if( !LayoutTextTest( data ) )
3003 tet_result(TET_FAIL);
3006 tet_result(TET_PASS);
3010 int UtcDaliTextLayoutEllipsis01(void)
3012 ToolkitTestApplication application;
3013 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3015 // Layout single-line LTR text with ellipsis.
3017 const std::string fontLatin( "TizenSans" );
3019 // Set a known font description
3020 FontDescriptionRun fontDescriptionRun01;
3021 fontDescriptionRun01.characterRun.characterIndex = 0u;
3022 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3023 fontDescriptionRun01.familyLength = fontLatin.size();
3024 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3025 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3026 fontDescriptionRun01.familyDefined = true;
3027 fontDescriptionRun01.weightDefined = false;
3028 fontDescriptionRun01.widthDefined = false;
3029 fontDescriptionRun01.slantDefined = false;
3030 fontDescriptionRun01.sizeDefined = false;
3032 Vector<FontDescriptionRun> fontDescriptionRuns;
3033 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3035 struct LineRun line01 =
3047 Vector<LineRun> lines;
3048 lines.PushBack( line01 );
3052 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f, 83.f, 2.f
3055 Size textArea( 100.f, 50.f );
3056 Size layoutSize( 100.f, 20.f );
3058 LayoutTextData data =
3060 "Layout single-line LTR text with ellipsis.",
3061 "Hello world demo hello world demo hello world demo.",
3064 fontDescriptionRuns.Begin(),
3070 LayoutEngine::SINGLE_LINE_BOX,
3077 if( !LayoutTextTest( data ) )
3079 tet_result(TET_FAIL);
3082 tet_result(TET_PASS);
3086 int UtcDaliTextLayoutEllipsis02(void)
3088 ToolkitTestApplication application;
3089 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3091 // Layout multi-line LTR text with ellipsis.
3093 const std::string fontLatin( "TizenSans" );
3095 // Set a known font description
3096 FontDescriptionRun fontDescriptionRun01;
3097 fontDescriptionRun01.characterRun.characterIndex = 0u;
3098 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3099 fontDescriptionRun01.familyLength = fontLatin.size();
3100 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3101 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3102 fontDescriptionRun01.familyDefined = true;
3103 fontDescriptionRun01.weightDefined = false;
3104 fontDescriptionRun01.widthDefined = false;
3105 fontDescriptionRun01.slantDefined = false;
3106 fontDescriptionRun01.sizeDefined = false;
3108 Vector<FontDescriptionRun> fontDescriptionRuns;
3109 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3111 struct LineRun line01 =
3123 struct LineRun line02 =
3135 Vector<LineRun> lines;
3136 lines.PushBack( line01 );
3137 lines.PushBack( line02 );
3141 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f, 79.f, 15.f,
3142 0.f, 22.f, 10.f, 26.f, 18.f, 26.f, 30.f, 26.f, 39.f, 35.f, 44.f, 22.f, 53.f, 26.f, 61.f, 22.f, 65.f, 22.f, 68.f, 26.f, 77.f, 35.f, 81.f, 26.f
3145 Size textArea( 100.f, 50.f );
3146 Size layoutSize( 100.f, 60.f );
3148 LayoutTextData data =
3150 "Layout multi-line LTR text with ellipsis.",
3151 "Hello world demo hello world demo hello world demo.",
3154 fontDescriptionRuns.Begin(),
3160 LayoutEngine::MULTI_LINE_BOX,
3167 if( !LayoutTextTest( data ) )
3169 tet_result(TET_FAIL);
3172 tet_result(TET_PASS);
3176 int UtcDaliTextLayoutEllipsis03(void)
3178 ToolkitTestApplication application;
3179 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3181 // Layout single-line RTL text with ellipsis.
3183 const std::string fontHebrew( "TizenSansHebrew" );
3184 const std::string fontArabic( "TizenSansArabic" );
3186 // Set a known font description
3187 FontDescriptionRun fontDescriptionRun01;
3188 fontDescriptionRun01.characterRun.characterIndex = 0u;
3189 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3190 fontDescriptionRun01.familyLength = fontHebrew.size();
3191 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3192 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3193 fontDescriptionRun01.familyDefined = true;
3194 fontDescriptionRun01.weightDefined = false;
3195 fontDescriptionRun01.widthDefined = false;
3196 fontDescriptionRun01.slantDefined = false;
3197 fontDescriptionRun01.sizeDefined = false;
3199 FontDescriptionRun fontDescriptionRun02;
3200 fontDescriptionRun02.characterRun.characterIndex = 10u;
3201 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3202 fontDescriptionRun02.familyLength = fontArabic.size();
3203 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3204 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3205 fontDescriptionRun02.familyDefined = true;
3206 fontDescriptionRun02.weightDefined = false;
3207 fontDescriptionRun02.widthDefined = false;
3208 fontDescriptionRun02.slantDefined = false;
3209 fontDescriptionRun02.sizeDefined = false;
3211 FontDescriptionRun fontDescriptionRun03;
3212 fontDescriptionRun03.characterRun.characterIndex = 24u;
3213 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3214 fontDescriptionRun03.familyLength = fontHebrew.size();
3215 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3216 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3217 fontDescriptionRun03.familyDefined = true;
3218 fontDescriptionRun03.weightDefined = false;
3219 fontDescriptionRun03.widthDefined = false;
3220 fontDescriptionRun03.slantDefined = false;
3221 fontDescriptionRun03.sizeDefined = false;
3223 FontDescriptionRun fontDescriptionRun04;
3224 fontDescriptionRun04.characterRun.characterIndex = 34u;
3225 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3226 fontDescriptionRun04.familyLength = fontArabic.size();
3227 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3228 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3229 fontDescriptionRun04.familyDefined = true;
3230 fontDescriptionRun04.weightDefined = false;
3231 fontDescriptionRun04.widthDefined = false;
3232 fontDescriptionRun04.slantDefined = false;
3233 fontDescriptionRun04.sizeDefined = false;
3235 FontDescriptionRun fontDescriptionRun05;
3236 fontDescriptionRun05.characterRun.characterIndex = 48u;
3237 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3238 fontDescriptionRun05.familyLength = fontHebrew.size();
3239 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3240 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3241 fontDescriptionRun05.familyDefined = true;
3242 fontDescriptionRun05.weightDefined = false;
3243 fontDescriptionRun05.widthDefined = false;
3244 fontDescriptionRun05.slantDefined = false;
3245 fontDescriptionRun05.sizeDefined = false;
3247 FontDescriptionRun fontDescriptionRun06;
3248 fontDescriptionRun06.characterRun.characterIndex = 58u;
3249 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3250 fontDescriptionRun06.familyLength = fontArabic.size();
3251 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3252 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3253 fontDescriptionRun06.familyDefined = true;
3254 fontDescriptionRun06.weightDefined = false;
3255 fontDescriptionRun06.widthDefined = false;
3256 fontDescriptionRun06.slantDefined = false;
3257 fontDescriptionRun06.sizeDefined = false;
3259 Vector<FontDescriptionRun> fontDescriptionRuns;
3260 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3261 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3262 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3263 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3264 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3265 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3267 struct LineRun line01 =
3279 Vector<LineRun> lines;
3280 lines.PushBack( line01 );
3284 1.f, 5.f, 12.f, 2.f, 19.f, 5.f, 24.f, 5.f, 32.f, 15.f, 37.f, 5.f, 45.f, 5.f, 50.f, 2.f, 58.f, 5.f, 66.f, 15.f, 69.f, 7.f, 76.f, 9.f, 81.f, 8.f, 87.f, 8.f, 92.f, 4.f, 94.f, 15.f,
3287 Size textArea( 100.f, 50.f );
3288 Size layoutSize( 100.f, 20.f );
3290 LayoutTextData data =
3292 "Layout single-line RTL text with ellipsis.",
3293 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3296 fontDescriptionRuns.Begin(),
3302 LayoutEngine::SINGLE_LINE_BOX,
3309 if( !LayoutTextTest( data ) )
3311 tet_result(TET_FAIL);
3314 tet_result(TET_PASS);
3318 int UtcDaliTextLayoutEllipsis04(void)
3320 ToolkitTestApplication application;
3321 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3323 // Layout multi-line RTL text with ellipsis.
3325 const std::string fontHebrew( "TizenSansHebrew" );
3326 const std::string fontArabic( "TizenSansArabic" );
3328 // Set a known font description
3329 FontDescriptionRun fontDescriptionRun01;
3330 fontDescriptionRun01.characterRun.characterIndex = 0u;
3331 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3332 fontDescriptionRun01.familyLength = fontHebrew.size();
3333 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3334 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3335 fontDescriptionRun01.familyDefined = true;
3336 fontDescriptionRun01.weightDefined = false;
3337 fontDescriptionRun01.widthDefined = false;
3338 fontDescriptionRun01.slantDefined = false;
3339 fontDescriptionRun01.sizeDefined = false;
3341 FontDescriptionRun fontDescriptionRun02;
3342 fontDescriptionRun02.characterRun.characterIndex = 10u;
3343 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3344 fontDescriptionRun02.familyLength = fontArabic.size();
3345 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3346 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3347 fontDescriptionRun02.familyDefined = true;
3348 fontDescriptionRun02.weightDefined = false;
3349 fontDescriptionRun02.widthDefined = false;
3350 fontDescriptionRun02.slantDefined = false;
3351 fontDescriptionRun02.sizeDefined = false;
3353 FontDescriptionRun fontDescriptionRun03;
3354 fontDescriptionRun03.characterRun.characterIndex = 24u;
3355 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3356 fontDescriptionRun03.familyLength = fontHebrew.size();
3357 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3358 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3359 fontDescriptionRun03.familyDefined = true;
3360 fontDescriptionRun03.weightDefined = false;
3361 fontDescriptionRun03.widthDefined = false;
3362 fontDescriptionRun03.slantDefined = false;
3363 fontDescriptionRun03.sizeDefined = false;
3365 FontDescriptionRun fontDescriptionRun04;
3366 fontDescriptionRun04.characterRun.characterIndex = 34u;
3367 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3368 fontDescriptionRun04.familyLength = fontArabic.size();
3369 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3370 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3371 fontDescriptionRun04.familyDefined = true;
3372 fontDescriptionRun04.weightDefined = false;
3373 fontDescriptionRun04.widthDefined = false;
3374 fontDescriptionRun04.slantDefined = false;
3375 fontDescriptionRun04.sizeDefined = false;
3377 FontDescriptionRun fontDescriptionRun05;
3378 fontDescriptionRun05.characterRun.characterIndex = 48u;
3379 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3380 fontDescriptionRun05.familyLength = fontHebrew.size();
3381 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3382 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3383 fontDescriptionRun05.familyDefined = true;
3384 fontDescriptionRun05.weightDefined = false;
3385 fontDescriptionRun05.widthDefined = false;
3386 fontDescriptionRun05.slantDefined = false;
3387 fontDescriptionRun05.sizeDefined = false;
3389 FontDescriptionRun fontDescriptionRun06;
3390 fontDescriptionRun06.characterRun.characterIndex = 58u;
3391 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3392 fontDescriptionRun06.familyLength = fontArabic.size();
3393 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3394 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3395 fontDescriptionRun06.familyDefined = true;
3396 fontDescriptionRun06.weightDefined = false;
3397 fontDescriptionRun06.widthDefined = false;
3398 fontDescriptionRun06.slantDefined = false;
3399 fontDescriptionRun06.sizeDefined = false;
3401 Vector<FontDescriptionRun> fontDescriptionRuns;
3402 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3403 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3404 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3405 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3406 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3407 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3409 struct LineRun line01 =
3421 struct LineRun line02 =
3433 Vector<LineRun> lines;
3434 lines.PushBack( line01 );
3435 lines.PushBack( line02 );
3439 1.f, 5.f, 12.f, 2.f, 19.f, 5.f, 24.f, 5.f, 32.f, 15.f, 37.f, 5.f, 45.f, 5.f, 50.f, 2.f, 58.f, 5.f, 66.f, 15.f, 69.f, 7.f, 76.f, 9.f, 81.f, 8.f, 87.f, 8.f, 92.f, 4.f, 94.f, 15.f,
3440 0.f, 28.f, 5.f, 24.f, 6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f, 32.f, 25.f, 43.f, 22.f, 50.f, 25.f, 55.f, 25.f, 63.f, 35.f, 68.f, 25.f, 76.f, 25.f, 81.f, 22.f, 89.f, 25.f, 97.f, 35.f
3443 Size textArea( 100.f, 50.f );
3444 Size layoutSize( 100.f, 60.f );
3446 LayoutTextData data =
3448 "Layout single-line RTL text with ellipsis.",
3449 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3452 fontDescriptionRuns.Begin(),
3458 LayoutEngine::MULTI_LINE_BOX,
3465 if( !LayoutTextTest( data ) )
3467 tet_result(TET_FAIL);
3470 tet_result(TET_PASS);
3474 int UtcDaliTextReorderLayout01(void)
3476 ToolkitTestApplication application;
3477 tet_infoline(" UtcDaliTextReorderLayout01");
3479 // Reorder lines. No right to left characters.
3481 const std::string fontLatin( "TizenSans" );
3483 // Set a known font description
3484 FontDescriptionRun fontDescriptionRun01;
3485 fontDescriptionRun01.characterRun.characterIndex = 0u;
3486 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3487 fontDescriptionRun01.familyLength = fontLatin.size();
3488 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3489 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3490 fontDescriptionRun01.familyDefined = true;
3491 fontDescriptionRun01.weightDefined = false;
3492 fontDescriptionRun01.widthDefined = false;
3493 fontDescriptionRun01.slantDefined = false;
3494 fontDescriptionRun01.sizeDefined = false;
3496 Vector<FontDescriptionRun> fontDescriptionRuns;
3497 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3501 1.f, 3.f, 12.f, 6.f, 20.f, 2.f, 24.f, 2.f, 27.f, 6.f, 36.f, 15.f, 40.f, 6.f, 51.f, 6.f, 61.f, 6.f, 67.f, 2.f, 70.f, 2.f
3504 Size textArea( 100.f, 300.f );
3506 ReLayoutRightToLeftLinesData data =
3508 "Text with no right to left text.",
3512 fontDescriptionRuns.Begin(),
3519 if( !ReLayoutRightToLeftLinesTest( data ) )
3521 tet_result(TET_FAIL);
3524 tet_result(TET_PASS);
3528 int UtcDaliTextReorderLayout02(void)
3530 ToolkitTestApplication application;
3531 tet_infoline(" UtcDaliTextReorderLayout02");
3533 // Reorder lines of the first paragraph.
3535 const std::string fontHebrew( "TizenSansHebrew" );
3536 const std::string fontArabic( "TizenSansArabic" );
3538 // Set a known font description
3539 FontDescriptionRun fontDescriptionRun01;
3540 fontDescriptionRun01.characterRun.characterIndex = 0u;
3541 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3542 fontDescriptionRun01.familyLength = fontHebrew.size();
3543 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3544 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3545 fontDescriptionRun01.familyDefined = true;
3546 fontDescriptionRun01.weightDefined = false;
3547 fontDescriptionRun01.widthDefined = false;
3548 fontDescriptionRun01.slantDefined = false;
3549 fontDescriptionRun01.sizeDefined = false;
3551 FontDescriptionRun fontDescriptionRun02;
3552 fontDescriptionRun02.characterRun.characterIndex = 10u;
3553 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3554 fontDescriptionRun02.familyLength = fontArabic.size();
3555 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3556 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3557 fontDescriptionRun02.familyDefined = true;
3558 fontDescriptionRun02.weightDefined = false;
3559 fontDescriptionRun02.widthDefined = false;
3560 fontDescriptionRun02.slantDefined = false;
3561 fontDescriptionRun02.sizeDefined = false;
3563 FontDescriptionRun fontDescriptionRun03;
3564 fontDescriptionRun03.characterRun.characterIndex = 24u;
3565 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3566 fontDescriptionRun03.familyLength = fontArabic.size();
3567 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3568 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3569 fontDescriptionRun03.familyDefined = true;
3570 fontDescriptionRun03.weightDefined = false;
3571 fontDescriptionRun03.widthDefined = false;
3572 fontDescriptionRun03.slantDefined = false;
3573 fontDescriptionRun03.sizeDefined = false;
3575 FontDescriptionRun fontDescriptionRun04;
3576 fontDescriptionRun04.characterRun.characterIndex = 38u;
3577 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3578 fontDescriptionRun04.familyLength = fontHebrew.size();
3579 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3580 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3581 fontDescriptionRun04.familyDefined = true;
3582 fontDescriptionRun04.weightDefined = false;
3583 fontDescriptionRun04.widthDefined = false;
3584 fontDescriptionRun04.slantDefined = false;
3585 fontDescriptionRun04.sizeDefined = false;
3587 FontDescriptionRun fontDescriptionRun05;
3588 fontDescriptionRun05.characterRun.characterIndex = 48u;
3589 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3590 fontDescriptionRun05.familyLength = fontHebrew.size();
3591 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3592 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3593 fontDescriptionRun05.familyDefined = true;
3594 fontDescriptionRun05.weightDefined = false;
3595 fontDescriptionRun05.widthDefined = false;
3596 fontDescriptionRun05.slantDefined = false;
3597 fontDescriptionRun05.sizeDefined = false;
3599 FontDescriptionRun fontDescriptionRun06;
3600 fontDescriptionRun06.characterRun.characterIndex = 58u;
3601 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3602 fontDescriptionRun06.familyLength = fontArabic.size();
3603 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3604 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3605 fontDescriptionRun06.familyDefined = true;
3606 fontDescriptionRun06.weightDefined = false;
3607 fontDescriptionRun06.widthDefined = false;
3608 fontDescriptionRun06.slantDefined = false;
3609 fontDescriptionRun06.sizeDefined = false;
3611 Vector<FontDescriptionRun> fontDescriptionRuns;
3612 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3613 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3614 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3615 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3616 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3617 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3621 87.f, 5.f, 79.f, 2.f, 74.f, 5.f, 66.f, 5.f, 61.f, 15.f, 53.f, 5.f, 48.f, 5.f, 41.f, 2.f, 32.f, 5.f, 27.f, 15.f, 20.f, 7.f, 15.f, 9.f, 8.f, 8.f, 5.f, 8.f, 4.f, 4.f, 0.f, 15.f,
3622 23.f, 28.f, 22.f, 24.f, 17.f, 24.f, 12.f, 27.f, 10.f, 24.f, 5.f, 24.f, 0.f, 27.f, 0.f, 35.f,
3623 0.f, 47.f, 7.f, 49.f, 12.f, 48.f, 18.f, 48.f, 23.f, 44.f, 25.f, 55.f, 27.f, 48.f, 32.f, 44.f, 33.f, 44.f, 37.f, 47.f, 44.f, 44.f, 45.f, 44.f, 49.f, 47.f, 55.f, 55.f, 59.f, 45.f, 70.f, 42.f, 77.f, 45.f, 82.f, 45.f, 90.f, 55.f,
3624 1.f, 65.f, 9.f, 65.f, 14.f, 62.f, 22.f, 65.f, 30.f, 75.f,
3625 1.f, 85.f, 12.f, 82.f, 19.f, 85.f, 24.f, 85.f, 32.f, 95.f, 37.f, 85.f, 45.f, 85.f, 50.f, 82.f, 58.f, 85.f, 66.f, 95.f, 69.f, 87.f, 76.f, 89.f, 81.f, 88.f, 87.f, 88.f, 92.f, 84.f, 94.f, 95.f,
3626 0.f, 108.f, 5.f, 104.f, 6.f, 104.f, 10.f, 107.f, 17.f, 104.f, 18.f, 104.f, 22.f, 107.f, 30.f, 113.f
3629 Size textArea( 100.f, 300.f );
3631 ReLayoutRightToLeftLinesData data =
3633 "Paragraphs with right to left text.",
3634 "שלום עולם مرحبا بالعالم\n"
3635 "مرحبا بالعالم שלום עולם\n"
3636 "שלום עולם مرحبا بالعالم.",
3639 fontDescriptionRuns.Begin(),
3646 if( !ReLayoutRightToLeftLinesTest( data ) )
3648 tet_result(TET_FAIL);
3651 tet_result(TET_PASS);
3655 int UtcDaliTextReorderLayout03(void)
3657 ToolkitTestApplication application;
3658 tet_infoline(" UtcDaliTextReorderLayout03");
3660 // Reorder lines of the mid paragraph.
3662 const std::string fontHebrew( "TizenSansHebrew" );
3663 const std::string fontArabic( "TizenSansArabic" );
3665 // Set a known font description
3666 FontDescriptionRun fontDescriptionRun01;
3667 fontDescriptionRun01.characterRun.characterIndex = 0u;
3668 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3669 fontDescriptionRun01.familyLength = fontHebrew.size();
3670 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3671 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3672 fontDescriptionRun01.familyDefined = true;
3673 fontDescriptionRun01.weightDefined = false;
3674 fontDescriptionRun01.widthDefined = false;
3675 fontDescriptionRun01.slantDefined = false;
3676 fontDescriptionRun01.sizeDefined = false;
3678 FontDescriptionRun fontDescriptionRun02;
3679 fontDescriptionRun02.characterRun.characterIndex = 10u;
3680 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3681 fontDescriptionRun02.familyLength = fontArabic.size();
3682 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3683 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3684 fontDescriptionRun02.familyDefined = true;
3685 fontDescriptionRun02.weightDefined = false;
3686 fontDescriptionRun02.widthDefined = false;
3687 fontDescriptionRun02.slantDefined = false;
3688 fontDescriptionRun02.sizeDefined = false;
3690 FontDescriptionRun fontDescriptionRun03;
3691 fontDescriptionRun03.characterRun.characterIndex = 24u;
3692 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3693 fontDescriptionRun03.familyLength = fontArabic.size();
3694 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3695 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3696 fontDescriptionRun03.familyDefined = true;
3697 fontDescriptionRun03.weightDefined = false;
3698 fontDescriptionRun03.widthDefined = false;
3699 fontDescriptionRun03.slantDefined = false;
3700 fontDescriptionRun03.sizeDefined = false;
3702 FontDescriptionRun fontDescriptionRun04;
3703 fontDescriptionRun04.characterRun.characterIndex = 38u;
3704 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3705 fontDescriptionRun04.familyLength = fontHebrew.size();
3706 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3707 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3708 fontDescriptionRun04.familyDefined = true;
3709 fontDescriptionRun04.weightDefined = false;
3710 fontDescriptionRun04.widthDefined = false;
3711 fontDescriptionRun04.slantDefined = false;
3712 fontDescriptionRun04.sizeDefined = false;
3714 FontDescriptionRun fontDescriptionRun05;
3715 fontDescriptionRun05.characterRun.characterIndex = 48u;
3716 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3717 fontDescriptionRun05.familyLength = fontHebrew.size();
3718 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3719 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3720 fontDescriptionRun05.familyDefined = true;
3721 fontDescriptionRun05.weightDefined = false;
3722 fontDescriptionRun05.widthDefined = false;
3723 fontDescriptionRun05.slantDefined = false;
3724 fontDescriptionRun05.sizeDefined = false;
3726 FontDescriptionRun fontDescriptionRun06;
3727 fontDescriptionRun06.characterRun.characterIndex = 58u;
3728 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3729 fontDescriptionRun06.familyLength = fontArabic.size();
3730 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3731 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3732 fontDescriptionRun06.familyDefined = true;
3733 fontDescriptionRun06.weightDefined = false;
3734 fontDescriptionRun06.widthDefined = false;
3735 fontDescriptionRun06.slantDefined = false;
3736 fontDescriptionRun06.sizeDefined = false;
3738 Vector<FontDescriptionRun> fontDescriptionRuns;
3739 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3740 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3741 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3742 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3743 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3744 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3748 1.f, 5.f, 12.f, 2.f, 19.f, 5.f, 24.f, 5.f, 32.f, 15.f, 37.f, 5.f, 45.f, 5.f, 50.f, 2.f, 58.f, 5.f, 66.f, 15.f, 69.f, 7.f, 76.f, 9.f, 81.f, 8.f, 87.f, 8.f, 92.f, 4.f, 94.f, 15.f,
3749 0.f, 28.f, 5.f, 24.f, 6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f,
3750 86.f, 47.f, 81.f, 49.f, 74.f, 48.f, 71.f, 48.f, 70.f, 44.f, 66.f, 55.f, 62.f, 48.f, 61.f, 44.f, 56.f, 44.f, 51.f, 47.f, 49.f, 44.f, 44.f, 44.f, 39.f, 47.f, 36.f, 55.f, 26.f, 45.f, 18.f, 42.f, 13.f, 45.f, 5.f, 45.f, 0.f, 55.f,
3751 22.f, 65.f, 17.f, 65.f, 10.f, 62.f, 1.f, 65.f, 0.f, 75.f,
3752 1.f, 85.f, 12.f, 82.f, 19.f, 85.f, 24.f, 85.f, 32.f, 95.f, 37.f, 85.f, 45.f, 85.f, 50.f, 82.f, 58.f, 85.f, 66.f, 95.f, 69.f, 87.f, 76.f, 89.f, 81.f, 88.f, 87.f, 88.f, 92.f, 84.f, 94.f, 95.f,
3753 0.f, 108.f, 5.f, 104.f, 6.f, 104.f, 10.f, 107.f, 17.f, 104.f, 18.f, 104.f, 22.f, 107.f, 30.f, 113.f
3756 Size textArea( 100.f, 300.f );
3758 ReLayoutRightToLeftLinesData data =
3760 "Paragraphs with right to left text.",
3761 "שלום עולם مرحبا بالعالم\n"
3762 "مرحبا بالعالم שלום עולם\n"
3763 "שלום עולם مرحبا بالعالم.",
3766 fontDescriptionRuns.Begin(),
3773 if( !ReLayoutRightToLeftLinesTest( data ) )
3775 tet_result(TET_FAIL);
3778 tet_result(TET_PASS);
3782 int UtcDaliTextReorderLayout04(void)
3784 ToolkitTestApplication application;
3785 tet_infoline(" UtcDaliTextReorderLayout04");
3787 // Reorder lines of the last paragraph.
3789 const std::string fontHebrew( "TizenSansHebrew" );
3790 const std::string fontArabic( "TizenSansArabic" );
3792 // Set a known font description
3793 FontDescriptionRun fontDescriptionRun01;
3794 fontDescriptionRun01.characterRun.characterIndex = 0u;
3795 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3796 fontDescriptionRun01.familyLength = fontHebrew.size();
3797 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3798 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3799 fontDescriptionRun01.familyDefined = true;
3800 fontDescriptionRun01.weightDefined = false;
3801 fontDescriptionRun01.widthDefined = false;
3802 fontDescriptionRun01.slantDefined = false;
3803 fontDescriptionRun01.sizeDefined = false;
3805 FontDescriptionRun fontDescriptionRun02;
3806 fontDescriptionRun02.characterRun.characterIndex = 10u;
3807 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3808 fontDescriptionRun02.familyLength = fontArabic.size();
3809 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3810 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3811 fontDescriptionRun02.familyDefined = true;
3812 fontDescriptionRun02.weightDefined = false;
3813 fontDescriptionRun02.widthDefined = false;
3814 fontDescriptionRun02.slantDefined = false;
3815 fontDescriptionRun02.sizeDefined = false;
3817 FontDescriptionRun fontDescriptionRun03;
3818 fontDescriptionRun03.characterRun.characterIndex = 24u;
3819 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3820 fontDescriptionRun03.familyLength = fontArabic.size();
3821 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3822 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3823 fontDescriptionRun03.familyDefined = true;
3824 fontDescriptionRun03.weightDefined = false;
3825 fontDescriptionRun03.widthDefined = false;
3826 fontDescriptionRun03.slantDefined = false;
3827 fontDescriptionRun03.sizeDefined = false;
3829 FontDescriptionRun fontDescriptionRun04;
3830 fontDescriptionRun04.characterRun.characterIndex = 38u;
3831 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3832 fontDescriptionRun04.familyLength = fontHebrew.size();
3833 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3834 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3835 fontDescriptionRun04.familyDefined = true;
3836 fontDescriptionRun04.weightDefined = false;
3837 fontDescriptionRun04.widthDefined = false;
3838 fontDescriptionRun04.slantDefined = false;
3839 fontDescriptionRun04.sizeDefined = false;
3841 FontDescriptionRun fontDescriptionRun05;
3842 fontDescriptionRun05.characterRun.characterIndex = 48u;
3843 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3844 fontDescriptionRun05.familyLength = fontHebrew.size();
3845 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3846 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3847 fontDescriptionRun05.familyDefined = true;
3848 fontDescriptionRun05.weightDefined = false;
3849 fontDescriptionRun05.widthDefined = false;
3850 fontDescriptionRun05.slantDefined = false;
3851 fontDescriptionRun05.sizeDefined = false;
3853 FontDescriptionRun fontDescriptionRun06;
3854 fontDescriptionRun06.characterRun.characterIndex = 58u;
3855 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3856 fontDescriptionRun06.familyLength = fontArabic.size();
3857 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3858 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3859 fontDescriptionRun06.familyDefined = true;
3860 fontDescriptionRun06.weightDefined = false;
3861 fontDescriptionRun06.widthDefined = false;
3862 fontDescriptionRun06.slantDefined = false;
3863 fontDescriptionRun06.sizeDefined = false;
3865 Vector<FontDescriptionRun> fontDescriptionRuns;
3866 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3867 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3868 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3869 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3870 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3871 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3875 1.f, 5.f, 12.f, 2.f, 19.f, 5.f, 24.f, 5.f, 32.f, 15.f, 37.f, 5.f, 45.f, 5.f, 50.f, 2.f, 58.f, 5.f, 66.f, 15.f, 69.f, 7.f, 76.f, 9.f, 81.f, 8.f, 87.f, 8.f, 92.f, 4.f, 94.f, 15.f,
3876 0.f, 28.f, 5.f, 24.f, 6.f, 24.f, 10.f, 27.f, 17.f, 24.f, 18.f, 24.f, 22.f, 27.f, 28.f, 35.f,
3877 0.f, 47.f, 7.f, 49.f, 12.f, 48.f, 18.f, 48.f, 23.f, 44.f, 25.f, 55.f, 27.f, 48.f, 32.f, 44.f, 33.f, 44.f, 37.f, 47.f, 44.f, 44.f, 45.f, 44.f, 49.f, 47.f, 55.f, 55.f, 59.f, 45.f, 70.f, 42.f, 77.f, 45.f, 82.f, 45.f, 90.f, 55.f,
3878 1.f, 65.f, 9.f, 65.f, 14.f, 62.f, 22.f, 65.f, 30.f, 75.f,
3879 87.f, 85.f, 79.f, 82.f, 74.f, 85.f, 66.f, 85.f, 61.f, 95.f, 53.f, 85.f, 48.f, 85.f, 41.f, 82.f, 32.f, 85.f, 27.f, 95.f, 20.f, 87.f, 15.f, 89.f, 8.f, 88.f, 5.f, 88.f, 4.f, 84.f, 0.f, 95.f,
3880 28.f, 108.f, 27.f, 104.f, 22.f, 104.f, 17.f, 107.f, 15.f, 104.f, 10.f, 104.f, 5.f, 107.f, 2.f, 113.f
3883 Size textArea( 100.f, 300.f );
3885 ReLayoutRightToLeftLinesData data =
3887 "Paragraphs with right to left text.",
3888 "שלום עולם مرحبا بالعالم\n"
3889 "مرحبا بالعالم שלום עולם\n"
3890 "שלום עולם مرحبا بالعالم.",
3893 fontDescriptionRuns.Begin(),
3900 if( !ReLayoutRightToLeftLinesTest( data ) )
3902 tet_result(TET_FAIL);
3905 tet_result(TET_PASS);
3909 int UtcDaliTextAlign01(void)
3911 ToolkitTestApplication application;
3912 tet_infoline(" UtcDaliTextAlign01");
3914 // Calculate text alignment.
3916 const std::string fontLatin( "TizenSans" );
3917 const std::string fontHebrew( "TizenSansHebrew" );
3918 const std::string fontArabic( "TizenSansArabic" );
3920 // Set a known font description
3921 FontDescriptionRun fontDescriptionRun01;
3922 fontDescriptionRun01.characterRun.characterIndex = 0u;
3923 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
3924 fontDescriptionRun01.familyLength = fontLatin.size();
3925 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3926 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3927 fontDescriptionRun01.familyDefined = true;
3928 fontDescriptionRun01.weightDefined = false;
3929 fontDescriptionRun01.widthDefined = false;
3930 fontDescriptionRun01.slantDefined = false;
3931 fontDescriptionRun01.sizeDefined = false;
3933 FontDescriptionRun fontDescriptionRun02;
3934 fontDescriptionRun02.characterRun.characterIndex = 12u;
3935 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
3936 fontDescriptionRun02.familyLength = fontHebrew.size();
3937 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3938 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
3939 fontDescriptionRun02.familyDefined = true;
3940 fontDescriptionRun02.weightDefined = false;
3941 fontDescriptionRun02.widthDefined = false;
3942 fontDescriptionRun02.slantDefined = false;
3943 fontDescriptionRun02.sizeDefined = false;
3945 FontDescriptionRun fontDescriptionRun03;
3946 fontDescriptionRun03.characterRun.characterIndex = 22u;
3947 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3948 fontDescriptionRun03.familyLength = fontArabic.size();
3949 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3950 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3951 fontDescriptionRun03.familyDefined = true;
3952 fontDescriptionRun03.weightDefined = false;
3953 fontDescriptionRun03.widthDefined = false;
3954 fontDescriptionRun03.slantDefined = false;
3955 fontDescriptionRun03.sizeDefined = false;
3957 FontDescriptionRun fontDescriptionRun04;
3958 fontDescriptionRun04.characterRun.characterIndex = 36u;
3959 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
3960 fontDescriptionRun04.familyLength = fontLatin.size();
3961 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3962 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
3963 fontDescriptionRun04.familyDefined = true;
3964 fontDescriptionRun04.weightDefined = false;
3965 fontDescriptionRun04.widthDefined = false;
3966 fontDescriptionRun04.slantDefined = false;
3967 fontDescriptionRun04.sizeDefined = false;
3969 FontDescriptionRun fontDescriptionRun05;
3970 fontDescriptionRun05.characterRun.characterIndex = 48u;
3971 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3972 fontDescriptionRun05.familyLength = fontLatin.size();
3973 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3974 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
3975 fontDescriptionRun05.familyDefined = true;
3976 fontDescriptionRun05.weightDefined = false;
3977 fontDescriptionRun05.widthDefined = false;
3978 fontDescriptionRun05.slantDefined = false;
3979 fontDescriptionRun05.sizeDefined = false;
3981 FontDescriptionRun fontDescriptionRun06;
3982 fontDescriptionRun06.characterRun.characterIndex = 60u;
3983 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
3984 fontDescriptionRun06.familyLength = fontArabic.size();
3985 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3986 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3987 fontDescriptionRun06.familyDefined = true;
3988 fontDescriptionRun06.weightDefined = false;
3989 fontDescriptionRun06.widthDefined = false;
3990 fontDescriptionRun06.slantDefined = false;
3991 fontDescriptionRun06.sizeDefined = false;
3993 Vector<FontDescriptionRun> fontDescriptionRuns;
3994 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3995 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3996 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3997 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3998 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3999 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4001 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4003 Size textArea( 100.f, 300.f );
4006 "Begin alignment for the first paragraph.",
4007 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4010 fontDescriptionRuns.Begin(),
4011 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4012 LayoutEngine::VERTICAL_ALIGN_TOP,
4019 if( !AlignTest( data ) )
4021 tet_result(TET_FAIL);
4024 tet_result(TET_PASS);
4028 int UtcDaliTextAlign02(void)
4030 ToolkitTestApplication application;
4031 tet_infoline(" UtcDaliTextAlign02");
4033 // Calculate text alignment.
4035 const std::string fontLatin( "TizenSans" );
4036 const std::string fontHebrew( "TizenSansHebrew" );
4037 const std::string fontArabic( "TizenSansArabic" );
4039 // Set a known font description
4040 FontDescriptionRun fontDescriptionRun01;
4041 fontDescriptionRun01.characterRun.characterIndex = 0u;
4042 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4043 fontDescriptionRun01.familyLength = fontLatin.size();
4044 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4045 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4046 fontDescriptionRun01.familyDefined = true;
4047 fontDescriptionRun01.weightDefined = false;
4048 fontDescriptionRun01.widthDefined = false;
4049 fontDescriptionRun01.slantDefined = false;
4050 fontDescriptionRun01.sizeDefined = false;
4052 FontDescriptionRun fontDescriptionRun02;
4053 fontDescriptionRun02.characterRun.characterIndex = 12u;
4054 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4055 fontDescriptionRun02.familyLength = fontHebrew.size();
4056 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4057 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4058 fontDescriptionRun02.familyDefined = true;
4059 fontDescriptionRun02.weightDefined = false;
4060 fontDescriptionRun02.widthDefined = false;
4061 fontDescriptionRun02.slantDefined = false;
4062 fontDescriptionRun02.sizeDefined = false;
4064 FontDescriptionRun fontDescriptionRun03;
4065 fontDescriptionRun03.characterRun.characterIndex = 22u;
4066 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4067 fontDescriptionRun03.familyLength = fontArabic.size();
4068 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4069 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4070 fontDescriptionRun03.familyDefined = true;
4071 fontDescriptionRun03.weightDefined = false;
4072 fontDescriptionRun03.widthDefined = false;
4073 fontDescriptionRun03.slantDefined = false;
4074 fontDescriptionRun03.sizeDefined = false;
4076 FontDescriptionRun fontDescriptionRun04;
4077 fontDescriptionRun04.characterRun.characterIndex = 36u;
4078 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4079 fontDescriptionRun04.familyLength = fontLatin.size();
4080 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4081 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4082 fontDescriptionRun04.familyDefined = true;
4083 fontDescriptionRun04.weightDefined = false;
4084 fontDescriptionRun04.widthDefined = false;
4085 fontDescriptionRun04.slantDefined = false;
4086 fontDescriptionRun04.sizeDefined = false;
4088 FontDescriptionRun fontDescriptionRun05;
4089 fontDescriptionRun05.characterRun.characterIndex = 48u;
4090 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4091 fontDescriptionRun05.familyLength = fontLatin.size();
4092 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4093 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4094 fontDescriptionRun05.familyDefined = true;
4095 fontDescriptionRun05.weightDefined = false;
4096 fontDescriptionRun05.widthDefined = false;
4097 fontDescriptionRun05.slantDefined = false;
4098 fontDescriptionRun05.sizeDefined = false;
4100 FontDescriptionRun fontDescriptionRun06;
4101 fontDescriptionRun06.characterRun.characterIndex = 60u;
4102 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4103 fontDescriptionRun06.familyLength = fontArabic.size();
4104 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4105 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4106 fontDescriptionRun06.familyDefined = true;
4107 fontDescriptionRun06.weightDefined = false;
4108 fontDescriptionRun06.widthDefined = false;
4109 fontDescriptionRun06.slantDefined = false;
4110 fontDescriptionRun06.sizeDefined = false;
4112 Vector<FontDescriptionRun> fontDescriptionRuns;
4113 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4114 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4115 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4116 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4117 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4118 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4120 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4122 Size textArea( 100.f, 300.f );
4125 "Begin alignment for the mid paragraph.",
4126 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4129 fontDescriptionRuns.Begin(),
4130 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4131 LayoutEngine::VERTICAL_ALIGN_TOP,
4138 if( !AlignTest( data ) )
4140 tet_result(TET_FAIL);
4143 tet_result(TET_PASS);
4147 int UtcDaliTextAlign03(void)
4149 ToolkitTestApplication application;
4150 tet_infoline(" UtcDaliTextAlign03");
4152 // Calculate text alignment.
4154 const std::string fontLatin( "TizenSans" );
4155 const std::string fontHebrew( "TizenSansHebrew" );
4156 const std::string fontArabic( "TizenSansArabic" );
4158 // Set a known font description
4159 FontDescriptionRun fontDescriptionRun01;
4160 fontDescriptionRun01.characterRun.characterIndex = 0u;
4161 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4162 fontDescriptionRun01.familyLength = fontLatin.size();
4163 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4164 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4165 fontDescriptionRun01.familyDefined = true;
4166 fontDescriptionRun01.weightDefined = false;
4167 fontDescriptionRun01.widthDefined = false;
4168 fontDescriptionRun01.slantDefined = false;
4169 fontDescriptionRun01.sizeDefined = false;
4171 FontDescriptionRun fontDescriptionRun02;
4172 fontDescriptionRun02.characterRun.characterIndex = 12u;
4173 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4174 fontDescriptionRun02.familyLength = fontHebrew.size();
4175 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4176 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4177 fontDescriptionRun02.familyDefined = true;
4178 fontDescriptionRun02.weightDefined = false;
4179 fontDescriptionRun02.widthDefined = false;
4180 fontDescriptionRun02.slantDefined = false;
4181 fontDescriptionRun02.sizeDefined = false;
4183 FontDescriptionRun fontDescriptionRun03;
4184 fontDescriptionRun03.characterRun.characterIndex = 22u;
4185 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4186 fontDescriptionRun03.familyLength = fontArabic.size();
4187 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4188 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4189 fontDescriptionRun03.familyDefined = true;
4190 fontDescriptionRun03.weightDefined = false;
4191 fontDescriptionRun03.widthDefined = false;
4192 fontDescriptionRun03.slantDefined = false;
4193 fontDescriptionRun03.sizeDefined = false;
4195 FontDescriptionRun fontDescriptionRun04;
4196 fontDescriptionRun04.characterRun.characterIndex = 36u;
4197 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4198 fontDescriptionRun04.familyLength = fontLatin.size();
4199 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4200 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4201 fontDescriptionRun04.familyDefined = true;
4202 fontDescriptionRun04.weightDefined = false;
4203 fontDescriptionRun04.widthDefined = false;
4204 fontDescriptionRun04.slantDefined = false;
4205 fontDescriptionRun04.sizeDefined = false;
4207 FontDescriptionRun fontDescriptionRun05;
4208 fontDescriptionRun05.characterRun.characterIndex = 48u;
4209 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4210 fontDescriptionRun05.familyLength = fontLatin.size();
4211 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4212 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4213 fontDescriptionRun05.familyDefined = true;
4214 fontDescriptionRun05.weightDefined = false;
4215 fontDescriptionRun05.widthDefined = false;
4216 fontDescriptionRun05.slantDefined = false;
4217 fontDescriptionRun05.sizeDefined = false;
4219 FontDescriptionRun fontDescriptionRun06;
4220 fontDescriptionRun06.characterRun.characterIndex = 60u;
4221 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4222 fontDescriptionRun06.familyLength = fontArabic.size();
4223 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4224 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4225 fontDescriptionRun06.familyDefined = true;
4226 fontDescriptionRun06.weightDefined = false;
4227 fontDescriptionRun06.widthDefined = false;
4228 fontDescriptionRun06.slantDefined = false;
4229 fontDescriptionRun06.sizeDefined = false;
4231 Vector<FontDescriptionRun> fontDescriptionRuns;
4232 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4233 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4234 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4235 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4236 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4237 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4239 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4241 Size textArea( 100.f, 300.f );
4244 "Begin alignment for the last paragraph.",
4245 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4248 fontDescriptionRuns.Begin(),
4249 LayoutEngine::HORIZONTAL_ALIGN_BEGIN,
4250 LayoutEngine::VERTICAL_ALIGN_TOP,
4257 if( !AlignTest( data ) )
4259 tet_result(TET_FAIL);
4262 tet_result(TET_PASS);
4266 int UtcDaliTextAlign04(void)
4268 ToolkitTestApplication application;
4269 tet_infoline(" UtcDaliTextAlign04");
4271 // Calculate text alignment.
4273 const std::string fontLatin( "TizenSans" );
4274 const std::string fontHebrew( "TizenSansHebrew" );
4275 const std::string fontArabic( "TizenSansArabic" );
4277 // Set a known font description
4278 FontDescriptionRun fontDescriptionRun01;
4279 fontDescriptionRun01.characterRun.characterIndex = 0u;
4280 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4281 fontDescriptionRun01.familyLength = fontLatin.size();
4282 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4283 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4284 fontDescriptionRun01.familyDefined = true;
4285 fontDescriptionRun01.weightDefined = false;
4286 fontDescriptionRun01.widthDefined = false;
4287 fontDescriptionRun01.slantDefined = false;
4288 fontDescriptionRun01.sizeDefined = false;
4290 FontDescriptionRun fontDescriptionRun02;
4291 fontDescriptionRun02.characterRun.characterIndex = 12u;
4292 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4293 fontDescriptionRun02.familyLength = fontHebrew.size();
4294 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4295 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4296 fontDescriptionRun02.familyDefined = true;
4297 fontDescriptionRun02.weightDefined = false;
4298 fontDescriptionRun02.widthDefined = false;
4299 fontDescriptionRun02.slantDefined = false;
4300 fontDescriptionRun02.sizeDefined = false;
4302 FontDescriptionRun fontDescriptionRun03;
4303 fontDescriptionRun03.characterRun.characterIndex = 22u;
4304 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4305 fontDescriptionRun03.familyLength = fontArabic.size();
4306 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4307 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4308 fontDescriptionRun03.familyDefined = true;
4309 fontDescriptionRun03.weightDefined = false;
4310 fontDescriptionRun03.widthDefined = false;
4311 fontDescriptionRun03.slantDefined = false;
4312 fontDescriptionRun03.sizeDefined = false;
4314 FontDescriptionRun fontDescriptionRun04;
4315 fontDescriptionRun04.characterRun.characterIndex = 36u;
4316 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4317 fontDescriptionRun04.familyLength = fontLatin.size();
4318 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4319 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4320 fontDescriptionRun04.familyDefined = true;
4321 fontDescriptionRun04.weightDefined = false;
4322 fontDescriptionRun04.widthDefined = false;
4323 fontDescriptionRun04.slantDefined = false;
4324 fontDescriptionRun04.sizeDefined = false;
4326 FontDescriptionRun fontDescriptionRun05;
4327 fontDescriptionRun05.characterRun.characterIndex = 48u;
4328 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4329 fontDescriptionRun05.familyLength = fontLatin.size();
4330 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4331 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4332 fontDescriptionRun05.familyDefined = true;
4333 fontDescriptionRun05.weightDefined = false;
4334 fontDescriptionRun05.widthDefined = false;
4335 fontDescriptionRun05.slantDefined = false;
4336 fontDescriptionRun05.sizeDefined = false;
4338 FontDescriptionRun fontDescriptionRun06;
4339 fontDescriptionRun06.characterRun.characterIndex = 60u;
4340 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4341 fontDescriptionRun06.familyLength = fontArabic.size();
4342 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4343 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4344 fontDescriptionRun06.familyDefined = true;
4345 fontDescriptionRun06.weightDefined = false;
4346 fontDescriptionRun06.widthDefined = false;
4347 fontDescriptionRun06.slantDefined = false;
4348 fontDescriptionRun06.sizeDefined = false;
4350 Vector<FontDescriptionRun> fontDescriptionRuns;
4351 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4352 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4353 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4354 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4355 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4356 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4358 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4360 Size textArea( 100.f, 300.f );
4363 "Center alignment for the first paragraph.",
4364 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4367 fontDescriptionRuns.Begin(),
4368 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4369 LayoutEngine::VERTICAL_ALIGN_TOP,
4376 if( !AlignTest( data ) )
4378 tet_result(TET_FAIL);
4381 tet_result(TET_PASS);
4385 int UtcDaliTextAlign05(void)
4387 ToolkitTestApplication application;
4388 tet_infoline(" UtcDaliTextAlign05");
4390 // Calculate text alignment.
4392 const std::string fontLatin( "TizenSans" );
4393 const std::string fontHebrew( "TizenSansHebrew" );
4394 const std::string fontArabic( "TizenSansArabic" );
4396 // Set a known font description
4397 FontDescriptionRun fontDescriptionRun01;
4398 fontDescriptionRun01.characterRun.characterIndex = 0u;
4399 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4400 fontDescriptionRun01.familyLength = fontLatin.size();
4401 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4402 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4403 fontDescriptionRun01.familyDefined = true;
4404 fontDescriptionRun01.weightDefined = false;
4405 fontDescriptionRun01.widthDefined = false;
4406 fontDescriptionRun01.slantDefined = false;
4407 fontDescriptionRun01.sizeDefined = false;
4409 FontDescriptionRun fontDescriptionRun02;
4410 fontDescriptionRun02.characterRun.characterIndex = 12u;
4411 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4412 fontDescriptionRun02.familyLength = fontHebrew.size();
4413 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4414 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4415 fontDescriptionRun02.familyDefined = true;
4416 fontDescriptionRun02.weightDefined = false;
4417 fontDescriptionRun02.widthDefined = false;
4418 fontDescriptionRun02.slantDefined = false;
4419 fontDescriptionRun02.sizeDefined = false;
4421 FontDescriptionRun fontDescriptionRun03;
4422 fontDescriptionRun03.characterRun.characterIndex = 22u;
4423 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4424 fontDescriptionRun03.familyLength = fontArabic.size();
4425 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4426 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4427 fontDescriptionRun03.familyDefined = true;
4428 fontDescriptionRun03.weightDefined = false;
4429 fontDescriptionRun03.widthDefined = false;
4430 fontDescriptionRun03.slantDefined = false;
4431 fontDescriptionRun03.sizeDefined = false;
4433 FontDescriptionRun fontDescriptionRun04;
4434 fontDescriptionRun04.characterRun.characterIndex = 36u;
4435 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4436 fontDescriptionRun04.familyLength = fontLatin.size();
4437 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4438 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4439 fontDescriptionRun04.familyDefined = true;
4440 fontDescriptionRun04.weightDefined = false;
4441 fontDescriptionRun04.widthDefined = false;
4442 fontDescriptionRun04.slantDefined = false;
4443 fontDescriptionRun04.sizeDefined = false;
4445 FontDescriptionRun fontDescriptionRun05;
4446 fontDescriptionRun05.characterRun.characterIndex = 48u;
4447 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4448 fontDescriptionRun05.familyLength = fontLatin.size();
4449 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4450 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4451 fontDescriptionRun05.familyDefined = true;
4452 fontDescriptionRun05.weightDefined = false;
4453 fontDescriptionRun05.widthDefined = false;
4454 fontDescriptionRun05.slantDefined = false;
4455 fontDescriptionRun05.sizeDefined = false;
4457 FontDescriptionRun fontDescriptionRun06;
4458 fontDescriptionRun06.characterRun.characterIndex = 60u;
4459 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4460 fontDescriptionRun06.familyLength = fontArabic.size();
4461 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4462 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4463 fontDescriptionRun06.familyDefined = true;
4464 fontDescriptionRun06.weightDefined = false;
4465 fontDescriptionRun06.widthDefined = false;
4466 fontDescriptionRun06.slantDefined = false;
4467 fontDescriptionRun06.sizeDefined = false;
4469 Vector<FontDescriptionRun> fontDescriptionRuns;
4470 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4471 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4472 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4473 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4474 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4475 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4477 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4479 Size textArea( 100.f, 300.f );
4482 "Center alignment for the mid paragraph.",
4483 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4486 fontDescriptionRuns.Begin(),
4487 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4488 LayoutEngine::VERTICAL_ALIGN_TOP,
4495 if( !AlignTest( data ) )
4497 tet_result(TET_FAIL);
4500 tet_result(TET_PASS);
4504 int UtcDaliTextAlign06(void)
4506 ToolkitTestApplication application;
4507 tet_infoline(" UtcDaliTextAlign06");
4509 // Calculate text alignment.
4511 const std::string fontLatin( "TizenSans" );
4512 const std::string fontHebrew( "TizenSansHebrew" );
4513 const std::string fontArabic( "TizenSansArabic" );
4515 // Set a known font description
4516 FontDescriptionRun fontDescriptionRun01;
4517 fontDescriptionRun01.characterRun.characterIndex = 0u;
4518 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4519 fontDescriptionRun01.familyLength = fontLatin.size();
4520 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4521 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4522 fontDescriptionRun01.familyDefined = true;
4523 fontDescriptionRun01.weightDefined = false;
4524 fontDescriptionRun01.widthDefined = false;
4525 fontDescriptionRun01.slantDefined = false;
4526 fontDescriptionRun01.sizeDefined = false;
4528 FontDescriptionRun fontDescriptionRun02;
4529 fontDescriptionRun02.characterRun.characterIndex = 12u;
4530 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4531 fontDescriptionRun02.familyLength = fontHebrew.size();
4532 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4533 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4534 fontDescriptionRun02.familyDefined = true;
4535 fontDescriptionRun02.weightDefined = false;
4536 fontDescriptionRun02.widthDefined = false;
4537 fontDescriptionRun02.slantDefined = false;
4538 fontDescriptionRun02.sizeDefined = false;
4540 FontDescriptionRun fontDescriptionRun03;
4541 fontDescriptionRun03.characterRun.characterIndex = 22u;
4542 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4543 fontDescriptionRun03.familyLength = fontArabic.size();
4544 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4545 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4546 fontDescriptionRun03.familyDefined = true;
4547 fontDescriptionRun03.weightDefined = false;
4548 fontDescriptionRun03.widthDefined = false;
4549 fontDescriptionRun03.slantDefined = false;
4550 fontDescriptionRun03.sizeDefined = false;
4552 FontDescriptionRun fontDescriptionRun04;
4553 fontDescriptionRun04.characterRun.characterIndex = 36u;
4554 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4555 fontDescriptionRun04.familyLength = fontLatin.size();
4556 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4557 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4558 fontDescriptionRun04.familyDefined = true;
4559 fontDescriptionRun04.weightDefined = false;
4560 fontDescriptionRun04.widthDefined = false;
4561 fontDescriptionRun04.slantDefined = false;
4562 fontDescriptionRun04.sizeDefined = false;
4564 FontDescriptionRun fontDescriptionRun05;
4565 fontDescriptionRun05.characterRun.characterIndex = 48u;
4566 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4567 fontDescriptionRun05.familyLength = fontLatin.size();
4568 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4569 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4570 fontDescriptionRun05.familyDefined = true;
4571 fontDescriptionRun05.weightDefined = false;
4572 fontDescriptionRun05.widthDefined = false;
4573 fontDescriptionRun05.slantDefined = false;
4574 fontDescriptionRun05.sizeDefined = false;
4576 FontDescriptionRun fontDescriptionRun06;
4577 fontDescriptionRun06.characterRun.characterIndex = 60u;
4578 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4579 fontDescriptionRun06.familyLength = fontArabic.size();
4580 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4581 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4582 fontDescriptionRun06.familyDefined = true;
4583 fontDescriptionRun06.weightDefined = false;
4584 fontDescriptionRun06.widthDefined = false;
4585 fontDescriptionRun06.slantDefined = false;
4586 fontDescriptionRun06.sizeDefined = false;
4588 Vector<FontDescriptionRun> fontDescriptionRuns;
4589 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4590 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4591 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4592 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4593 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4594 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4596 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4598 Size textArea( 100.f, 300.f );
4601 "Center alignment for the last paragraph.",
4602 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4605 fontDescriptionRuns.Begin(),
4606 LayoutEngine::HORIZONTAL_ALIGN_CENTER,
4607 LayoutEngine::VERTICAL_ALIGN_TOP,
4614 if( !AlignTest( data ) )
4616 tet_result(TET_FAIL);
4619 tet_result(TET_PASS);
4623 int UtcDaliTextAlign07(void)
4625 ToolkitTestApplication application;
4626 tet_infoline(" UtcDaliTextAlign07");
4628 // Calculate text alignment.
4630 const std::string fontLatin( "TizenSans" );
4631 const std::string fontHebrew( "TizenSansHebrew" );
4632 const std::string fontArabic( "TizenSansArabic" );
4634 // Set a known font description
4635 FontDescriptionRun fontDescriptionRun01;
4636 fontDescriptionRun01.characterRun.characterIndex = 0u;
4637 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4638 fontDescriptionRun01.familyLength = fontLatin.size();
4639 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4640 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4641 fontDescriptionRun01.familyDefined = true;
4642 fontDescriptionRun01.weightDefined = false;
4643 fontDescriptionRun01.widthDefined = false;
4644 fontDescriptionRun01.slantDefined = false;
4645 fontDescriptionRun01.sizeDefined = false;
4647 FontDescriptionRun fontDescriptionRun02;
4648 fontDescriptionRun02.characterRun.characterIndex = 12u;
4649 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4650 fontDescriptionRun02.familyLength = fontHebrew.size();
4651 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4652 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4653 fontDescriptionRun02.familyDefined = true;
4654 fontDescriptionRun02.weightDefined = false;
4655 fontDescriptionRun02.widthDefined = false;
4656 fontDescriptionRun02.slantDefined = false;
4657 fontDescriptionRun02.sizeDefined = false;
4659 FontDescriptionRun fontDescriptionRun03;
4660 fontDescriptionRun03.characterRun.characterIndex = 22u;
4661 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4662 fontDescriptionRun03.familyLength = fontArabic.size();
4663 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4664 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4665 fontDescriptionRun03.familyDefined = true;
4666 fontDescriptionRun03.weightDefined = false;
4667 fontDescriptionRun03.widthDefined = false;
4668 fontDescriptionRun03.slantDefined = false;
4669 fontDescriptionRun03.sizeDefined = false;
4671 FontDescriptionRun fontDescriptionRun04;
4672 fontDescriptionRun04.characterRun.characterIndex = 36u;
4673 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4674 fontDescriptionRun04.familyLength = fontLatin.size();
4675 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4676 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4677 fontDescriptionRun04.familyDefined = true;
4678 fontDescriptionRun04.weightDefined = false;
4679 fontDescriptionRun04.widthDefined = false;
4680 fontDescriptionRun04.slantDefined = false;
4681 fontDescriptionRun04.sizeDefined = false;
4683 FontDescriptionRun fontDescriptionRun05;
4684 fontDescriptionRun05.characterRun.characterIndex = 48u;
4685 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4686 fontDescriptionRun05.familyLength = fontLatin.size();
4687 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4688 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4689 fontDescriptionRun05.familyDefined = true;
4690 fontDescriptionRun05.weightDefined = false;
4691 fontDescriptionRun05.widthDefined = false;
4692 fontDescriptionRun05.slantDefined = false;
4693 fontDescriptionRun05.sizeDefined = false;
4695 FontDescriptionRun fontDescriptionRun06;
4696 fontDescriptionRun06.characterRun.characterIndex = 60u;
4697 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4698 fontDescriptionRun06.familyLength = fontArabic.size();
4699 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4700 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4701 fontDescriptionRun06.familyDefined = true;
4702 fontDescriptionRun06.weightDefined = false;
4703 fontDescriptionRun06.widthDefined = false;
4704 fontDescriptionRun06.slantDefined = false;
4705 fontDescriptionRun06.sizeDefined = false;
4707 Vector<FontDescriptionRun> fontDescriptionRuns;
4708 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4709 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4710 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4711 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4712 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4713 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4715 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4717 Size textArea( 100.f, 300.f );
4720 "End alignment for the first paragraph.",
4721 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4724 fontDescriptionRuns.Begin(),
4725 LayoutEngine::HORIZONTAL_ALIGN_END,
4726 LayoutEngine::VERTICAL_ALIGN_TOP,
4733 if( !AlignTest( data ) )
4735 tet_result(TET_FAIL);
4738 tet_result(TET_PASS);
4742 int UtcDaliTextAlign08(void)
4744 ToolkitTestApplication application;
4745 tet_infoline(" UtcDaliTextAlign08");
4747 // Calculate text alignment.
4749 const std::string fontLatin( "TizenSans" );
4750 const std::string fontHebrew( "TizenSansHebrew" );
4751 const std::string fontArabic( "TizenSansArabic" );
4753 // Set a known font description
4754 FontDescriptionRun fontDescriptionRun01;
4755 fontDescriptionRun01.characterRun.characterIndex = 0u;
4756 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4757 fontDescriptionRun01.familyLength = fontLatin.size();
4758 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4759 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4760 fontDescriptionRun01.familyDefined = true;
4761 fontDescriptionRun01.weightDefined = false;
4762 fontDescriptionRun01.widthDefined = false;
4763 fontDescriptionRun01.slantDefined = false;
4764 fontDescriptionRun01.sizeDefined = false;
4766 FontDescriptionRun fontDescriptionRun02;
4767 fontDescriptionRun02.characterRun.characterIndex = 12u;
4768 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4769 fontDescriptionRun02.familyLength = fontHebrew.size();
4770 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4771 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4772 fontDescriptionRun02.familyDefined = true;
4773 fontDescriptionRun02.weightDefined = false;
4774 fontDescriptionRun02.widthDefined = false;
4775 fontDescriptionRun02.slantDefined = false;
4776 fontDescriptionRun02.sizeDefined = false;
4778 FontDescriptionRun fontDescriptionRun03;
4779 fontDescriptionRun03.characterRun.characterIndex = 22u;
4780 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4781 fontDescriptionRun03.familyLength = fontArabic.size();
4782 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4783 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4784 fontDescriptionRun03.familyDefined = true;
4785 fontDescriptionRun03.weightDefined = false;
4786 fontDescriptionRun03.widthDefined = false;
4787 fontDescriptionRun03.slantDefined = false;
4788 fontDescriptionRun03.sizeDefined = false;
4790 FontDescriptionRun fontDescriptionRun04;
4791 fontDescriptionRun04.characterRun.characterIndex = 36u;
4792 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4793 fontDescriptionRun04.familyLength = fontLatin.size();
4794 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4795 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4796 fontDescriptionRun04.familyDefined = true;
4797 fontDescriptionRun04.weightDefined = false;
4798 fontDescriptionRun04.widthDefined = false;
4799 fontDescriptionRun04.slantDefined = false;
4800 fontDescriptionRun04.sizeDefined = false;
4802 FontDescriptionRun fontDescriptionRun05;
4803 fontDescriptionRun05.characterRun.characterIndex = 48u;
4804 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4805 fontDescriptionRun05.familyLength = fontLatin.size();
4806 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4807 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4808 fontDescriptionRun05.familyDefined = true;
4809 fontDescriptionRun05.weightDefined = false;
4810 fontDescriptionRun05.widthDefined = false;
4811 fontDescriptionRun05.slantDefined = false;
4812 fontDescriptionRun05.sizeDefined = false;
4814 FontDescriptionRun fontDescriptionRun06;
4815 fontDescriptionRun06.characterRun.characterIndex = 60u;
4816 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4817 fontDescriptionRun06.familyLength = fontArabic.size();
4818 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4819 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4820 fontDescriptionRun06.familyDefined = true;
4821 fontDescriptionRun06.weightDefined = false;
4822 fontDescriptionRun06.widthDefined = false;
4823 fontDescriptionRun06.slantDefined = false;
4824 fontDescriptionRun06.sizeDefined = false;
4826 Vector<FontDescriptionRun> fontDescriptionRuns;
4827 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4828 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4829 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4830 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4831 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4832 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4834 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
4836 Size textArea( 100.f, 300.f );
4839 "End alignment for the mid paragraph.",
4840 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4843 fontDescriptionRuns.Begin(),
4844 LayoutEngine::HORIZONTAL_ALIGN_END,
4845 LayoutEngine::VERTICAL_ALIGN_TOP,
4852 if( !AlignTest( data ) )
4854 tet_result(TET_FAIL);
4857 tet_result(TET_PASS);
4861 int UtcDaliTextAlign09(void)
4863 ToolkitTestApplication application;
4864 tet_infoline(" UtcDaliTextAlign09");
4866 // Calculate text alignment.
4868 const std::string fontLatin( "TizenSans" );
4869 const std::string fontHebrew( "TizenSansHebrew" );
4870 const std::string fontArabic( "TizenSansArabic" );
4872 // Set a known font description
4873 FontDescriptionRun fontDescriptionRun01;
4874 fontDescriptionRun01.characterRun.characterIndex = 0u;
4875 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4876 fontDescriptionRun01.familyLength = fontLatin.size();
4877 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4878 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4879 fontDescriptionRun01.familyDefined = true;
4880 fontDescriptionRun01.weightDefined = false;
4881 fontDescriptionRun01.widthDefined = false;
4882 fontDescriptionRun01.slantDefined = false;
4883 fontDescriptionRun01.sizeDefined = false;
4885 FontDescriptionRun fontDescriptionRun02;
4886 fontDescriptionRun02.characterRun.characterIndex = 12u;
4887 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4888 fontDescriptionRun02.familyLength = fontHebrew.size();
4889 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4890 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4891 fontDescriptionRun02.familyDefined = true;
4892 fontDescriptionRun02.weightDefined = false;
4893 fontDescriptionRun02.widthDefined = false;
4894 fontDescriptionRun02.slantDefined = false;
4895 fontDescriptionRun02.sizeDefined = false;
4897 FontDescriptionRun fontDescriptionRun03;
4898 fontDescriptionRun03.characterRun.characterIndex = 22u;
4899 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4900 fontDescriptionRun03.familyLength = fontArabic.size();
4901 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4902 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4903 fontDescriptionRun03.familyDefined = true;
4904 fontDescriptionRun03.weightDefined = false;
4905 fontDescriptionRun03.widthDefined = false;
4906 fontDescriptionRun03.slantDefined = false;
4907 fontDescriptionRun03.sizeDefined = false;
4909 FontDescriptionRun fontDescriptionRun04;
4910 fontDescriptionRun04.characterRun.characterIndex = 36u;
4911 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4912 fontDescriptionRun04.familyLength = fontLatin.size();
4913 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4914 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4915 fontDescriptionRun04.familyDefined = true;
4916 fontDescriptionRun04.weightDefined = false;
4917 fontDescriptionRun04.widthDefined = false;
4918 fontDescriptionRun04.slantDefined = false;
4919 fontDescriptionRun04.sizeDefined = false;
4921 FontDescriptionRun fontDescriptionRun05;
4922 fontDescriptionRun05.characterRun.characterIndex = 48u;
4923 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4924 fontDescriptionRun05.familyLength = fontLatin.size();
4925 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4926 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4927 fontDescriptionRun05.familyDefined = true;
4928 fontDescriptionRun05.weightDefined = false;
4929 fontDescriptionRun05.widthDefined = false;
4930 fontDescriptionRun05.slantDefined = false;
4931 fontDescriptionRun05.sizeDefined = false;
4933 FontDescriptionRun fontDescriptionRun06;
4934 fontDescriptionRun06.characterRun.characterIndex = 60u;
4935 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4936 fontDescriptionRun06.familyLength = fontArabic.size();
4937 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4938 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4939 fontDescriptionRun06.familyDefined = true;
4940 fontDescriptionRun06.weightDefined = false;
4941 fontDescriptionRun06.widthDefined = false;
4942 fontDescriptionRun06.slantDefined = false;
4943 fontDescriptionRun06.sizeDefined = false;
4945 Vector<FontDescriptionRun> fontDescriptionRuns;
4946 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4947 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4948 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4949 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4950 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4951 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4953 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
4955 Size textArea( 100.f, 300.f );
4958 "End alignment for the last paragraph.",
4959 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4962 fontDescriptionRuns.Begin(),
4963 LayoutEngine::HORIZONTAL_ALIGN_END,
4964 LayoutEngine::VERTICAL_ALIGN_TOP,
4971 if( !AlignTest( data ) )
4973 tet_result(TET_FAIL);
4976 tet_result(TET_PASS);