2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
23 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
24 #include <dali-toolkit/internal/text/text-run-container.h>
25 #include <dali-toolkit-test-suite-utils.h>
26 #include <dali-toolkit/dali-toolkit.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
40 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44 std::string description;
47 unsigned int numberOfFonts;
48 FontDescriptionRun* fontDescriptions;
50 unsigned int totalNumberOfGlyphs;
52 unsigned int numberOfLines;
54 Layout::Engine::Type layout;
55 unsigned int startIndex;
56 unsigned int numberOfGlyphs;
61 void Print( const LineRun& line )
63 std::cout << " glyph run, index : " << line.glyphRun.glyphIndex << ", num glyphs : " << line.glyphRun.numberOfGlyphs << std::endl;
64 std::cout << " character run, index : " << line.characterRun.characterIndex << ", num chars : " << line.characterRun.numberOfCharacters << std::endl;
65 std::cout << " width : " << line.width << std::endl;
66 std::cout << " ascender : " << line.ascender << std::endl;
67 std::cout << " descender : " << line.descender << std::endl;
68 std::cout << " extraLength : " << line.extraLength << std::endl;
69 std::cout << " alignmentOffset : " << line.alignmentOffset << std::endl;
70 std::cout << " direction : " << line.direction << std::endl;
71 std::cout << " ellipsis : " << line.ellipsis << std::endl;
74 bool LayoutTextTest( const LayoutTextData& data )
77 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
78 fontClient.SetDpi( 96u, 96u );
80 char* pathNamePtr = get_current_dir_name();
81 const std::string pathName( pathNamePtr );
84 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
85 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
86 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
88 // 1) Create the model.
89 LogicalModelPtr logicalModel;
90 VisualModelPtr visualModel;
94 Vector<FontDescriptionRun> fontDescriptionRuns;
95 if( 0u != data.numberOfFonts )
97 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
98 data.fontDescriptions,
99 data.fontDescriptions + data.numberOfFonts );
102 LayoutOptions options;
103 options.reorder = false;
104 options.align = false;
105 CreateTextModel( data.text,
114 // 2) Clear the layout.
115 Vector<LineRun>& lines = visualModel->mLines;
117 const Length numberOfCharacters = logicalModel->mText.Count();
118 const bool isLastNewParagraph = ( 0u == numberOfCharacters ) ? false : TextAbstraction::IsNewParagraph( *( logicalModel->mText.Begin() + ( numberOfCharacters - 1u ) ) );
119 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
120 const bool removeLastLine = isLastNewParagraph && ( lastGlyphIndex + 1u == visualModel->mGlyphs.Count() );
122 LineIndex startRemoveIndex = 0u;
124 if( 0u != lines.Count() )
126 startRemoveIndex = lines.Count();
127 LineIndex endRemoveIndex = startRemoveIndex;
128 ClearGlyphRuns( data.startIndex,
129 lastGlyphIndex + ( removeLastLine ? 1u : 0u ),
134 // Update the character runs of the lines.
135 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
136 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
137 const CharacterIndex startCharacterIndex = *( glyphsToCharactersBuffer + data.startIndex );
138 const CharacterIndex lastCharacterIndex = *( glyphsToCharactersBuffer + lastGlyphIndex ) + *( charactersPerGlyph + lastGlyphIndex ) - 1u;
139 ClearCharacterRuns( startCharacterIndex,
140 lastCharacterIndex + ( removeLastLine ? 1u : 0u ),
145 lines.Erase( lines.Begin() + startRemoveIndex,
146 lines.Begin() + endRemoveIndex );
149 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
151 glyphPositions.Erase( glyphPositions.Begin() + data.startIndex,
152 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs );
155 Layout::Engine engine;
156 engine.SetMetrics( metrics );
157 engine.SetLayout( data.layout );
159 const Length totalNumberOfGlyphs = visualModel->mGlyphs.Count();
161 Layout::Parameters layoutParameters( data.textArea,
162 logicalModel->mText.Begin(),
163 logicalModel->mLineBreakInfo.Begin(),
164 logicalModel->mWordBreakInfo.Begin(),
165 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
166 visualModel->mGlyphs.Begin(),
167 visualModel->mGlyphsToCharacters.Begin(),
168 visualModel->mCharactersPerGlyph.Begin(),
169 visualModel->mCharactersToGlyph.Begin(),
170 visualModel->mGlyphsPerCharacter.Begin(),
172 Layout::HORIZONTAL_ALIGN_BEGIN );
174 layoutParameters.isLastNewParagraph = isLastNewParagraph;
176 // The initial glyph and the number of glyphs to layout.
177 layoutParameters.startGlyphIndex = data.startIndex;
178 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
179 layoutParameters.startLineIndex = startRemoveIndex;
180 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
182 layoutSize = Vector2::ZERO;
184 const bool updated = engine.LayoutText( layoutParameters,
190 // 4) Compare the results.
192 if( updated != data.updated )
194 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
198 if( layoutSize != data.layoutSize )
200 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
204 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
206 const Vector2& position = *( glyphPositions.Begin() + index );
208 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
210 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
213 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
215 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
220 if( lines.Count() != data.numberOfLines )
222 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
226 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
228 const LineRun& line = *( lines.Begin() + index );
229 const LineRun& expectedLine = *( data.lines + index );
231 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
233 std::cout << " Different line info for line : " << index << std::endl;
235 std::cout << " expected" << std::endl;
236 Print( expectedLine );
239 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
241 std::cout << " Different line info for line : " << index << std::endl;
243 std::cout << " expected" << std::endl;
244 Print( expectedLine );
248 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
250 std::cout << " Different line info for line : " << index << std::endl;
252 std::cout << " expected" << std::endl;
253 Print( expectedLine );
256 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
258 std::cout << " Different line info for line : " << index << std::endl;
260 std::cout << " expected" << std::endl;
261 Print( expectedLine );
265 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
267 std::cout << " Different line info for line : " << index << std::endl;
269 std::cout << " expected" << std::endl;
270 Print( expectedLine );
274 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
276 std::cout << " Different line info for line : " << index << std::endl;
278 std::cout << " expected" << std::endl;
279 Print( expectedLine );
283 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
285 std::cout << " Different line info for line : " << index << std::endl;
287 std::cout << " expected" << std::endl;
288 Print( expectedLine );
292 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
294 std::cout << " Different line info for line : " << index << std::endl;
296 std::cout << " expected" << std::endl;
297 Print( expectedLine );
301 if( line.ellipsis != expectedLine.ellipsis )
303 std::cout << " Different line info for line : " << index << std::endl;
305 std::cout << " expected" << std::endl;
306 Print( expectedLine );
310 // Do not compare the alignment offset as it's not calculated in the layout.
311 // Do not compare the line direction as it's not set in the layout.
317 //////////////////////////////////////////////////////////
319 struct ReLayoutRightToLeftLinesData
321 std::string description;
324 unsigned int numberOfFonts;
325 FontDescriptionRun* fontDescriptions;
326 unsigned int totalNumberOfGlyphs;
328 unsigned int startIndex;
329 unsigned int numberOfCharacters;
332 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
335 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
336 fontClient.SetDpi( 96u, 96u );
338 char* pathNamePtr = get_current_dir_name();
339 const std::string pathName( pathNamePtr );
342 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
343 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
344 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
346 // 1) Create the model.
347 LogicalModelPtr logicalModel;
348 VisualModelPtr visualModel;
352 Vector<FontDescriptionRun> fontDescriptionRuns;
353 if( 0u != data.numberOfFonts )
355 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
356 data.fontDescriptions,
357 data.fontDescriptions + data.numberOfFonts );
360 LayoutOptions options;
361 options.reorder = false;
362 options.align = false;
363 CreateTextModel( data.text,
372 // 2) Call the ReLayoutRightToLeftLines() method.
373 Layout::Engine engine;
374 engine.SetMetrics( metrics );
376 Layout::Parameters layoutParameters( data.textArea,
377 logicalModel->mText.Begin(),
378 logicalModel->mLineBreakInfo.Begin(),
379 logicalModel->mWordBreakInfo.Begin(),
380 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
381 visualModel->mGlyphs.Begin(),
382 visualModel->mGlyphsToCharacters.Begin(),
383 visualModel->mCharactersPerGlyph.Begin(),
384 visualModel->mCharactersToGlyph.Begin(),
385 visualModel->mGlyphsPerCharacter.Begin(),
386 visualModel->mGlyphs.Count(),
387 Layout::HORIZONTAL_ALIGN_BEGIN );
389 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
390 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
392 engine.ReLayoutRightToLeftLines( layoutParameters,
394 data.numberOfCharacters,
395 visualModel->mGlyphPositions );
397 // 3) Compare the results.
398 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
400 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
402 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
406 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
408 const Vector2& position = *( glyphPositions.Begin() + index );
410 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
412 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
415 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
417 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
425 //////////////////////////////////////////////////////////
429 std::string description;
432 unsigned int numberOfFonts;
433 FontDescriptionRun* fontDescriptions;
434 Layout::HorizontalAlignment horizontalAlignment;
435 Layout::VerticalAlignment verticalAlignment;
436 unsigned int startIndex;
437 unsigned int numberOfCharacters;
438 unsigned int numberOfLines;
442 bool AlignTest( const AlignData& data )
445 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
446 fontClient.SetDpi( 96u, 96u );
448 char* pathNamePtr = get_current_dir_name();
449 const std::string pathName( pathNamePtr );
452 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
453 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
454 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
456 // 1) Create the model.
457 LogicalModelPtr logicalModel;
458 VisualModelPtr visualModel;
462 Vector<FontDescriptionRun> fontDescriptionRuns;
463 if( 0u != data.numberOfFonts )
465 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
466 data.fontDescriptions,
467 data.fontDescriptions + data.numberOfFonts );
470 LayoutOptions options;
471 options.align = false;
472 CreateTextModel( data.text,
481 // Call the Align method.
482 Layout::Engine engine;
483 engine.SetMetrics( metrics );
485 float alignmentOffset = 0.f;
486 engine.Align( data.textArea,
488 data.numberOfCharacters,
489 data.horizontalAlignment,
494 if( data.numberOfLines != visualModel->mLines.Count() )
496 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
500 const LineRun* const linesBuffer = visualModel->mLines.Begin();
501 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
503 const LineRun& line = *( linesBuffer + index );
505 if( line.alignmentOffset != *( data.lineOffsets + index ) )
507 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
517 //////////////////////////////////////////////////////////
519 // UtcDaliTextLayoutSetGetLayout
520 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
521 // UtcDaliTextLayoutSetGetHorizontalAlignment
522 // UtcDaliTextLayoutSetGetVerticalAlignment
523 // UtcDaliTextLayoutSetGetCursorWidth
524 // UtcDaliTextLayoutNoText
525 // UtcDaliTextLayoutSmallTextArea01
526 // UtcDaliTextLayoutSmallTextArea02
527 // UtcDaliTextLayoutMultilineText01
528 // UtcDaliTextLayoutMultilineText02
529 // UtcDaliTextLayoutMultilineText03
530 // UtcDaliTextLayoutMultilineText04
531 // UtcDaliTextLayoutMultilineText05
532 // UtcDaliTextUpdateLayout01
533 // UtcDaliTextUpdateLayout02
534 // UtcDaliTextUpdateLayout03
535 // UtcDaliTextLayoutEllipsis01
536 // UtcDaliTextLayoutEllipsis02
537 // UtcDaliTextLayoutEllipsis03
538 // UtcDaliTextLayoutEllipsis04
539 // UtcDaliTextLayoutEllipsis04
540 // UtcDaliTextReorderLayout01
541 // UtcDaliTextReorderLayout02
542 // UtcDaliTextReorderLayout03
543 // UtcDaliTextReorderLayout04
544 // UtcDaliTextAlign01
545 // UtcDaliTextAlign02
546 // UtcDaliTextAlign03
547 // UtcDaliTextAlign04
548 // UtcDaliTextAlign05
549 // UtcDaliTextAlign06
550 // UtcDaliTextAlign07
551 // UtcDaliTextAlign08
552 // UtcDaliTextAlign09
554 //////////////////////////////////////////////////////////
556 int UtcDaliTextLayoutSetGetLayout(void)
558 ToolkitTestApplication application;
559 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
561 Layout::Engine engine;
563 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
565 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
566 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
568 tet_result(TET_PASS);
572 int UtcDaliTextLayoutSetGetCursorWidth(void)
574 ToolkitTestApplication application;
577 Layout::Engine engine;
579 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
581 engine.SetCursorWidth( 2 );
582 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
584 tet_result(TET_PASS);
588 int UtcDaliTextLayoutNoText(void)
590 ToolkitTestApplication application;
591 tet_infoline(" UtcDaliTextLayoutNoText");
593 Size textArea(100.f, 60.f);
594 Size layoutSize = Vector2::ZERO;
595 LayoutTextData data =
607 Layout::Engine::MULTI_LINE_BOX,
614 if( !LayoutTextTest( data ) )
616 tet_result(TET_FAIL);
619 tet_result(TET_PASS);
623 int UtcDaliTextLayoutSmallTextArea01(void)
625 ToolkitTestApplication application;
626 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
628 // Won't layout the text in multi-line if the width is too small.
630 const std::string fontFamily( "TizenSans" );
632 // Set a known font description
633 FontDescriptionRun fontDescriptionRun;
634 fontDescriptionRun.characterRun.characterIndex = 0u;
635 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
636 fontDescriptionRun.familyLength = fontFamily.size();
637 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
638 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
639 fontDescriptionRun.familyDefined = true;
640 fontDescriptionRun.weightDefined = false;
641 fontDescriptionRun.widthDefined = false;
642 fontDescriptionRun.slantDefined = false;
643 fontDescriptionRun.sizeDefined = false;
645 Vector<FontDescriptionRun> fontDescriptionRuns;
646 fontDescriptionRuns.PushBack( fontDescriptionRun );
647 Size textArea(1.f, 1.f);
648 Size layoutSize = Vector2::ZERO;
649 LayoutTextData data =
651 "Layout text in a small area",
655 fontDescriptionRuns.Begin(),
661 Layout::Engine::MULTI_LINE_BOX,
668 if( !LayoutTextTest( data ) )
670 tet_result(TET_FAIL);
673 tet_result(TET_PASS);
677 int UtcDaliTextLayoutSmallTextArea02(void)
679 ToolkitTestApplication application;
680 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
682 // Will layout the text in single line as it can be scrolled.
684 const std::string fontFamily( "TizenSans" );
686 // Set a known font description
687 FontDescriptionRun fontDescriptionRun;
688 fontDescriptionRun.characterRun.characterIndex = 0u;
689 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
690 fontDescriptionRun.familyLength = fontFamily.size();
691 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
692 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
693 fontDescriptionRun.familyDefined = true;
694 fontDescriptionRun.weightDefined = false;
695 fontDescriptionRun.widthDefined = false;
696 fontDescriptionRun.slantDefined = false;
697 fontDescriptionRun.sizeDefined = false;
699 Vector<FontDescriptionRun> fontDescriptionRuns;
700 fontDescriptionRuns.PushBack( fontDescriptionRun );
701 Size textArea(1.f, 1.f);
702 Size layoutSize(80.f, 20.f);
703 float positions[] = { 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f };
704 struct LineRun line =
716 Vector<LineRun> lines;
717 lines.PushBack( line );
719 LayoutTextData data =
721 "Layout text in a small area",
725 fontDescriptionRuns.Begin(),
731 Layout::Engine::SINGLE_LINE_BOX,
738 if( !LayoutTextTest( data ) )
740 tet_result(TET_FAIL);
743 tet_result(TET_PASS);
747 int UtcDaliTextLayoutMultilineText01(void)
749 ToolkitTestApplication application;
750 tet_infoline(" UtcDaliTextLayoutMultilineText01");
752 // Layout some lines of left to right text.
754 const std::string fontFamily( "TizenSans" );
756 // Set a known font description
757 FontDescriptionRun fontDescriptionRun1;
758 fontDescriptionRun1.characterRun.characterIndex = 0u;
759 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
760 fontDescriptionRun1.familyLength = fontFamily.size();
761 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
762 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
763 fontDescriptionRun1.familyDefined = true;
764 fontDescriptionRun1.weightDefined = false;
765 fontDescriptionRun1.widthDefined = false;
766 fontDescriptionRun1.slantDefined = false;
767 fontDescriptionRun1.sizeDefined = false;
769 FontDescriptionRun fontDescriptionRun2;
770 fontDescriptionRun2.characterRun.characterIndex = 18u;
771 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
772 fontDescriptionRun2.familyLength = fontFamily.size();
773 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
774 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
775 fontDescriptionRun2.familyDefined = true;
776 fontDescriptionRun2.weightDefined = false;
777 fontDescriptionRun2.widthDefined = false;
778 fontDescriptionRun2.slantDefined = false;
779 fontDescriptionRun2.sizeDefined = false;
781 Vector<FontDescriptionRun> fontDescriptionRuns;
782 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
783 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
784 Size textArea(100.f, 300.f);
785 Size layoutSize(95.f, 97.f);
788 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
789 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
790 1.f, -12.f, 9.f, -9.f, 17.f, -9.f, 27.f, -9.f, 36.f, -9.f, 45.f, -11.f, 51.f, -0.f,
791 1.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 41.f, -9.f, 50.f, -9.f, 59.f, -11.f, 65.f, -0.f,
792 1.f, -12.f, 5.f, -12.f, 9.f, -9.f, 19.f, -9.f, 28.f, -9.f, 35.f, -0.f, 41.f, -9.f, 50.f, -12.f, 54.f, -0.f, 59.f, -11.f, 66.f, -9.f, 75.f, -9.f, 83.f, -11.f, 91.f, -2.f
794 struct LineRun line0 =
806 struct LineRun line1 =
818 struct LineRun line2 =
830 struct LineRun line3 =
842 struct LineRun line4 =
854 Vector<LineRun> lines;
855 lines.PushBack( line0 );
856 lines.PushBack( line1 );
857 lines.PushBack( line2 );
858 lines.PushBack( line3 );
859 lines.PushBack( line4 );
861 LayoutTextData data =
863 "Layout simple multi-line text",
864 "Hello world demo.\n"
865 "Layout different lines of text.",
868 fontDescriptionRuns.Begin(),
874 Layout::Engine::MULTI_LINE_BOX,
881 if( !LayoutTextTest( data ) )
883 tet_result(TET_FAIL);
886 tet_result(TET_PASS);
890 int UtcDaliTextLayoutMultilineText02(void)
892 ToolkitTestApplication application;
893 tet_infoline(" UtcDaliTextLayoutMultilineText02");
895 // Layout some lines of bidirectional text.
897 const std::string fontFamily1( "TizenSans" );
899 // Set a known font description
900 FontDescriptionRun fontDescriptionRun1;
901 fontDescriptionRun1.characterRun.characterIndex = 0u;
902 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
903 fontDescriptionRun1.familyLength = fontFamily1.size();
904 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
905 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
906 fontDescriptionRun1.familyDefined = true;
907 fontDescriptionRun1.weightDefined = false;
908 fontDescriptionRun1.widthDefined = false;
909 fontDescriptionRun1.slantDefined = false;
910 fontDescriptionRun1.sizeDefined = false;
912 const std::string fontFamily2( "TizenSansHebrew" );
914 // Set a known font description
915 FontDescriptionRun fontDescriptionRun2;
916 fontDescriptionRun2.characterRun.characterIndex = 17u;
917 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
918 fontDescriptionRun2.familyLength = fontFamily2.size();
919 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
920 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
921 fontDescriptionRun2.familyDefined = true;
922 fontDescriptionRun2.weightDefined = false;
923 fontDescriptionRun2.widthDefined = false;
924 fontDescriptionRun2.slantDefined = false;
925 fontDescriptionRun2.sizeDefined = false;
927 const std::string fontFamily3( "TizenSans" );
929 // Set a known font description
930 FontDescriptionRun fontDescriptionRun3;
931 fontDescriptionRun3.characterRun.characterIndex = 26u;
932 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
933 fontDescriptionRun3.familyLength = fontFamily3.size();
934 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
935 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
936 fontDescriptionRun3.familyDefined = true;
937 fontDescriptionRun3.weightDefined = false;
938 fontDescriptionRun3.widthDefined = false;
939 fontDescriptionRun3.slantDefined = false;
940 fontDescriptionRun3.sizeDefined = false;
942 const std::string fontFamily4( "TizenSansHebrew" );
944 // Set a known font description
945 FontDescriptionRun fontDescriptionRun4;
946 fontDescriptionRun4.characterRun.characterIndex = 28u;
947 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
948 fontDescriptionRun4.familyLength = fontFamily4.size();
949 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
950 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
951 fontDescriptionRun4.familyDefined = true;
952 fontDescriptionRun4.weightDefined = false;
953 fontDescriptionRun4.widthDefined = false;
954 fontDescriptionRun4.slantDefined = false;
955 fontDescriptionRun4.sizeDefined = false;
957 const std::string fontFamily5( "TizenSans" );
959 // Set a known font description
960 FontDescriptionRun fontDescriptionRun5;
961 fontDescriptionRun5.characterRun.characterIndex = 38u;
962 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
963 fontDescriptionRun5.familyLength = fontFamily5.size();
964 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
965 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
966 fontDescriptionRun5.familyDefined = true;
967 fontDescriptionRun5.weightDefined = false;
968 fontDescriptionRun5.widthDefined = false;
969 fontDescriptionRun5.slantDefined = false;
970 fontDescriptionRun5.sizeDefined = false;
972 Vector<FontDescriptionRun> fontDescriptionRuns;
973 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
974 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
975 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
976 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
977 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
978 Size textArea(100.f, 300.f);
979 Size layoutSize(81.f, 120.f);
982 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
983 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
984 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
985 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
986 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
987 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
989 struct LineRun line0 =
1001 struct LineRun line1 =
1013 struct LineRun line2 =
1025 struct LineRun line3 =
1037 struct LineRun line4 =
1049 struct LineRun line5 =
1061 Vector<LineRun> lines;
1062 lines.PushBack( line0 );
1063 lines.PushBack( line1 );
1064 lines.PushBack( line2 );
1065 lines.PushBack( line3 );
1066 lines.PushBack( line4 );
1067 lines.PushBack( line5 );
1069 LayoutTextData data =
1071 "Layout bidirectional text.",
1072 "Hello world demo שלום עולם.\n"
1073 "שלום עולם hello world demo.",
1076 fontDescriptionRuns.Begin(),
1082 Layout::Engine::MULTI_LINE_BOX,
1089 if( !LayoutTextTest( data ) )
1091 tet_result(TET_FAIL);
1094 tet_result(TET_PASS);
1098 int UtcDaliTextLayoutMultilineText03(void)
1100 ToolkitTestApplication application;
1101 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1103 // Layout a long word which doesn't fit in the width of the text area.
1105 const std::string fontFamily( "TizenSans" );
1107 // Set a known font description
1108 FontDescriptionRun fontDescriptionRun;
1109 fontDescriptionRun.characterRun.characterIndex = 0u;
1110 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1111 fontDescriptionRun.familyLength = fontFamily.size();
1112 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1113 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1114 fontDescriptionRun.familyDefined = true;
1115 fontDescriptionRun.weightDefined = false;
1116 fontDescriptionRun.widthDefined = false;
1117 fontDescriptionRun.slantDefined = false;
1118 fontDescriptionRun.sizeDefined = false;
1120 Vector<FontDescriptionRun> fontDescriptionRuns;
1121 fontDescriptionRuns.PushBack( fontDescriptionRun );
1122 Size textArea(100.f, 300.f);
1123 Size layoutSize(96.f, 60.f);
1126 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 85.f, -9.f,
1127 1.f, -9.f, 13.f, -9.f, 23.f, -13.f, 32.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 67.f, -9.f, 77.f, -9.f, 83.f, -13.f, 86.f, -13.f,
1128 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1130 struct LineRun line0 =
1142 struct LineRun line1 =
1154 struct LineRun line2 =
1166 Vector<LineRun> lines;
1167 lines.PushBack( line0 );
1168 lines.PushBack( line1 );
1169 lines.PushBack( line2 );
1171 LayoutTextData data =
1173 "Layout a long word which doesn't fit in the width of the text area.",
1174 "Helloworlddemohelloworlddemo.",
1177 fontDescriptionRuns.Begin(),
1183 Layout::Engine::MULTI_LINE_BOX,
1190 if( !LayoutTextTest( data ) )
1192 tet_result(TET_FAIL);
1195 tet_result(TET_PASS);
1199 int UtcDaliTextLayoutMultilineText04(void)
1201 ToolkitTestApplication application;
1202 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1204 // Layout simple text ending with a \n. It has to add a void line at the end.
1206 const std::string fontFamily( "TizenSans" );
1208 // Set a known font description
1209 FontDescriptionRun fontDescriptionRun;
1210 fontDescriptionRun.characterRun.characterIndex = 0u;
1211 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1212 fontDescriptionRun.familyLength = fontFamily.size();
1213 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1214 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1215 fontDescriptionRun.familyDefined = true;
1216 fontDescriptionRun.weightDefined = false;
1217 fontDescriptionRun.widthDefined = false;
1218 fontDescriptionRun.slantDefined = false;
1219 fontDescriptionRun.sizeDefined = false;
1221 Vector<FontDescriptionRun> fontDescriptionRuns;
1222 fontDescriptionRuns.PushBack( fontDescriptionRun );
1223 Size textArea(100.f, 300.f);
1224 Size layoutSize(83.f, 40.f);
1227 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -3.f, 82.f, -12.f
1229 struct LineRun line0 =
1241 struct LineRun line1 =
1253 Vector<LineRun> lines;
1254 lines.PushBack( line0 );
1255 lines.PushBack( line1 );
1257 LayoutTextData data =
1259 "Layout simple text ending with a \n.",
1263 fontDescriptionRuns.Begin(),
1269 Layout::Engine::MULTI_LINE_BOX,
1276 if( !LayoutTextTest( data ) )
1278 tet_result(TET_FAIL);
1281 tet_result(TET_PASS);
1285 int UtcDaliTextLayoutMultilineText05(void)
1287 ToolkitTestApplication application;
1288 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1290 // Layout simple text with one character with a different font size.
1292 const std::string fontFamily( "TizenSans" );
1294 // Set a known font description
1295 FontDescriptionRun fontDescriptionRun1;
1296 fontDescriptionRun1.characterRun.characterIndex = 0u;
1297 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1298 fontDescriptionRun1.familyLength = fontFamily.size();
1299 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1300 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1301 fontDescriptionRun1.familyDefined = true;
1302 fontDescriptionRun1.weightDefined = false;
1303 fontDescriptionRun1.widthDefined = false;
1304 fontDescriptionRun1.slantDefined = false;
1305 fontDescriptionRun1.sizeDefined = false;
1307 FontDescriptionRun fontDescriptionRun2;
1308 fontDescriptionRun2.characterRun.characterIndex = 6u;
1309 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1310 fontDescriptionRun2.familyLength = fontFamily.size();
1311 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1312 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1313 fontDescriptionRun2.size = 1280u;
1314 fontDescriptionRun2.familyDefined = true;
1315 fontDescriptionRun2.weightDefined = false;
1316 fontDescriptionRun2.widthDefined = false;
1317 fontDescriptionRun2.slantDefined = false;
1318 fontDescriptionRun2.sizeDefined = true;
1320 FontDescriptionRun fontDescriptionRun3;
1321 fontDescriptionRun3.characterRun.characterIndex = 7u;
1322 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1323 fontDescriptionRun3.familyLength = fontFamily.size();
1324 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1325 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1326 fontDescriptionRun3.familyDefined = true;
1327 fontDescriptionRun3.weightDefined = false;
1328 fontDescriptionRun3.widthDefined = false;
1329 fontDescriptionRun3.slantDefined = false;
1330 fontDescriptionRun3.sizeDefined = false;
1332 Vector<FontDescriptionRun> fontDescriptionRuns;
1333 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1334 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1335 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1336 Size textArea(100.f, 300.f);
1337 Size layoutSize(88.f, 53.f);
1340 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f,
1341 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f
1343 struct LineRun line0 =
1355 struct LineRun line1 =
1367 Vector<LineRun> lines;
1368 lines.PushBack( line0 );
1369 lines.PushBack( line1 );
1371 LayoutTextData data =
1373 "Layout simple text with one character with a different font size.",
1374 "Hello world demo.",
1377 fontDescriptionRuns.Begin(),
1383 Layout::Engine::MULTI_LINE_BOX,
1390 if( !LayoutTextTest( data ) )
1392 tet_result(TET_FAIL);
1395 tet_result(TET_PASS);
1399 int UtcDaliTextUpdateLayout01(void)
1401 ToolkitTestApplication application;
1402 tet_infoline(" UtcDaliTextUpdateLayout01");
1404 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1406 const std::string fontLatin( "TizenSans" );
1407 const std::string fontHebrew( "TizenSansHebrew" );
1408 const std::string fontArabic( "TizenSansArabic" );
1410 // Set a known font description
1411 FontDescriptionRun fontDescriptionRun01;
1412 fontDescriptionRun01.characterRun.characterIndex = 0u;
1413 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1414 fontDescriptionRun01.familyLength = fontLatin.size();
1415 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1416 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1417 fontDescriptionRun01.familyDefined = true;
1418 fontDescriptionRun01.weightDefined = false;
1419 fontDescriptionRun01.widthDefined = false;
1420 fontDescriptionRun01.slantDefined = false;
1421 fontDescriptionRun01.sizeDefined = false;
1423 // Set a known font description
1424 FontDescriptionRun fontDescriptionRun02;
1425 fontDescriptionRun02.characterRun.characterIndex = 17u;
1426 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1427 fontDescriptionRun02.familyLength = fontHebrew.size();
1428 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1429 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1430 fontDescriptionRun02.familyDefined = true;
1431 fontDescriptionRun02.weightDefined = false;
1432 fontDescriptionRun02.widthDefined = false;
1433 fontDescriptionRun02.slantDefined = false;
1434 fontDescriptionRun02.sizeDefined = false;
1436 // Set a known font description
1437 FontDescriptionRun fontDescriptionRun03;
1438 fontDescriptionRun03.characterRun.characterIndex = 26u;
1439 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1440 fontDescriptionRun03.familyLength = fontLatin.size();
1441 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1442 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1443 fontDescriptionRun03.familyDefined = true;
1444 fontDescriptionRun03.weightDefined = false;
1445 fontDescriptionRun03.widthDefined = false;
1446 fontDescriptionRun03.slantDefined = false;
1447 fontDescriptionRun03.sizeDefined = false;
1449 // Set a known font description
1450 FontDescriptionRun fontDescriptionRun04;
1451 fontDescriptionRun04.characterRun.characterIndex = 28u;
1452 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1453 fontDescriptionRun04.familyLength = fontArabic.size();
1454 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1455 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1456 fontDescriptionRun04.familyDefined = true;
1457 fontDescriptionRun04.weightDefined = false;
1458 fontDescriptionRun04.widthDefined = false;
1459 fontDescriptionRun04.slantDefined = false;
1460 fontDescriptionRun04.sizeDefined = false;
1462 // Set a known font description
1463 FontDescriptionRun fontDescriptionRun05;
1464 fontDescriptionRun05.characterRun.characterIndex = 42u;
1465 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1466 fontDescriptionRun05.familyLength = fontLatin.size();
1467 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1468 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1469 fontDescriptionRun05.familyDefined = true;
1470 fontDescriptionRun05.weightDefined = false;
1471 fontDescriptionRun05.widthDefined = false;
1472 fontDescriptionRun05.slantDefined = false;
1473 fontDescriptionRun05.sizeDefined = false;
1475 // Set a known font description
1476 FontDescriptionRun fontDescriptionRun06;
1477 fontDescriptionRun06.characterRun.characterIndex = 54u;
1478 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1479 fontDescriptionRun06.familyLength = fontHebrew.size();
1480 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1481 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1482 fontDescriptionRun06.familyDefined = true;
1483 fontDescriptionRun06.weightDefined = false;
1484 fontDescriptionRun06.widthDefined = false;
1485 fontDescriptionRun06.slantDefined = false;
1486 fontDescriptionRun06.sizeDefined = false;
1488 // Set a known font description
1489 FontDescriptionRun fontDescriptionRun07;
1490 fontDescriptionRun07.characterRun.characterIndex = 64u;
1491 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1492 fontDescriptionRun07.familyLength = fontHebrew.size();
1493 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1494 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1495 fontDescriptionRun07.familyDefined = true;
1496 fontDescriptionRun07.weightDefined = false;
1497 fontDescriptionRun07.widthDefined = false;
1498 fontDescriptionRun07.slantDefined = false;
1499 fontDescriptionRun07.sizeDefined = false;
1501 // Set a known font description
1502 FontDescriptionRun fontDescriptionRun08;
1503 fontDescriptionRun08.characterRun.characterIndex = 74u;
1504 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1505 fontDescriptionRun08.familyLength = fontLatin.size();
1506 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1507 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1508 fontDescriptionRun08.familyDefined = true;
1509 fontDescriptionRun08.weightDefined = false;
1510 fontDescriptionRun08.widthDefined = false;
1511 fontDescriptionRun08.slantDefined = false;
1512 fontDescriptionRun08.sizeDefined = false;
1514 // Set a known font description
1515 FontDescriptionRun fontDescriptionRun09;
1516 fontDescriptionRun09.characterRun.characterIndex = 92u;
1517 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1518 fontDescriptionRun09.familyLength = fontLatin.size();
1519 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1520 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1521 fontDescriptionRun09.familyDefined = true;
1522 fontDescriptionRun09.weightDefined = false;
1523 fontDescriptionRun09.widthDefined = false;
1524 fontDescriptionRun09.slantDefined = false;
1525 fontDescriptionRun09.sizeDefined = false;
1527 // Set a known font description
1528 FontDescriptionRun fontDescriptionRun10;
1529 fontDescriptionRun10.characterRun.characterIndex = 104u;
1530 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1531 fontDescriptionRun10.familyLength = fontArabic.size();
1532 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1533 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1534 fontDescriptionRun10.familyDefined = true;
1535 fontDescriptionRun10.weightDefined = false;
1536 fontDescriptionRun10.widthDefined = false;
1537 fontDescriptionRun10.slantDefined = false;
1538 fontDescriptionRun10.sizeDefined = false;
1540 // Set a known font description
1541 FontDescriptionRun fontDescriptionRun11;
1542 fontDescriptionRun11.characterRun.characterIndex = 118u;
1543 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1544 fontDescriptionRun11.familyLength = fontHebrew.size();
1545 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1546 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1547 fontDescriptionRun11.familyDefined = true;
1548 fontDescriptionRun11.weightDefined = false;
1549 fontDescriptionRun11.widthDefined = false;
1550 fontDescriptionRun11.slantDefined = false;
1551 fontDescriptionRun11.sizeDefined = false;
1553 // Set a known font description
1554 FontDescriptionRun fontDescriptionRun12;
1555 fontDescriptionRun12.characterRun.characterIndex = 128u;
1556 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1557 fontDescriptionRun12.familyLength = fontLatin.size();
1558 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1559 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1560 fontDescriptionRun12.familyDefined = true;
1561 fontDescriptionRun12.weightDefined = false;
1562 fontDescriptionRun12.widthDefined = false;
1563 fontDescriptionRun12.slantDefined = false;
1564 fontDescriptionRun12.sizeDefined = false;
1566 // Set a known font description
1567 FontDescriptionRun fontDescriptionRun13;
1568 fontDescriptionRun13.characterRun.characterIndex = 145u;
1569 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1570 fontDescriptionRun13.familyLength = fontHebrew.size();
1571 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1572 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1573 fontDescriptionRun13.familyDefined = true;
1574 fontDescriptionRun13.weightDefined = false;
1575 fontDescriptionRun13.widthDefined = false;
1576 fontDescriptionRun13.slantDefined = false;
1577 fontDescriptionRun13.sizeDefined = false;
1579 // Set a known font description
1580 FontDescriptionRun fontDescriptionRun14;
1581 fontDescriptionRun14.characterRun.characterIndex = 154u;
1582 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1583 fontDescriptionRun14.familyLength = fontLatin.size();
1584 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1585 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1586 fontDescriptionRun14.familyDefined = true;
1587 fontDescriptionRun14.weightDefined = false;
1588 fontDescriptionRun14.widthDefined = false;
1589 fontDescriptionRun14.slantDefined = false;
1590 fontDescriptionRun14.sizeDefined = false;
1592 // Set a known font description
1593 FontDescriptionRun fontDescriptionRun15;
1594 fontDescriptionRun15.characterRun.characterIndex = 156u;
1595 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1596 fontDescriptionRun15.familyLength = fontHebrew.size();
1597 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1598 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1599 fontDescriptionRun15.familyDefined = true;
1600 fontDescriptionRun15.weightDefined = false;
1601 fontDescriptionRun15.widthDefined = false;
1602 fontDescriptionRun15.slantDefined = false;
1603 fontDescriptionRun15.sizeDefined = false;
1605 // Set a known font description
1606 FontDescriptionRun fontDescriptionRun16;
1607 fontDescriptionRun16.characterRun.characterIndex = 166u;
1608 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1609 fontDescriptionRun16.familyLength = fontLatin.size();
1610 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1611 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1612 fontDescriptionRun16.familyDefined = true;
1613 fontDescriptionRun16.weightDefined = false;
1614 fontDescriptionRun16.widthDefined = false;
1615 fontDescriptionRun16.slantDefined = false;
1616 fontDescriptionRun16.sizeDefined = false;
1618 // Set a known font description
1619 FontDescriptionRun fontDescriptionRun17;
1620 fontDescriptionRun17.characterRun.characterIndex = 178u;
1621 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1622 fontDescriptionRun17.familyLength = fontArabic.size();
1623 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1624 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1625 fontDescriptionRun17.familyDefined = true;
1626 fontDescriptionRun17.weightDefined = false;
1627 fontDescriptionRun17.widthDefined = false;
1628 fontDescriptionRun17.slantDefined = false;
1629 fontDescriptionRun17.sizeDefined = false;
1631 Vector<FontDescriptionRun> fontDescriptionRuns;
1632 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1633 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1634 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1635 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1636 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1637 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1638 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1639 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1640 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1641 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1642 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1643 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1644 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1645 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1646 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1647 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1648 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1649 Size textArea(100.f, 300.f);
1650 Size layoutSize(92.f, 380.f);
1653 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1654 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1655 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1656 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
1657 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1658 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1659 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
1660 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1661 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
1662 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1663 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
1664 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1665 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
1666 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
1667 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1668 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
1669 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
1670 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
1673 struct LineRun line01 =
1685 struct LineRun line02 =
1697 struct LineRun line03 =
1709 struct LineRun line04 =
1721 struct LineRun line05 =
1733 struct LineRun line06 =
1745 struct LineRun line07 =
1757 struct LineRun line08 =
1769 struct LineRun line09 =
1781 struct LineRun line10 =
1793 struct LineRun line11 =
1805 struct LineRun line12 =
1817 struct LineRun line13 =
1829 struct LineRun line14 =
1841 struct LineRun line15 =
1853 struct LineRun line16 =
1865 struct LineRun line17 =
1877 struct LineRun line18 =
1889 struct LineRun line19 =
1901 Vector<LineRun> lines;
1902 lines.PushBack( line01 );
1903 lines.PushBack( line02 );
1904 lines.PushBack( line03 );
1905 lines.PushBack( line04 );
1906 lines.PushBack( line05 );
1907 lines.PushBack( line06 );
1908 lines.PushBack( line07 );
1909 lines.PushBack( line08 );
1910 lines.PushBack( line09 );
1911 lines.PushBack( line10 );
1912 lines.PushBack( line11 );
1913 lines.PushBack( line12 );
1914 lines.PushBack( line13 );
1915 lines.PushBack( line14 );
1916 lines.PushBack( line15 );
1917 lines.PushBack( line16 );
1918 lines.PushBack( line17 );
1919 lines.PushBack( line18 );
1920 lines.PushBack( line19 );
1922 LayoutTextData data =
1924 "Layout bidirectional text.",
1925 "Hello world demo שלום עולם.\n"
1926 "مرحبا بالعالم hello world שלום עולם\n"
1927 "שלום עולם hello world demo.\n"
1928 "hello world مرحبا بالعالم שלום עולם\n"
1929 "Hello world demo שלום עולם.\n"
1930 "שלום עולם hello world مرحبا بالعالم\n",
1933 fontDescriptionRuns.Begin(),
1939 Layout::Engine::MULTI_LINE_BOX,
1946 if( !LayoutTextTest( data ) )
1948 tet_result(TET_FAIL);
1951 tet_result(TET_PASS);
1955 int UtcDaliTextUpdateLayout02(void)
1957 ToolkitTestApplication application;
1958 tet_infoline(" UtcDaliTextUpdateLayout02");
1960 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1962 const std::string fontLatin( "TizenSans" );
1963 const std::string fontHebrew( "TizenSansHebrew" );
1964 const std::string fontArabic( "TizenSansArabic" );
1966 // Set a known font description
1967 FontDescriptionRun fontDescriptionRun01;
1968 fontDescriptionRun01.characterRun.characterIndex = 0u;
1969 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1970 fontDescriptionRun01.familyLength = fontLatin.size();
1971 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1972 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1973 fontDescriptionRun01.familyDefined = true;
1974 fontDescriptionRun01.weightDefined = false;
1975 fontDescriptionRun01.widthDefined = false;
1976 fontDescriptionRun01.slantDefined = false;
1977 fontDescriptionRun01.sizeDefined = false;
1979 // Set a known font description
1980 FontDescriptionRun fontDescriptionRun02;
1981 fontDescriptionRun02.characterRun.characterIndex = 17u;
1982 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1983 fontDescriptionRun02.familyLength = fontHebrew.size();
1984 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1985 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1986 fontDescriptionRun02.familyDefined = true;
1987 fontDescriptionRun02.weightDefined = false;
1988 fontDescriptionRun02.widthDefined = false;
1989 fontDescriptionRun02.slantDefined = false;
1990 fontDescriptionRun02.sizeDefined = false;
1992 // Set a known font description
1993 FontDescriptionRun fontDescriptionRun03;
1994 fontDescriptionRun03.characterRun.characterIndex = 26u;
1995 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1996 fontDescriptionRun03.familyLength = fontLatin.size();
1997 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1998 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1999 fontDescriptionRun03.familyDefined = true;
2000 fontDescriptionRun03.weightDefined = false;
2001 fontDescriptionRun03.widthDefined = false;
2002 fontDescriptionRun03.slantDefined = false;
2003 fontDescriptionRun03.sizeDefined = false;
2005 // Set a known font description
2006 FontDescriptionRun fontDescriptionRun04;
2007 fontDescriptionRun04.characterRun.characterIndex = 28u;
2008 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2009 fontDescriptionRun04.familyLength = fontArabic.size();
2010 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2011 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2012 fontDescriptionRun04.familyDefined = true;
2013 fontDescriptionRun04.weightDefined = false;
2014 fontDescriptionRun04.widthDefined = false;
2015 fontDescriptionRun04.slantDefined = false;
2016 fontDescriptionRun04.sizeDefined = false;
2018 // Set a known font description
2019 FontDescriptionRun fontDescriptionRun05;
2020 fontDescriptionRun05.characterRun.characterIndex = 42u;
2021 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2022 fontDescriptionRun05.familyLength = fontLatin.size();
2023 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2024 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2025 fontDescriptionRun05.familyDefined = true;
2026 fontDescriptionRun05.weightDefined = false;
2027 fontDescriptionRun05.widthDefined = false;
2028 fontDescriptionRun05.slantDefined = false;
2029 fontDescriptionRun05.sizeDefined = false;
2031 // Set a known font description
2032 FontDescriptionRun fontDescriptionRun06;
2033 fontDescriptionRun06.characterRun.characterIndex = 54u;
2034 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2035 fontDescriptionRun06.familyLength = fontHebrew.size();
2036 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2037 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2038 fontDescriptionRun06.familyDefined = true;
2039 fontDescriptionRun06.weightDefined = false;
2040 fontDescriptionRun06.widthDefined = false;
2041 fontDescriptionRun06.slantDefined = false;
2042 fontDescriptionRun06.sizeDefined = false;
2044 // Set a known font description
2045 FontDescriptionRun fontDescriptionRun07;
2046 fontDescriptionRun07.characterRun.characterIndex = 64u;
2047 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2048 fontDescriptionRun07.familyLength = fontHebrew.size();
2049 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2050 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2051 fontDescriptionRun07.familyDefined = true;
2052 fontDescriptionRun07.weightDefined = false;
2053 fontDescriptionRun07.widthDefined = false;
2054 fontDescriptionRun07.slantDefined = false;
2055 fontDescriptionRun07.sizeDefined = false;
2057 // Set a known font description
2058 FontDescriptionRun fontDescriptionRun08;
2059 fontDescriptionRun08.characterRun.characterIndex = 74u;
2060 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2061 fontDescriptionRun08.familyLength = fontLatin.size();
2062 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2063 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2064 fontDescriptionRun08.familyDefined = true;
2065 fontDescriptionRun08.weightDefined = false;
2066 fontDescriptionRun08.widthDefined = false;
2067 fontDescriptionRun08.slantDefined = false;
2068 fontDescriptionRun08.sizeDefined = false;
2070 // Set a known font description
2071 FontDescriptionRun fontDescriptionRun09;
2072 fontDescriptionRun09.characterRun.characterIndex = 92u;
2073 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2074 fontDescriptionRun09.familyLength = fontLatin.size();
2075 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2076 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2077 fontDescriptionRun09.familyDefined = true;
2078 fontDescriptionRun09.weightDefined = false;
2079 fontDescriptionRun09.widthDefined = false;
2080 fontDescriptionRun09.slantDefined = false;
2081 fontDescriptionRun09.sizeDefined = false;
2083 // Set a known font description
2084 FontDescriptionRun fontDescriptionRun10;
2085 fontDescriptionRun10.characterRun.characterIndex = 104u;
2086 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2087 fontDescriptionRun10.familyLength = fontArabic.size();
2088 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2089 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2090 fontDescriptionRun10.familyDefined = true;
2091 fontDescriptionRun10.weightDefined = false;
2092 fontDescriptionRun10.widthDefined = false;
2093 fontDescriptionRun10.slantDefined = false;
2094 fontDescriptionRun10.sizeDefined = false;
2096 // Set a known font description
2097 FontDescriptionRun fontDescriptionRun11;
2098 fontDescriptionRun11.characterRun.characterIndex = 118u;
2099 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2100 fontDescriptionRun11.familyLength = fontHebrew.size();
2101 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2102 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2103 fontDescriptionRun11.familyDefined = true;
2104 fontDescriptionRun11.weightDefined = false;
2105 fontDescriptionRun11.widthDefined = false;
2106 fontDescriptionRun11.slantDefined = false;
2107 fontDescriptionRun11.sizeDefined = false;
2109 // Set a known font description
2110 FontDescriptionRun fontDescriptionRun12;
2111 fontDescriptionRun12.characterRun.characterIndex = 128u;
2112 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2113 fontDescriptionRun12.familyLength = fontLatin.size();
2114 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2115 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2116 fontDescriptionRun12.familyDefined = true;
2117 fontDescriptionRun12.weightDefined = false;
2118 fontDescriptionRun12.widthDefined = false;
2119 fontDescriptionRun12.slantDefined = false;
2120 fontDescriptionRun12.sizeDefined = false;
2122 // Set a known font description
2123 FontDescriptionRun fontDescriptionRun13;
2124 fontDescriptionRun13.characterRun.characterIndex = 145u;
2125 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2126 fontDescriptionRun13.familyLength = fontHebrew.size();
2127 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2128 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2129 fontDescriptionRun13.familyDefined = true;
2130 fontDescriptionRun13.weightDefined = false;
2131 fontDescriptionRun13.widthDefined = false;
2132 fontDescriptionRun13.slantDefined = false;
2133 fontDescriptionRun13.sizeDefined = false;
2135 // Set a known font description
2136 FontDescriptionRun fontDescriptionRun14;
2137 fontDescriptionRun14.characterRun.characterIndex = 154u;
2138 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2139 fontDescriptionRun14.familyLength = fontLatin.size();
2140 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2141 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2142 fontDescriptionRun14.familyDefined = true;
2143 fontDescriptionRun14.weightDefined = false;
2144 fontDescriptionRun14.widthDefined = false;
2145 fontDescriptionRun14.slantDefined = false;
2146 fontDescriptionRun14.sizeDefined = false;
2148 // Set a known font description
2149 FontDescriptionRun fontDescriptionRun15;
2150 fontDescriptionRun15.characterRun.characterIndex = 156u;
2151 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2152 fontDescriptionRun15.familyLength = fontHebrew.size();
2153 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2154 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2155 fontDescriptionRun15.familyDefined = true;
2156 fontDescriptionRun15.weightDefined = false;
2157 fontDescriptionRun15.widthDefined = false;
2158 fontDescriptionRun15.slantDefined = false;
2159 fontDescriptionRun15.sizeDefined = false;
2161 // Set a known font description
2162 FontDescriptionRun fontDescriptionRun16;
2163 fontDescriptionRun16.characterRun.characterIndex = 166u;
2164 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2165 fontDescriptionRun16.familyLength = fontLatin.size();
2166 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2167 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2168 fontDescriptionRun16.familyDefined = true;
2169 fontDescriptionRun16.weightDefined = false;
2170 fontDescriptionRun16.widthDefined = false;
2171 fontDescriptionRun16.slantDefined = false;
2172 fontDescriptionRun16.sizeDefined = false;
2174 // Set a known font description
2175 FontDescriptionRun fontDescriptionRun17;
2176 fontDescriptionRun17.characterRun.characterIndex = 178u;
2177 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2178 fontDescriptionRun17.familyLength = fontArabic.size();
2179 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2180 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2181 fontDescriptionRun17.familyDefined = true;
2182 fontDescriptionRun17.weightDefined = false;
2183 fontDescriptionRun17.widthDefined = false;
2184 fontDescriptionRun17.slantDefined = false;
2185 fontDescriptionRun17.sizeDefined = false;
2187 Vector<FontDescriptionRun> fontDescriptionRuns;
2188 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2189 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2190 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2191 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2192 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2193 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2194 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2195 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2196 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2197 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2198 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2199 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2200 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2201 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2202 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2203 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2204 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2205 Size textArea(100.f, 300.f);
2206 Size layoutSize(92.f, 380.f);
2209 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2210 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2211 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2212 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2213 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2214 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2215 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2216 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2217 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2218 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2219 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2220 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2221 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2222 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2223 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2224 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2225 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2226 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2229 struct LineRun line01 =
2241 struct LineRun line02 =
2253 struct LineRun line03 =
2265 struct LineRun line04 =
2277 struct LineRun line05 =
2289 struct LineRun line06 =
2301 struct LineRun line07 =
2313 struct LineRun line08 =
2325 struct LineRun line09 =
2337 struct LineRun line10 =
2349 struct LineRun line11 =
2361 struct LineRun line12 =
2373 struct LineRun line13 =
2385 struct LineRun line14 =
2397 struct LineRun line15 =
2409 struct LineRun line16 =
2421 struct LineRun line17 =
2433 struct LineRun line18 =
2445 struct LineRun line19 =
2457 Vector<LineRun> lines;
2458 lines.PushBack( line01 );
2459 lines.PushBack( line02 );
2460 lines.PushBack( line03 );
2461 lines.PushBack( line04 );
2462 lines.PushBack( line05 );
2463 lines.PushBack( line06 );
2464 lines.PushBack( line07 );
2465 lines.PushBack( line08 );
2466 lines.PushBack( line09 );
2467 lines.PushBack( line10 );
2468 lines.PushBack( line11 );
2469 lines.PushBack( line12 );
2470 lines.PushBack( line13 );
2471 lines.PushBack( line14 );
2472 lines.PushBack( line15 );
2473 lines.PushBack( line16 );
2474 lines.PushBack( line17 );
2475 lines.PushBack( line18 );
2476 lines.PushBack( line19 );
2478 LayoutTextData data =
2480 "Layout bidirectional text.",
2481 "Hello world demo שלום עולם.\n"
2482 "مرحبا بالعالم hello world שלום עולם\n"
2483 "שלום עולם hello world demo.\n"
2484 "hello world مرحبا بالعالم שלום עולם\n"
2485 "Hello world demo שלום עולם.\n"
2486 "שלום עולם hello world مرحبا بالعالم\n",
2489 fontDescriptionRuns.Begin(),
2495 Layout::Engine::MULTI_LINE_BOX,
2502 if( !LayoutTextTest( data ) )
2504 tet_result(TET_FAIL);
2507 tet_result(TET_PASS);
2511 int UtcDaliTextUpdateLayout03(void)
2513 ToolkitTestApplication application;
2514 tet_infoline(" UtcDaliTextUpdateLayout03");
2516 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2518 const std::string fontLatin( "TizenSans" );
2519 const std::string fontHebrew( "TizenSansHebrew" );
2520 const std::string fontArabic( "TizenSansArabic" );
2522 // Set a known font description
2523 FontDescriptionRun fontDescriptionRun01;
2524 fontDescriptionRun01.characterRun.characterIndex = 0u;
2525 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2526 fontDescriptionRun01.familyLength = fontLatin.size();
2527 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2528 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2529 fontDescriptionRun01.familyDefined = true;
2530 fontDescriptionRun01.weightDefined = false;
2531 fontDescriptionRun01.widthDefined = false;
2532 fontDescriptionRun01.slantDefined = false;
2533 fontDescriptionRun01.sizeDefined = false;
2535 // Set a known font description
2536 FontDescriptionRun fontDescriptionRun02;
2537 fontDescriptionRun02.characterRun.characterIndex = 17u;
2538 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2539 fontDescriptionRun02.familyLength = fontHebrew.size();
2540 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2541 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2542 fontDescriptionRun02.familyDefined = true;
2543 fontDescriptionRun02.weightDefined = false;
2544 fontDescriptionRun02.widthDefined = false;
2545 fontDescriptionRun02.slantDefined = false;
2546 fontDescriptionRun02.sizeDefined = false;
2548 // Set a known font description
2549 FontDescriptionRun fontDescriptionRun03;
2550 fontDescriptionRun03.characterRun.characterIndex = 26u;
2551 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2552 fontDescriptionRun03.familyLength = fontLatin.size();
2553 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2554 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2555 fontDescriptionRun03.familyDefined = true;
2556 fontDescriptionRun03.weightDefined = false;
2557 fontDescriptionRun03.widthDefined = false;
2558 fontDescriptionRun03.slantDefined = false;
2559 fontDescriptionRun03.sizeDefined = false;
2561 // Set a known font description
2562 FontDescriptionRun fontDescriptionRun04;
2563 fontDescriptionRun04.characterRun.characterIndex = 28u;
2564 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2565 fontDescriptionRun04.familyLength = fontArabic.size();
2566 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2567 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2568 fontDescriptionRun04.familyDefined = true;
2569 fontDescriptionRun04.weightDefined = false;
2570 fontDescriptionRun04.widthDefined = false;
2571 fontDescriptionRun04.slantDefined = false;
2572 fontDescriptionRun04.sizeDefined = false;
2574 // Set a known font description
2575 FontDescriptionRun fontDescriptionRun05;
2576 fontDescriptionRun05.characterRun.characterIndex = 42u;
2577 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2578 fontDescriptionRun05.familyLength = fontLatin.size();
2579 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2580 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2581 fontDescriptionRun05.familyDefined = true;
2582 fontDescriptionRun05.weightDefined = false;
2583 fontDescriptionRun05.widthDefined = false;
2584 fontDescriptionRun05.slantDefined = false;
2585 fontDescriptionRun05.sizeDefined = false;
2587 // Set a known font description
2588 FontDescriptionRun fontDescriptionRun06;
2589 fontDescriptionRun06.characterRun.characterIndex = 54u;
2590 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2591 fontDescriptionRun06.familyLength = fontHebrew.size();
2592 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2593 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2594 fontDescriptionRun06.familyDefined = true;
2595 fontDescriptionRun06.weightDefined = false;
2596 fontDescriptionRun06.widthDefined = false;
2597 fontDescriptionRun06.slantDefined = false;
2598 fontDescriptionRun06.sizeDefined = false;
2600 // Set a known font description
2601 FontDescriptionRun fontDescriptionRun07;
2602 fontDescriptionRun07.characterRun.characterIndex = 64u;
2603 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2604 fontDescriptionRun07.familyLength = fontHebrew.size();
2605 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2606 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2607 fontDescriptionRun07.familyDefined = true;
2608 fontDescriptionRun07.weightDefined = false;
2609 fontDescriptionRun07.widthDefined = false;
2610 fontDescriptionRun07.slantDefined = false;
2611 fontDescriptionRun07.sizeDefined = false;
2613 // Set a known font description
2614 FontDescriptionRun fontDescriptionRun08;
2615 fontDescriptionRun08.characterRun.characterIndex = 74u;
2616 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2617 fontDescriptionRun08.familyLength = fontLatin.size();
2618 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2619 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2620 fontDescriptionRun08.familyDefined = true;
2621 fontDescriptionRun08.weightDefined = false;
2622 fontDescriptionRun08.widthDefined = false;
2623 fontDescriptionRun08.slantDefined = false;
2624 fontDescriptionRun08.sizeDefined = false;
2626 // Set a known font description
2627 FontDescriptionRun fontDescriptionRun09;
2628 fontDescriptionRun09.characterRun.characterIndex = 92u;
2629 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2630 fontDescriptionRun09.familyLength = fontLatin.size();
2631 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2632 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2633 fontDescriptionRun09.familyDefined = true;
2634 fontDescriptionRun09.weightDefined = false;
2635 fontDescriptionRun09.widthDefined = false;
2636 fontDescriptionRun09.slantDefined = false;
2637 fontDescriptionRun09.sizeDefined = false;
2639 // Set a known font description
2640 FontDescriptionRun fontDescriptionRun10;
2641 fontDescriptionRun10.characterRun.characterIndex = 104u;
2642 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2643 fontDescriptionRun10.familyLength = fontArabic.size();
2644 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2645 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2646 fontDescriptionRun10.familyDefined = true;
2647 fontDescriptionRun10.weightDefined = false;
2648 fontDescriptionRun10.widthDefined = false;
2649 fontDescriptionRun10.slantDefined = false;
2650 fontDescriptionRun10.sizeDefined = false;
2652 // Set a known font description
2653 FontDescriptionRun fontDescriptionRun11;
2654 fontDescriptionRun11.characterRun.characterIndex = 118u;
2655 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2656 fontDescriptionRun11.familyLength = fontHebrew.size();
2657 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2658 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2659 fontDescriptionRun11.familyDefined = true;
2660 fontDescriptionRun11.weightDefined = false;
2661 fontDescriptionRun11.widthDefined = false;
2662 fontDescriptionRun11.slantDefined = false;
2663 fontDescriptionRun11.sizeDefined = false;
2665 // Set a known font description
2666 FontDescriptionRun fontDescriptionRun12;
2667 fontDescriptionRun12.characterRun.characterIndex = 128u;
2668 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2669 fontDescriptionRun12.familyLength = fontLatin.size();
2670 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2671 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2672 fontDescriptionRun12.familyDefined = true;
2673 fontDescriptionRun12.weightDefined = false;
2674 fontDescriptionRun12.widthDefined = false;
2675 fontDescriptionRun12.slantDefined = false;
2676 fontDescriptionRun12.sizeDefined = false;
2678 // Set a known font description
2679 FontDescriptionRun fontDescriptionRun13;
2680 fontDescriptionRun13.characterRun.characterIndex = 145u;
2681 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2682 fontDescriptionRun13.familyLength = fontHebrew.size();
2683 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2684 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2685 fontDescriptionRun13.familyDefined = true;
2686 fontDescriptionRun13.weightDefined = false;
2687 fontDescriptionRun13.widthDefined = false;
2688 fontDescriptionRun13.slantDefined = false;
2689 fontDescriptionRun13.sizeDefined = false;
2691 // Set a known font description
2692 FontDescriptionRun fontDescriptionRun14;
2693 fontDescriptionRun14.characterRun.characterIndex = 154u;
2694 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2695 fontDescriptionRun14.familyLength = fontLatin.size();
2696 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2697 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2698 fontDescriptionRun14.familyDefined = true;
2699 fontDescriptionRun14.weightDefined = false;
2700 fontDescriptionRun14.widthDefined = false;
2701 fontDescriptionRun14.slantDefined = false;
2702 fontDescriptionRun14.sizeDefined = false;
2704 // Set a known font description
2705 FontDescriptionRun fontDescriptionRun15;
2706 fontDescriptionRun15.characterRun.characterIndex = 156u;
2707 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2708 fontDescriptionRun15.familyLength = fontHebrew.size();
2709 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2710 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2711 fontDescriptionRun15.familyDefined = true;
2712 fontDescriptionRun15.weightDefined = false;
2713 fontDescriptionRun15.widthDefined = false;
2714 fontDescriptionRun15.slantDefined = false;
2715 fontDescriptionRun15.sizeDefined = false;
2717 // Set a known font description
2718 FontDescriptionRun fontDescriptionRun16;
2719 fontDescriptionRun16.characterRun.characterIndex = 166u;
2720 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2721 fontDescriptionRun16.familyLength = fontLatin.size();
2722 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2723 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2724 fontDescriptionRun16.familyDefined = true;
2725 fontDescriptionRun16.weightDefined = false;
2726 fontDescriptionRun16.widthDefined = false;
2727 fontDescriptionRun16.slantDefined = false;
2728 fontDescriptionRun16.sizeDefined = false;
2730 // Set a known font description
2731 FontDescriptionRun fontDescriptionRun17;
2732 fontDescriptionRun17.characterRun.characterIndex = 178u;
2733 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2734 fontDescriptionRun17.familyLength = fontArabic.size();
2735 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2736 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2737 fontDescriptionRun17.familyDefined = true;
2738 fontDescriptionRun17.weightDefined = false;
2739 fontDescriptionRun17.widthDefined = false;
2740 fontDescriptionRun17.slantDefined = false;
2741 fontDescriptionRun17.sizeDefined = false;
2743 Vector<FontDescriptionRun> fontDescriptionRuns;
2744 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2745 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2746 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2747 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2748 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2749 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2750 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2751 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2752 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2753 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2754 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2755 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2756 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2757 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2758 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2759 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2760 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2761 Size textArea(100.f, 300.f);
2762 Size layoutSize(92.f, 380.f);
2765 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2766 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2767 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2768 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -13.f, 68.f, -9.f, 76.f, -13.f, 80.f, -13.f, 83.f, -9.f, 92.f, -0.f,
2769 0.f, -9.f, 11.f, -9.f, 21.f, -9.f, 27.f, -13.f, 30.f, -13.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2770 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2771 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2772 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2773 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2774 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2775 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
2776 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2777 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
2778 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -10.f, 55.f, -13.f, 62.f, -10.f, 67.f, -10.f, 75.f, -0.f,
2779 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2780 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f,
2781 1.f, -13.f, 10.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f,
2782 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f,
2785 struct LineRun line01 =
2797 struct LineRun line02 =
2809 struct LineRun line03 =
2821 struct LineRun line04 =
2833 struct LineRun line05 =
2845 struct LineRun line06 =
2857 struct LineRun line07 =
2869 struct LineRun line08 =
2881 struct LineRun line09 =
2893 struct LineRun line10 =
2905 struct LineRun line11 =
2917 struct LineRun line12 =
2929 struct LineRun line13 =
2941 struct LineRun line14 =
2953 struct LineRun line15 =
2965 struct LineRun line16 =
2977 struct LineRun line17 =
2989 struct LineRun line18 =
3001 struct LineRun line19 =
3013 Vector<LineRun> lines;
3014 lines.PushBack( line01 );
3015 lines.PushBack( line02 );
3016 lines.PushBack( line03 );
3017 lines.PushBack( line04 );
3018 lines.PushBack( line05 );
3019 lines.PushBack( line06 );
3020 lines.PushBack( line07 );
3021 lines.PushBack( line08 );
3022 lines.PushBack( line09 );
3023 lines.PushBack( line10 );
3024 lines.PushBack( line11 );
3025 lines.PushBack( line12 );
3026 lines.PushBack( line13 );
3027 lines.PushBack( line14 );
3028 lines.PushBack( line15 );
3029 lines.PushBack( line16 );
3030 lines.PushBack( line17 );
3031 lines.PushBack( line18 );
3032 lines.PushBack( line19 );
3034 LayoutTextData data =
3036 "Layout bidirectional text.",
3037 "Hello world demo שלום עולם.\n"
3038 "مرحبا بالعالم hello world שלום עולם\n"
3039 "שלום עולם hello world demo.\n"
3040 "hello world مرحبا بالعالم שלום עולם\n"
3041 "Hello world demo שלום עולם.\n"
3042 "שלום עולם hello world مرحبا بالعالم\n",
3045 fontDescriptionRuns.Begin(),
3051 Layout::Engine::MULTI_LINE_BOX,
3058 if( !LayoutTextTest( data ) )
3060 tet_result(TET_FAIL);
3063 tet_result(TET_PASS);
3067 int UtcDaliTextLayoutEllipsis01(void)
3069 ToolkitTestApplication application;
3070 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3072 // Layout single-line LTR text with ellipsis.
3074 const std::string fontLatin( "TizenSans" );
3076 // Set a known font description
3077 FontDescriptionRun fontDescriptionRun01;
3078 fontDescriptionRun01.characterRun.characterIndex = 0u;
3079 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3080 fontDescriptionRun01.familyLength = fontLatin.size();
3081 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3082 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3083 fontDescriptionRun01.familyDefined = true;
3084 fontDescriptionRun01.weightDefined = false;
3085 fontDescriptionRun01.widthDefined = false;
3086 fontDescriptionRun01.slantDefined = false;
3087 fontDescriptionRun01.sizeDefined = false;
3089 Vector<FontDescriptionRun> fontDescriptionRuns;
3090 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3092 struct LineRun line01 =
3104 Vector<LineRun> lines;
3105 lines.PushBack( line01 );
3109 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 83.f, -13.f,
3112 Size textArea( 100.f, 50.f );
3113 Size layoutSize( 100.f, 20.f );
3115 LayoutTextData data =
3117 "Layout single-line LTR text with ellipsis.",
3118 "Hello world demo hello world demo hello world demo.",
3121 fontDescriptionRuns.Begin(),
3127 Layout::Engine::SINGLE_LINE_BOX,
3134 if( !LayoutTextTest( data ) )
3136 tet_result(TET_FAIL);
3139 tet_result(TET_PASS);
3143 int UtcDaliTextLayoutEllipsis02(void)
3145 ToolkitTestApplication application;
3146 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3148 // Layout multi-line LTR text with ellipsis.
3150 const std::string fontLatin( "TizenSans" );
3152 // Set a known font description
3153 FontDescriptionRun fontDescriptionRun01;
3154 fontDescriptionRun01.characterRun.characterIndex = 0u;
3155 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3156 fontDescriptionRun01.familyLength = fontLatin.size();
3157 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3158 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3159 fontDescriptionRun01.familyDefined = true;
3160 fontDescriptionRun01.weightDefined = false;
3161 fontDescriptionRun01.widthDefined = false;
3162 fontDescriptionRun01.slantDefined = false;
3163 fontDescriptionRun01.sizeDefined = false;
3165 Vector<FontDescriptionRun> fontDescriptionRuns;
3166 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3168 struct LineRun line01 =
3180 struct LineRun line02 =
3192 Vector<LineRun> lines;
3193 lines.PushBack( line01 );
3194 lines.PushBack( line02 );
3198 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f,
3199 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -0.f, 44.f, -13.f, 53.f, -9.f, 61.f, -13.f, 65.f, -13.f, 68.f, -9.f, 77.f, -0.f, 81.f, -9.f,
3202 Size textArea( 100.f, 50.f );
3203 Size layoutSize( 100.f, 40.f );
3205 LayoutTextData data =
3207 "Layout multi-line LTR text with ellipsis.",
3208 "Hello world demo hello world demo hello world demo.",
3211 fontDescriptionRuns.Begin(),
3217 Layout::Engine::MULTI_LINE_BOX,
3224 if( !LayoutTextTest( data ) )
3226 tet_result(TET_FAIL);
3229 tet_result(TET_PASS);
3233 int UtcDaliTextLayoutEllipsis03(void)
3235 ToolkitTestApplication application;
3236 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3238 // Layout single-line RTL text with ellipsis.
3240 const std::string fontHebrew( "TizenSansHebrew" );
3241 const std::string fontArabic( "TizenSansArabic" );
3243 // Set a known font description
3244 FontDescriptionRun fontDescriptionRun01;
3245 fontDescriptionRun01.characterRun.characterIndex = 0u;
3246 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3247 fontDescriptionRun01.familyLength = fontHebrew.size();
3248 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3249 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3250 fontDescriptionRun01.familyDefined = true;
3251 fontDescriptionRun01.weightDefined = false;
3252 fontDescriptionRun01.widthDefined = false;
3253 fontDescriptionRun01.slantDefined = false;
3254 fontDescriptionRun01.sizeDefined = false;
3256 FontDescriptionRun fontDescriptionRun02;
3257 fontDescriptionRun02.characterRun.characterIndex = 10u;
3258 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3259 fontDescriptionRun02.familyLength = fontArabic.size();
3260 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3261 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3262 fontDescriptionRun02.familyDefined = true;
3263 fontDescriptionRun02.weightDefined = false;
3264 fontDescriptionRun02.widthDefined = false;
3265 fontDescriptionRun02.slantDefined = false;
3266 fontDescriptionRun02.sizeDefined = false;
3268 FontDescriptionRun fontDescriptionRun03;
3269 fontDescriptionRun03.characterRun.characterIndex = 24u;
3270 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3271 fontDescriptionRun03.familyLength = fontHebrew.size();
3272 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3273 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3274 fontDescriptionRun03.familyDefined = true;
3275 fontDescriptionRun03.weightDefined = false;
3276 fontDescriptionRun03.widthDefined = false;
3277 fontDescriptionRun03.slantDefined = false;
3278 fontDescriptionRun03.sizeDefined = false;
3280 FontDescriptionRun fontDescriptionRun04;
3281 fontDescriptionRun04.characterRun.characterIndex = 34u;
3282 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3283 fontDescriptionRun04.familyLength = fontArabic.size();
3284 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3285 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3286 fontDescriptionRun04.familyDefined = true;
3287 fontDescriptionRun04.weightDefined = false;
3288 fontDescriptionRun04.widthDefined = false;
3289 fontDescriptionRun04.slantDefined = false;
3290 fontDescriptionRun04.sizeDefined = false;
3292 FontDescriptionRun fontDescriptionRun05;
3293 fontDescriptionRun05.characterRun.characterIndex = 48u;
3294 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3295 fontDescriptionRun05.familyLength = fontHebrew.size();
3296 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3297 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3298 fontDescriptionRun05.familyDefined = true;
3299 fontDescriptionRun05.weightDefined = false;
3300 fontDescriptionRun05.widthDefined = false;
3301 fontDescriptionRun05.slantDefined = false;
3302 fontDescriptionRun05.sizeDefined = false;
3304 FontDescriptionRun fontDescriptionRun06;
3305 fontDescriptionRun06.characterRun.characterIndex = 58u;
3306 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3307 fontDescriptionRun06.familyLength = fontArabic.size();
3308 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3309 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3310 fontDescriptionRun06.familyDefined = true;
3311 fontDescriptionRun06.weightDefined = false;
3312 fontDescriptionRun06.widthDefined = false;
3313 fontDescriptionRun06.slantDefined = false;
3314 fontDescriptionRun06.sizeDefined = false;
3316 Vector<FontDescriptionRun> fontDescriptionRuns;
3317 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3318 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3319 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3320 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3321 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3322 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3324 struct LineRun line01 =
3336 Vector<LineRun> lines;
3337 lines.PushBack( line01 );
3341 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3344 Size textArea( 100.f, 50.f );
3345 Size layoutSize( 100.f, 20.f );
3347 LayoutTextData data =
3349 "Layout single-line RTL text with ellipsis.",
3350 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3353 fontDescriptionRuns.Begin(),
3359 Layout::Engine::SINGLE_LINE_BOX,
3366 if( !LayoutTextTest( data ) )
3368 tet_result(TET_FAIL);
3371 tet_result(TET_PASS);
3375 int UtcDaliTextLayoutEllipsis04(void)
3377 ToolkitTestApplication application;
3378 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3380 // Layout multi-line RTL text with ellipsis.
3382 const std::string fontHebrew( "TizenSansHebrew" );
3383 const std::string fontArabic( "TizenSansArabic" );
3385 // Set a known font description
3386 FontDescriptionRun fontDescriptionRun01;
3387 fontDescriptionRun01.characterRun.characterIndex = 0u;
3388 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3389 fontDescriptionRun01.familyLength = fontHebrew.size();
3390 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3391 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3392 fontDescriptionRun01.familyDefined = true;
3393 fontDescriptionRun01.weightDefined = false;
3394 fontDescriptionRun01.widthDefined = false;
3395 fontDescriptionRun01.slantDefined = false;
3396 fontDescriptionRun01.sizeDefined = false;
3398 FontDescriptionRun fontDescriptionRun02;
3399 fontDescriptionRun02.characterRun.characterIndex = 10u;
3400 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3401 fontDescriptionRun02.familyLength = fontArabic.size();
3402 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3403 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3404 fontDescriptionRun02.familyDefined = true;
3405 fontDescriptionRun02.weightDefined = false;
3406 fontDescriptionRun02.widthDefined = false;
3407 fontDescriptionRun02.slantDefined = false;
3408 fontDescriptionRun02.sizeDefined = false;
3410 FontDescriptionRun fontDescriptionRun03;
3411 fontDescriptionRun03.characterRun.characterIndex = 24u;
3412 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3413 fontDescriptionRun03.familyLength = fontHebrew.size();
3414 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3415 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3416 fontDescriptionRun03.familyDefined = true;
3417 fontDescriptionRun03.weightDefined = false;
3418 fontDescriptionRun03.widthDefined = false;
3419 fontDescriptionRun03.slantDefined = false;
3420 fontDescriptionRun03.sizeDefined = false;
3422 FontDescriptionRun fontDescriptionRun04;
3423 fontDescriptionRun04.characterRun.characterIndex = 34u;
3424 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3425 fontDescriptionRun04.familyLength = fontArabic.size();
3426 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3427 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3428 fontDescriptionRun04.familyDefined = true;
3429 fontDescriptionRun04.weightDefined = false;
3430 fontDescriptionRun04.widthDefined = false;
3431 fontDescriptionRun04.slantDefined = false;
3432 fontDescriptionRun04.sizeDefined = false;
3434 FontDescriptionRun fontDescriptionRun05;
3435 fontDescriptionRun05.characterRun.characterIndex = 48u;
3436 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3437 fontDescriptionRun05.familyLength = fontHebrew.size();
3438 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3439 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3440 fontDescriptionRun05.familyDefined = true;
3441 fontDescriptionRun05.weightDefined = false;
3442 fontDescriptionRun05.widthDefined = false;
3443 fontDescriptionRun05.slantDefined = false;
3444 fontDescriptionRun05.sizeDefined = false;
3446 FontDescriptionRun fontDescriptionRun06;
3447 fontDescriptionRun06.characterRun.characterIndex = 58u;
3448 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3449 fontDescriptionRun06.familyLength = fontArabic.size();
3450 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3451 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3452 fontDescriptionRun06.familyDefined = true;
3453 fontDescriptionRun06.weightDefined = false;
3454 fontDescriptionRun06.widthDefined = false;
3455 fontDescriptionRun06.slantDefined = false;
3456 fontDescriptionRun06.sizeDefined = false;
3458 Vector<FontDescriptionRun> fontDescriptionRuns;
3459 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3460 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3461 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3462 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3463 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3464 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3466 struct LineRun line01 =
3478 struct LineRun line02 =
3490 Vector<LineRun> lines;
3491 lines.PushBack( line01 );
3492 lines.PushBack( line02 );
3496 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3497 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f, 32.f, -10.f, 43.f, -13.f, 50.f, -10.f, 55.f, -10.f, 63.f, -0.f, 68.f, -10.f, 76.f, -10.f, 81.f, -13.f, 89.f, -10.f, 97.f, -0.f,
3500 Size textArea( 100.f, 50.f );
3501 Size layoutSize( 100.f, 40.f );
3503 LayoutTextData data =
3505 "Layout single-line RTL text with ellipsis.",
3506 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3509 fontDescriptionRuns.Begin(),
3515 Layout::Engine::MULTI_LINE_BOX,
3522 if( !LayoutTextTest( data ) )
3524 tet_result(TET_FAIL);
3527 tet_result(TET_PASS);
3531 int UtcDaliTextLayoutEllipsis05(void)
3533 ToolkitTestApplication application;
3534 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3536 const std::string fontLatin( "TizenSans" );
3538 // Set a known font description
3539 FontDescriptionRun fontDescriptionRun01;
3540 fontDescriptionRun01.characterRun.characterIndex = 0u;
3541 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3542 fontDescriptionRun01.familyLength = fontLatin.size();
3543 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3544 memcpy( fontDescriptionRun01.familyName, fontLatin.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 Vector<FontDescriptionRun> fontDescriptionRuns;
3552 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3554 struct LineRun line01 =
3566 Vector<LineRun> lines;
3567 lines.PushBack( line01 );
3574 Size textArea( 100.f, 19.f );
3575 Size layoutSize( 100.f, 20.f );
3577 LayoutTextData data =
3579 "Not enough height.",
3583 fontDescriptionRuns.Begin(),
3589 Layout::Engine::MULTI_LINE_BOX,
3596 if( !LayoutTextTest( data ) )
3598 tet_result(TET_FAIL);
3601 tet_result(TET_PASS);
3605 int UtcDaliTextReorderLayout01(void)
3607 ToolkitTestApplication application;
3608 tet_infoline(" UtcDaliTextReorderLayout01");
3610 // Reorder lines. No right to left characters.
3612 const std::string fontLatin( "TizenSans" );
3614 // Set a known font description
3615 FontDescriptionRun fontDescriptionRun01;
3616 fontDescriptionRun01.characterRun.characterIndex = 0u;
3617 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3618 fontDescriptionRun01.familyLength = fontLatin.size();
3619 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3620 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3621 fontDescriptionRun01.familyDefined = true;
3622 fontDescriptionRun01.weightDefined = false;
3623 fontDescriptionRun01.widthDefined = false;
3624 fontDescriptionRun01.slantDefined = false;
3625 fontDescriptionRun01.sizeDefined = false;
3627 Vector<FontDescriptionRun> fontDescriptionRuns;
3628 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3632 1.f, -12.f, 12.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f,
3635 Size textArea( 100.f, 300.f );
3637 ReLayoutRightToLeftLinesData data =
3639 "Text with no right to left text.",
3643 fontDescriptionRuns.Begin(),
3650 if( !ReLayoutRightToLeftLinesTest( data ) )
3652 tet_result(TET_FAIL);
3655 tet_result(TET_PASS);
3659 int UtcDaliTextReorderLayout02(void)
3661 ToolkitTestApplication application;
3662 tet_infoline(" UtcDaliTextReorderLayout02");
3664 // Reorder lines of the first paragraph.
3666 const std::string fontHebrew( "TizenSansHebrew" );
3667 const std::string fontArabic( "TizenSansArabic" );
3669 // Set a known font description
3670 FontDescriptionRun fontDescriptionRun01;
3671 fontDescriptionRun01.characterRun.characterIndex = 0u;
3672 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3673 fontDescriptionRun01.familyLength = fontHebrew.size();
3674 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3675 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3676 fontDescriptionRun01.familyDefined = true;
3677 fontDescriptionRun01.weightDefined = false;
3678 fontDescriptionRun01.widthDefined = false;
3679 fontDescriptionRun01.slantDefined = false;
3680 fontDescriptionRun01.sizeDefined = false;
3682 FontDescriptionRun fontDescriptionRun02;
3683 fontDescriptionRun02.characterRun.characterIndex = 10u;
3684 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3685 fontDescriptionRun02.familyLength = fontArabic.size();
3686 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3687 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3688 fontDescriptionRun02.familyDefined = true;
3689 fontDescriptionRun02.weightDefined = false;
3690 fontDescriptionRun02.widthDefined = false;
3691 fontDescriptionRun02.slantDefined = false;
3692 fontDescriptionRun02.sizeDefined = false;
3694 FontDescriptionRun fontDescriptionRun03;
3695 fontDescriptionRun03.characterRun.characterIndex = 24u;
3696 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3697 fontDescriptionRun03.familyLength = fontArabic.size();
3698 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3699 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3700 fontDescriptionRun03.familyDefined = true;
3701 fontDescriptionRun03.weightDefined = false;
3702 fontDescriptionRun03.widthDefined = false;
3703 fontDescriptionRun03.slantDefined = false;
3704 fontDescriptionRun03.sizeDefined = false;
3706 FontDescriptionRun fontDescriptionRun04;
3707 fontDescriptionRun04.characterRun.characterIndex = 38u;
3708 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3709 fontDescriptionRun04.familyLength = fontHebrew.size();
3710 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3711 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3712 fontDescriptionRun04.familyDefined = true;
3713 fontDescriptionRun04.weightDefined = false;
3714 fontDescriptionRun04.widthDefined = false;
3715 fontDescriptionRun04.slantDefined = false;
3716 fontDescriptionRun04.sizeDefined = false;
3718 FontDescriptionRun fontDescriptionRun05;
3719 fontDescriptionRun05.characterRun.characterIndex = 48u;
3720 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3721 fontDescriptionRun05.familyLength = fontHebrew.size();
3722 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3723 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3724 fontDescriptionRun05.familyDefined = true;
3725 fontDescriptionRun05.weightDefined = false;
3726 fontDescriptionRun05.widthDefined = false;
3727 fontDescriptionRun05.slantDefined = false;
3728 fontDescriptionRun05.sizeDefined = false;
3730 FontDescriptionRun fontDescriptionRun06;
3731 fontDescriptionRun06.characterRun.characterIndex = 58u;
3732 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3733 fontDescriptionRun06.familyLength = fontArabic.size();
3734 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3735 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3736 fontDescriptionRun06.familyDefined = true;
3737 fontDescriptionRun06.weightDefined = false;
3738 fontDescriptionRun06.widthDefined = false;
3739 fontDescriptionRun06.slantDefined = false;
3740 fontDescriptionRun06.sizeDefined = false;
3742 Vector<FontDescriptionRun> fontDescriptionRuns;
3743 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3744 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3745 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3746 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3747 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3748 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3752 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
3753 23.f, -7.f, 22.f, -11.f, 17.f, -11.f, 12.f, -8.f, 10.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f,
3754 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
3755 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3756 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3757 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3760 Size textArea( 100.f, 300.f );
3762 ReLayoutRightToLeftLinesData data =
3764 "Paragraphs with right to left text.",
3765 "שלום עולם مرحبا بالعالم\n"
3766 "مرحبا بالعالم שלום עולם\n"
3767 "שלום עולם مرحبا بالعالم.",
3770 fontDescriptionRuns.Begin(),
3777 if( !ReLayoutRightToLeftLinesTest( data ) )
3779 tet_result(TET_FAIL);
3782 tet_result(TET_PASS);
3786 int UtcDaliTextReorderLayout03(void)
3788 ToolkitTestApplication application;
3789 tet_infoline(" UtcDaliTextReorderLayout03");
3791 // Reorder lines of the mid paragraph.
3793 const std::string fontHebrew( "TizenSansHebrew" );
3794 const std::string fontArabic( "TizenSansArabic" );
3796 // Set a known font description
3797 FontDescriptionRun fontDescriptionRun01;
3798 fontDescriptionRun01.characterRun.characterIndex = 0u;
3799 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3800 fontDescriptionRun01.familyLength = fontHebrew.size();
3801 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3802 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3803 fontDescriptionRun01.familyDefined = true;
3804 fontDescriptionRun01.weightDefined = false;
3805 fontDescriptionRun01.widthDefined = false;
3806 fontDescriptionRun01.slantDefined = false;
3807 fontDescriptionRun01.sizeDefined = false;
3809 FontDescriptionRun fontDescriptionRun02;
3810 fontDescriptionRun02.characterRun.characterIndex = 10u;
3811 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3812 fontDescriptionRun02.familyLength = fontArabic.size();
3813 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3814 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3815 fontDescriptionRun02.familyDefined = true;
3816 fontDescriptionRun02.weightDefined = false;
3817 fontDescriptionRun02.widthDefined = false;
3818 fontDescriptionRun02.slantDefined = false;
3819 fontDescriptionRun02.sizeDefined = false;
3821 FontDescriptionRun fontDescriptionRun03;
3822 fontDescriptionRun03.characterRun.characterIndex = 24u;
3823 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3824 fontDescriptionRun03.familyLength = fontArabic.size();
3825 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3826 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3827 fontDescriptionRun03.familyDefined = true;
3828 fontDescriptionRun03.weightDefined = false;
3829 fontDescriptionRun03.widthDefined = false;
3830 fontDescriptionRun03.slantDefined = false;
3831 fontDescriptionRun03.sizeDefined = false;
3833 FontDescriptionRun fontDescriptionRun04;
3834 fontDescriptionRun04.characterRun.characterIndex = 38u;
3835 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3836 fontDescriptionRun04.familyLength = fontHebrew.size();
3837 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3838 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3839 fontDescriptionRun04.familyDefined = true;
3840 fontDescriptionRun04.weightDefined = false;
3841 fontDescriptionRun04.widthDefined = false;
3842 fontDescriptionRun04.slantDefined = false;
3843 fontDescriptionRun04.sizeDefined = false;
3845 FontDescriptionRun fontDescriptionRun05;
3846 fontDescriptionRun05.characterRun.characterIndex = 48u;
3847 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3848 fontDescriptionRun05.familyLength = fontHebrew.size();
3849 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3850 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3851 fontDescriptionRun05.familyDefined = true;
3852 fontDescriptionRun05.weightDefined = false;
3853 fontDescriptionRun05.widthDefined = false;
3854 fontDescriptionRun05.slantDefined = false;
3855 fontDescriptionRun05.sizeDefined = false;
3857 FontDescriptionRun fontDescriptionRun06;
3858 fontDescriptionRun06.characterRun.characterIndex = 58u;
3859 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3860 fontDescriptionRun06.familyLength = fontArabic.size();
3861 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3862 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3863 fontDescriptionRun06.familyDefined = true;
3864 fontDescriptionRun06.weightDefined = false;
3865 fontDescriptionRun06.widthDefined = false;
3866 fontDescriptionRun06.slantDefined = false;
3867 fontDescriptionRun06.sizeDefined = false;
3869 Vector<FontDescriptionRun> fontDescriptionRuns;
3870 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3871 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3872 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3873 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3874 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3875 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3879 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3880 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3881 86.f, -8.f, 81.f, -6.f, 74.f, -7.f, 71.f, -7.f, 70.f, -11.f, 66.f, -0.f, 62.f, -7.f, 61.f, -11.f, 56.f, -11.f, 51.f, -8.f, 49.f, -11.f, 44.f, -11.f, 39.f, -8.f, 36.f, -0.f, 26.f, -10.f, 18.f, -13.f, 13.f, -10.f, 5.f, -10.f, 0.f, -0.f,
3882 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3883 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3884 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 30.f, -2.f,
3887 Size textArea( 100.f, 300.f );
3889 ReLayoutRightToLeftLinesData data =
3891 "Paragraphs with right to left text.",
3892 "שלום עולם مرحبا بالعالم\n"
3893 "مرحبا بالعالم שלום עולם\n"
3894 "שלום עולם مرحبا بالعالم.",
3897 fontDescriptionRuns.Begin(),
3904 if( !ReLayoutRightToLeftLinesTest( data ) )
3906 tet_result(TET_FAIL);
3909 tet_result(TET_PASS);
3913 int UtcDaliTextReorderLayout04(void)
3915 ToolkitTestApplication application;
3916 tet_infoline(" UtcDaliTextReorderLayout04");
3918 // Reorder lines of the last paragraph.
3920 const std::string fontHebrew( "TizenSansHebrew" );
3921 const std::string fontArabic( "TizenSansArabic" );
3923 // Set a known font description
3924 FontDescriptionRun fontDescriptionRun01;
3925 fontDescriptionRun01.characterRun.characterIndex = 0u;
3926 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3927 fontDescriptionRun01.familyLength = fontHebrew.size();
3928 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3929 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3930 fontDescriptionRun01.familyDefined = true;
3931 fontDescriptionRun01.weightDefined = false;
3932 fontDescriptionRun01.widthDefined = false;
3933 fontDescriptionRun01.slantDefined = false;
3934 fontDescriptionRun01.sizeDefined = false;
3936 FontDescriptionRun fontDescriptionRun02;
3937 fontDescriptionRun02.characterRun.characterIndex = 10u;
3938 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3939 fontDescriptionRun02.familyLength = fontArabic.size();
3940 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3941 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3942 fontDescriptionRun02.familyDefined = true;
3943 fontDescriptionRun02.weightDefined = false;
3944 fontDescriptionRun02.widthDefined = false;
3945 fontDescriptionRun02.slantDefined = false;
3946 fontDescriptionRun02.sizeDefined = false;
3948 FontDescriptionRun fontDescriptionRun03;
3949 fontDescriptionRun03.characterRun.characterIndex = 24u;
3950 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3951 fontDescriptionRun03.familyLength = fontArabic.size();
3952 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3953 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3954 fontDescriptionRun03.familyDefined = true;
3955 fontDescriptionRun03.weightDefined = false;
3956 fontDescriptionRun03.widthDefined = false;
3957 fontDescriptionRun03.slantDefined = false;
3958 fontDescriptionRun03.sizeDefined = false;
3960 FontDescriptionRun fontDescriptionRun04;
3961 fontDescriptionRun04.characterRun.characterIndex = 38u;
3962 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3963 fontDescriptionRun04.familyLength = fontHebrew.size();
3964 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3965 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3966 fontDescriptionRun04.familyDefined = true;
3967 fontDescriptionRun04.weightDefined = false;
3968 fontDescriptionRun04.widthDefined = false;
3969 fontDescriptionRun04.slantDefined = false;
3970 fontDescriptionRun04.sizeDefined = false;
3972 FontDescriptionRun fontDescriptionRun05;
3973 fontDescriptionRun05.characterRun.characterIndex = 48u;
3974 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3975 fontDescriptionRun05.familyLength = fontHebrew.size();
3976 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3977 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3978 fontDescriptionRun05.familyDefined = true;
3979 fontDescriptionRun05.weightDefined = false;
3980 fontDescriptionRun05.widthDefined = false;
3981 fontDescriptionRun05.slantDefined = false;
3982 fontDescriptionRun05.sizeDefined = false;
3984 FontDescriptionRun fontDescriptionRun06;
3985 fontDescriptionRun06.characterRun.characterIndex = 58u;
3986 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3987 fontDescriptionRun06.familyLength = fontArabic.size();
3988 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3989 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3990 fontDescriptionRun06.familyDefined = true;
3991 fontDescriptionRun06.weightDefined = false;
3992 fontDescriptionRun06.widthDefined = false;
3993 fontDescriptionRun06.slantDefined = false;
3994 fontDescriptionRun06.sizeDefined = false;
3996 Vector<FontDescriptionRun> fontDescriptionRuns;
3997 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3998 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3999 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4000 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4001 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4002 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4006 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
4007 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
4008 0.f, -8.f, 7.f, -6.f, 12.f, -7.f, 18.f, -7.f, 23.f, -11.f, 25.f, -0.f, 27.f, -7.f, 32.f, -11.f, 33.f, -11.f, 37.f, -8.f, 44.f, -11.f, 45.f, -11.f, 49.f, -8.f, 55.f, -0.f, 59.f, -10.f, 70.f, -13.f, 77.f, -10.f, 82.f, -10.f, 90.f, -0.f,
4009 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4010 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 66.f, -10.f, 61.f, -0.f, 53.f, -10.f, 48.f, -10.f, 41.f, -13.f, 32.f, -10.f, 27.f, -0.f, 20.f, -8.f, 15.f, -6.f, 8.f, -7.f, 5.f, -7.f, 4.f, -11.f, 0.f, -0.f,
4011 28.f, -7.f, 27.f, -11.f, 22.f, -11.f, 17.f, -8.f, 15.f, -11.f, 10.f, -11.f, 5.f, -8.f, 2.f, -2.f,
4014 Size textArea( 100.f, 300.f );
4016 ReLayoutRightToLeftLinesData data =
4018 "Paragraphs with right to left text.",
4019 "שלום עולם مرحبا بالعالم\n"
4020 "مرحبا بالعالم שלום עולם\n"
4021 "שלום עולם مرحبا بالعالم.",
4024 fontDescriptionRuns.Begin(),
4031 if( !ReLayoutRightToLeftLinesTest( data ) )
4033 tet_result(TET_FAIL);
4036 tet_result(TET_PASS);
4040 int UtcDaliTextAlign01(void)
4042 ToolkitTestApplication application;
4043 tet_infoline(" UtcDaliTextAlign01");
4045 // Calculate text alignment.
4047 const std::string fontLatin( "TizenSans" );
4048 const std::string fontHebrew( "TizenSansHebrew" );
4049 const std::string fontArabic( "TizenSansArabic" );
4051 // Set a known font description
4052 FontDescriptionRun fontDescriptionRun01;
4053 fontDescriptionRun01.characterRun.characterIndex = 0u;
4054 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4055 fontDescriptionRun01.familyLength = fontLatin.size();
4056 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4057 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4058 fontDescriptionRun01.familyDefined = true;
4059 fontDescriptionRun01.weightDefined = false;
4060 fontDescriptionRun01.widthDefined = false;
4061 fontDescriptionRun01.slantDefined = false;
4062 fontDescriptionRun01.sizeDefined = false;
4064 FontDescriptionRun fontDescriptionRun02;
4065 fontDescriptionRun02.characterRun.characterIndex = 12u;
4066 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4067 fontDescriptionRun02.familyLength = fontHebrew.size();
4068 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4069 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4070 fontDescriptionRun02.familyDefined = true;
4071 fontDescriptionRun02.weightDefined = false;
4072 fontDescriptionRun02.widthDefined = false;
4073 fontDescriptionRun02.slantDefined = false;
4074 fontDescriptionRun02.sizeDefined = false;
4076 FontDescriptionRun fontDescriptionRun03;
4077 fontDescriptionRun03.characterRun.characterIndex = 22u;
4078 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4079 fontDescriptionRun03.familyLength = fontArabic.size();
4080 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4081 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4082 fontDescriptionRun03.familyDefined = true;
4083 fontDescriptionRun03.weightDefined = false;
4084 fontDescriptionRun03.widthDefined = false;
4085 fontDescriptionRun03.slantDefined = false;
4086 fontDescriptionRun03.sizeDefined = false;
4088 FontDescriptionRun fontDescriptionRun04;
4089 fontDescriptionRun04.characterRun.characterIndex = 36u;
4090 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4091 fontDescriptionRun04.familyLength = fontLatin.size();
4092 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4093 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4094 fontDescriptionRun04.familyDefined = true;
4095 fontDescriptionRun04.weightDefined = false;
4096 fontDescriptionRun04.widthDefined = false;
4097 fontDescriptionRun04.slantDefined = false;
4098 fontDescriptionRun04.sizeDefined = false;
4100 FontDescriptionRun fontDescriptionRun05;
4101 fontDescriptionRun05.characterRun.characterIndex = 48u;
4102 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4103 fontDescriptionRun05.familyLength = fontLatin.size();
4104 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4105 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4106 fontDescriptionRun05.familyDefined = true;
4107 fontDescriptionRun05.weightDefined = false;
4108 fontDescriptionRun05.widthDefined = false;
4109 fontDescriptionRun05.slantDefined = false;
4110 fontDescriptionRun05.sizeDefined = false;
4112 FontDescriptionRun fontDescriptionRun06;
4113 fontDescriptionRun06.characterRun.characterIndex = 60u;
4114 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4115 fontDescriptionRun06.familyLength = fontArabic.size();
4116 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4117 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4118 fontDescriptionRun06.familyDefined = true;
4119 fontDescriptionRun06.weightDefined = false;
4120 fontDescriptionRun06.widthDefined = false;
4121 fontDescriptionRun06.slantDefined = false;
4122 fontDescriptionRun06.sizeDefined = false;
4124 Vector<FontDescriptionRun> fontDescriptionRuns;
4125 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4126 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4127 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4128 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4129 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4130 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4132 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4134 Size textArea( 100.f, 300.f );
4137 "Begin alignment for the first paragraph.",
4138 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4141 fontDescriptionRuns.Begin(),
4142 Layout::HORIZONTAL_ALIGN_BEGIN,
4143 Layout::VERTICAL_ALIGN_TOP,
4150 if( !AlignTest( data ) )
4152 tet_result(TET_FAIL);
4155 tet_result(TET_PASS);
4159 int UtcDaliTextAlign02(void)
4161 ToolkitTestApplication application;
4162 tet_infoline(" UtcDaliTextAlign02");
4164 // Calculate text alignment.
4166 const std::string fontLatin( "TizenSans" );
4167 const std::string fontHebrew( "TizenSansHebrew" );
4168 const std::string fontArabic( "TizenSansArabic" );
4170 // Set a known font description
4171 FontDescriptionRun fontDescriptionRun01;
4172 fontDescriptionRun01.characterRun.characterIndex = 0u;
4173 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4174 fontDescriptionRun01.familyLength = fontLatin.size();
4175 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4176 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4177 fontDescriptionRun01.familyDefined = true;
4178 fontDescriptionRun01.weightDefined = false;
4179 fontDescriptionRun01.widthDefined = false;
4180 fontDescriptionRun01.slantDefined = false;
4181 fontDescriptionRun01.sizeDefined = false;
4183 FontDescriptionRun fontDescriptionRun02;
4184 fontDescriptionRun02.characterRun.characterIndex = 12u;
4185 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4186 fontDescriptionRun02.familyLength = fontHebrew.size();
4187 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4188 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4189 fontDescriptionRun02.familyDefined = true;
4190 fontDescriptionRun02.weightDefined = false;
4191 fontDescriptionRun02.widthDefined = false;
4192 fontDescriptionRun02.slantDefined = false;
4193 fontDescriptionRun02.sizeDefined = false;
4195 FontDescriptionRun fontDescriptionRun03;
4196 fontDescriptionRun03.characterRun.characterIndex = 22u;
4197 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4198 fontDescriptionRun03.familyLength = fontArabic.size();
4199 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4200 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4201 fontDescriptionRun03.familyDefined = true;
4202 fontDescriptionRun03.weightDefined = false;
4203 fontDescriptionRun03.widthDefined = false;
4204 fontDescriptionRun03.slantDefined = false;
4205 fontDescriptionRun03.sizeDefined = false;
4207 FontDescriptionRun fontDescriptionRun04;
4208 fontDescriptionRun04.characterRun.characterIndex = 36u;
4209 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4210 fontDescriptionRun04.familyLength = fontLatin.size();
4211 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4212 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4213 fontDescriptionRun04.familyDefined = true;
4214 fontDescriptionRun04.weightDefined = false;
4215 fontDescriptionRun04.widthDefined = false;
4216 fontDescriptionRun04.slantDefined = false;
4217 fontDescriptionRun04.sizeDefined = false;
4219 FontDescriptionRun fontDescriptionRun05;
4220 fontDescriptionRun05.characterRun.characterIndex = 48u;
4221 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4222 fontDescriptionRun05.familyLength = fontLatin.size();
4223 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4224 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4225 fontDescriptionRun05.familyDefined = true;
4226 fontDescriptionRun05.weightDefined = false;
4227 fontDescriptionRun05.widthDefined = false;
4228 fontDescriptionRun05.slantDefined = false;
4229 fontDescriptionRun05.sizeDefined = false;
4231 FontDescriptionRun fontDescriptionRun06;
4232 fontDescriptionRun06.characterRun.characterIndex = 60u;
4233 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4234 fontDescriptionRun06.familyLength = fontArabic.size();
4235 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4236 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4237 fontDescriptionRun06.familyDefined = true;
4238 fontDescriptionRun06.weightDefined = false;
4239 fontDescriptionRun06.widthDefined = false;
4240 fontDescriptionRun06.slantDefined = false;
4241 fontDescriptionRun06.sizeDefined = false;
4243 Vector<FontDescriptionRun> fontDescriptionRuns;
4244 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4245 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4246 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4247 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4248 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4249 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4251 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4253 Size textArea( 100.f, 300.f );
4256 "Begin alignment for the mid paragraph.",
4257 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4260 fontDescriptionRuns.Begin(),
4261 Layout::HORIZONTAL_ALIGN_BEGIN,
4262 Layout::VERTICAL_ALIGN_TOP,
4269 if( !AlignTest( data ) )
4271 tet_result(TET_FAIL);
4274 tet_result(TET_PASS);
4278 int UtcDaliTextAlign03(void)
4280 ToolkitTestApplication application;
4281 tet_infoline(" UtcDaliTextAlign03");
4283 // Calculate text alignment.
4285 const std::string fontLatin( "TizenSans" );
4286 const std::string fontHebrew( "TizenSansHebrew" );
4287 const std::string fontArabic( "TizenSansArabic" );
4289 // Set a known font description
4290 FontDescriptionRun fontDescriptionRun01;
4291 fontDescriptionRun01.characterRun.characterIndex = 0u;
4292 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4293 fontDescriptionRun01.familyLength = fontLatin.size();
4294 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4295 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4296 fontDescriptionRun01.familyDefined = true;
4297 fontDescriptionRun01.weightDefined = false;
4298 fontDescriptionRun01.widthDefined = false;
4299 fontDescriptionRun01.slantDefined = false;
4300 fontDescriptionRun01.sizeDefined = false;
4302 FontDescriptionRun fontDescriptionRun02;
4303 fontDescriptionRun02.characterRun.characterIndex = 12u;
4304 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4305 fontDescriptionRun02.familyLength = fontHebrew.size();
4306 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4307 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4308 fontDescriptionRun02.familyDefined = true;
4309 fontDescriptionRun02.weightDefined = false;
4310 fontDescriptionRun02.widthDefined = false;
4311 fontDescriptionRun02.slantDefined = false;
4312 fontDescriptionRun02.sizeDefined = false;
4314 FontDescriptionRun fontDescriptionRun03;
4315 fontDescriptionRun03.characterRun.characterIndex = 22u;
4316 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4317 fontDescriptionRun03.familyLength = fontArabic.size();
4318 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4319 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4320 fontDescriptionRun03.familyDefined = true;
4321 fontDescriptionRun03.weightDefined = false;
4322 fontDescriptionRun03.widthDefined = false;
4323 fontDescriptionRun03.slantDefined = false;
4324 fontDescriptionRun03.sizeDefined = false;
4326 FontDescriptionRun fontDescriptionRun04;
4327 fontDescriptionRun04.characterRun.characterIndex = 36u;
4328 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4329 fontDescriptionRun04.familyLength = fontLatin.size();
4330 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4331 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4332 fontDescriptionRun04.familyDefined = true;
4333 fontDescriptionRun04.weightDefined = false;
4334 fontDescriptionRun04.widthDefined = false;
4335 fontDescriptionRun04.slantDefined = false;
4336 fontDescriptionRun04.sizeDefined = false;
4338 FontDescriptionRun fontDescriptionRun05;
4339 fontDescriptionRun05.characterRun.characterIndex = 48u;
4340 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4341 fontDescriptionRun05.familyLength = fontLatin.size();
4342 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4343 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4344 fontDescriptionRun05.familyDefined = true;
4345 fontDescriptionRun05.weightDefined = false;
4346 fontDescriptionRun05.widthDefined = false;
4347 fontDescriptionRun05.slantDefined = false;
4348 fontDescriptionRun05.sizeDefined = false;
4350 FontDescriptionRun fontDescriptionRun06;
4351 fontDescriptionRun06.characterRun.characterIndex = 60u;
4352 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4353 fontDescriptionRun06.familyLength = fontArabic.size();
4354 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4355 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4356 fontDescriptionRun06.familyDefined = true;
4357 fontDescriptionRun06.weightDefined = false;
4358 fontDescriptionRun06.widthDefined = false;
4359 fontDescriptionRun06.slantDefined = false;
4360 fontDescriptionRun06.sizeDefined = false;
4362 Vector<FontDescriptionRun> fontDescriptionRuns;
4363 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4364 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4365 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4366 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4367 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4368 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4370 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4372 Size textArea( 100.f, 300.f );
4375 "Begin alignment for the last paragraph.",
4376 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4379 fontDescriptionRuns.Begin(),
4380 Layout::HORIZONTAL_ALIGN_BEGIN,
4381 Layout::VERTICAL_ALIGN_TOP,
4388 if( !AlignTest( data ) )
4390 tet_result(TET_FAIL);
4393 tet_result(TET_PASS);
4397 int UtcDaliTextAlign04(void)
4399 ToolkitTestApplication application;
4400 tet_infoline(" UtcDaliTextAlign04");
4402 // Calculate text alignment.
4404 const std::string fontLatin( "TizenSans" );
4405 const std::string fontHebrew( "TizenSansHebrew" );
4406 const std::string fontArabic( "TizenSansArabic" );
4408 // Set a known font description
4409 FontDescriptionRun fontDescriptionRun01;
4410 fontDescriptionRun01.characterRun.characterIndex = 0u;
4411 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4412 fontDescriptionRun01.familyLength = fontLatin.size();
4413 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4414 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4415 fontDescriptionRun01.familyDefined = true;
4416 fontDescriptionRun01.weightDefined = false;
4417 fontDescriptionRun01.widthDefined = false;
4418 fontDescriptionRun01.slantDefined = false;
4419 fontDescriptionRun01.sizeDefined = false;
4421 FontDescriptionRun fontDescriptionRun02;
4422 fontDescriptionRun02.characterRun.characterIndex = 12u;
4423 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4424 fontDescriptionRun02.familyLength = fontHebrew.size();
4425 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4426 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4427 fontDescriptionRun02.familyDefined = true;
4428 fontDescriptionRun02.weightDefined = false;
4429 fontDescriptionRun02.widthDefined = false;
4430 fontDescriptionRun02.slantDefined = false;
4431 fontDescriptionRun02.sizeDefined = false;
4433 FontDescriptionRun fontDescriptionRun03;
4434 fontDescriptionRun03.characterRun.characterIndex = 22u;
4435 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4436 fontDescriptionRun03.familyLength = fontArabic.size();
4437 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4438 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4439 fontDescriptionRun03.familyDefined = true;
4440 fontDescriptionRun03.weightDefined = false;
4441 fontDescriptionRun03.widthDefined = false;
4442 fontDescriptionRun03.slantDefined = false;
4443 fontDescriptionRun03.sizeDefined = false;
4445 FontDescriptionRun fontDescriptionRun04;
4446 fontDescriptionRun04.characterRun.characterIndex = 36u;
4447 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4448 fontDescriptionRun04.familyLength = fontLatin.size();
4449 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4450 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4451 fontDescriptionRun04.familyDefined = true;
4452 fontDescriptionRun04.weightDefined = false;
4453 fontDescriptionRun04.widthDefined = false;
4454 fontDescriptionRun04.slantDefined = false;
4455 fontDescriptionRun04.sizeDefined = false;
4457 FontDescriptionRun fontDescriptionRun05;
4458 fontDescriptionRun05.characterRun.characterIndex = 48u;
4459 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4460 fontDescriptionRun05.familyLength = fontLatin.size();
4461 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4462 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4463 fontDescriptionRun05.familyDefined = true;
4464 fontDescriptionRun05.weightDefined = false;
4465 fontDescriptionRun05.widthDefined = false;
4466 fontDescriptionRun05.slantDefined = false;
4467 fontDescriptionRun05.sizeDefined = false;
4469 FontDescriptionRun fontDescriptionRun06;
4470 fontDescriptionRun06.characterRun.characterIndex = 60u;
4471 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4472 fontDescriptionRun06.familyLength = fontArabic.size();
4473 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4474 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4475 fontDescriptionRun06.familyDefined = true;
4476 fontDescriptionRun06.weightDefined = false;
4477 fontDescriptionRun06.widthDefined = false;
4478 fontDescriptionRun06.slantDefined = false;
4479 fontDescriptionRun06.sizeDefined = false;
4481 Vector<FontDescriptionRun> fontDescriptionRuns;
4482 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4483 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4484 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4485 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4486 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4487 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4489 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4491 Size textArea( 100.f, 300.f );
4494 "Center alignment for the first paragraph.",
4495 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4498 fontDescriptionRuns.Begin(),
4499 Layout::HORIZONTAL_ALIGN_CENTER,
4500 Layout::VERTICAL_ALIGN_TOP,
4507 if( !AlignTest( data ) )
4509 tet_result(TET_FAIL);
4512 tet_result(TET_PASS);
4516 int UtcDaliTextAlign05(void)
4518 ToolkitTestApplication application;
4519 tet_infoline(" UtcDaliTextAlign05");
4521 // Calculate text alignment.
4523 const std::string fontLatin( "TizenSans" );
4524 const std::string fontHebrew( "TizenSansHebrew" );
4525 const std::string fontArabic( "TizenSansArabic" );
4527 // Set a known font description
4528 FontDescriptionRun fontDescriptionRun01;
4529 fontDescriptionRun01.characterRun.characterIndex = 0u;
4530 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4531 fontDescriptionRun01.familyLength = fontLatin.size();
4532 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4533 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4534 fontDescriptionRun01.familyDefined = true;
4535 fontDescriptionRun01.weightDefined = false;
4536 fontDescriptionRun01.widthDefined = false;
4537 fontDescriptionRun01.slantDefined = false;
4538 fontDescriptionRun01.sizeDefined = false;
4540 FontDescriptionRun fontDescriptionRun02;
4541 fontDescriptionRun02.characterRun.characterIndex = 12u;
4542 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4543 fontDescriptionRun02.familyLength = fontHebrew.size();
4544 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4545 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4546 fontDescriptionRun02.familyDefined = true;
4547 fontDescriptionRun02.weightDefined = false;
4548 fontDescriptionRun02.widthDefined = false;
4549 fontDescriptionRun02.slantDefined = false;
4550 fontDescriptionRun02.sizeDefined = false;
4552 FontDescriptionRun fontDescriptionRun03;
4553 fontDescriptionRun03.characterRun.characterIndex = 22u;
4554 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4555 fontDescriptionRun03.familyLength = fontArabic.size();
4556 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4557 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4558 fontDescriptionRun03.familyDefined = true;
4559 fontDescriptionRun03.weightDefined = false;
4560 fontDescriptionRun03.widthDefined = false;
4561 fontDescriptionRun03.slantDefined = false;
4562 fontDescriptionRun03.sizeDefined = false;
4564 FontDescriptionRun fontDescriptionRun04;
4565 fontDescriptionRun04.characterRun.characterIndex = 36u;
4566 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4567 fontDescriptionRun04.familyLength = fontLatin.size();
4568 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4569 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4570 fontDescriptionRun04.familyDefined = true;
4571 fontDescriptionRun04.weightDefined = false;
4572 fontDescriptionRun04.widthDefined = false;
4573 fontDescriptionRun04.slantDefined = false;
4574 fontDescriptionRun04.sizeDefined = false;
4576 FontDescriptionRun fontDescriptionRun05;
4577 fontDescriptionRun05.characterRun.characterIndex = 48u;
4578 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4579 fontDescriptionRun05.familyLength = fontLatin.size();
4580 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4581 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4582 fontDescriptionRun05.familyDefined = true;
4583 fontDescriptionRun05.weightDefined = false;
4584 fontDescriptionRun05.widthDefined = false;
4585 fontDescriptionRun05.slantDefined = false;
4586 fontDescriptionRun05.sizeDefined = false;
4588 FontDescriptionRun fontDescriptionRun06;
4589 fontDescriptionRun06.characterRun.characterIndex = 60u;
4590 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4591 fontDescriptionRun06.familyLength = fontArabic.size();
4592 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4593 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4594 fontDescriptionRun06.familyDefined = true;
4595 fontDescriptionRun06.weightDefined = false;
4596 fontDescriptionRun06.widthDefined = false;
4597 fontDescriptionRun06.slantDefined = false;
4598 fontDescriptionRun06.sizeDefined = false;
4600 Vector<FontDescriptionRun> fontDescriptionRuns;
4601 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4602 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4603 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4604 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4605 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4606 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4608 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4610 Size textArea( 100.f, 300.f );
4613 "Center alignment for the mid paragraph.",
4614 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4617 fontDescriptionRuns.Begin(),
4618 Layout::HORIZONTAL_ALIGN_CENTER,
4619 Layout::VERTICAL_ALIGN_TOP,
4626 if( !AlignTest( data ) )
4628 tet_result(TET_FAIL);
4631 tet_result(TET_PASS);
4635 int UtcDaliTextAlign06(void)
4637 ToolkitTestApplication application;
4638 tet_infoline(" UtcDaliTextAlign06");
4640 // Calculate text alignment.
4642 const std::string fontLatin( "TizenSans" );
4643 const std::string fontHebrew( "TizenSansHebrew" );
4644 const std::string fontArabic( "TizenSansArabic" );
4646 // Set a known font description
4647 FontDescriptionRun fontDescriptionRun01;
4648 fontDescriptionRun01.characterRun.characterIndex = 0u;
4649 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4650 fontDescriptionRun01.familyLength = fontLatin.size();
4651 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4652 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4653 fontDescriptionRun01.familyDefined = true;
4654 fontDescriptionRun01.weightDefined = false;
4655 fontDescriptionRun01.widthDefined = false;
4656 fontDescriptionRun01.slantDefined = false;
4657 fontDescriptionRun01.sizeDefined = false;
4659 FontDescriptionRun fontDescriptionRun02;
4660 fontDescriptionRun02.characterRun.characterIndex = 12u;
4661 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4662 fontDescriptionRun02.familyLength = fontHebrew.size();
4663 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4664 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4665 fontDescriptionRun02.familyDefined = true;
4666 fontDescriptionRun02.weightDefined = false;
4667 fontDescriptionRun02.widthDefined = false;
4668 fontDescriptionRun02.slantDefined = false;
4669 fontDescriptionRun02.sizeDefined = false;
4671 FontDescriptionRun fontDescriptionRun03;
4672 fontDescriptionRun03.characterRun.characterIndex = 22u;
4673 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4674 fontDescriptionRun03.familyLength = fontArabic.size();
4675 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4676 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4677 fontDescriptionRun03.familyDefined = true;
4678 fontDescriptionRun03.weightDefined = false;
4679 fontDescriptionRun03.widthDefined = false;
4680 fontDescriptionRun03.slantDefined = false;
4681 fontDescriptionRun03.sizeDefined = false;
4683 FontDescriptionRun fontDescriptionRun04;
4684 fontDescriptionRun04.characterRun.characterIndex = 36u;
4685 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4686 fontDescriptionRun04.familyLength = fontLatin.size();
4687 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4688 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4689 fontDescriptionRun04.familyDefined = true;
4690 fontDescriptionRun04.weightDefined = false;
4691 fontDescriptionRun04.widthDefined = false;
4692 fontDescriptionRun04.slantDefined = false;
4693 fontDescriptionRun04.sizeDefined = false;
4695 FontDescriptionRun fontDescriptionRun05;
4696 fontDescriptionRun05.characterRun.characterIndex = 48u;
4697 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4698 fontDescriptionRun05.familyLength = fontLatin.size();
4699 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4700 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4701 fontDescriptionRun05.familyDefined = true;
4702 fontDescriptionRun05.weightDefined = false;
4703 fontDescriptionRun05.widthDefined = false;
4704 fontDescriptionRun05.slantDefined = false;
4705 fontDescriptionRun05.sizeDefined = false;
4707 FontDescriptionRun fontDescriptionRun06;
4708 fontDescriptionRun06.characterRun.characterIndex = 60u;
4709 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4710 fontDescriptionRun06.familyLength = fontArabic.size();
4711 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4712 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4713 fontDescriptionRun06.familyDefined = true;
4714 fontDescriptionRun06.weightDefined = false;
4715 fontDescriptionRun06.widthDefined = false;
4716 fontDescriptionRun06.slantDefined = false;
4717 fontDescriptionRun06.sizeDefined = false;
4719 Vector<FontDescriptionRun> fontDescriptionRuns;
4720 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4721 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4722 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4723 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4724 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4725 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4727 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4729 Size textArea( 100.f, 300.f );
4732 "Center alignment for the last paragraph.",
4733 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4736 fontDescriptionRuns.Begin(),
4737 Layout::HORIZONTAL_ALIGN_CENTER,
4738 Layout::VERTICAL_ALIGN_TOP,
4745 if( !AlignTest( data ) )
4747 tet_result(TET_FAIL);
4750 tet_result(TET_PASS);
4754 int UtcDaliTextAlign07(void)
4756 ToolkitTestApplication application;
4757 tet_infoline(" UtcDaliTextAlign07");
4759 // Calculate text alignment.
4761 const std::string fontLatin( "TizenSans" );
4762 const std::string fontHebrew( "TizenSansHebrew" );
4763 const std::string fontArabic( "TizenSansArabic" );
4765 // Set a known font description
4766 FontDescriptionRun fontDescriptionRun01;
4767 fontDescriptionRun01.characterRun.characterIndex = 0u;
4768 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4769 fontDescriptionRun01.familyLength = fontLatin.size();
4770 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4771 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4772 fontDescriptionRun01.familyDefined = true;
4773 fontDescriptionRun01.weightDefined = false;
4774 fontDescriptionRun01.widthDefined = false;
4775 fontDescriptionRun01.slantDefined = false;
4776 fontDescriptionRun01.sizeDefined = false;
4778 FontDescriptionRun fontDescriptionRun02;
4779 fontDescriptionRun02.characterRun.characterIndex = 12u;
4780 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4781 fontDescriptionRun02.familyLength = fontHebrew.size();
4782 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4783 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4784 fontDescriptionRun02.familyDefined = true;
4785 fontDescriptionRun02.weightDefined = false;
4786 fontDescriptionRun02.widthDefined = false;
4787 fontDescriptionRun02.slantDefined = false;
4788 fontDescriptionRun02.sizeDefined = false;
4790 FontDescriptionRun fontDescriptionRun03;
4791 fontDescriptionRun03.characterRun.characterIndex = 22u;
4792 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4793 fontDescriptionRun03.familyLength = fontArabic.size();
4794 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4795 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4796 fontDescriptionRun03.familyDefined = true;
4797 fontDescriptionRun03.weightDefined = false;
4798 fontDescriptionRun03.widthDefined = false;
4799 fontDescriptionRun03.slantDefined = false;
4800 fontDescriptionRun03.sizeDefined = false;
4802 FontDescriptionRun fontDescriptionRun04;
4803 fontDescriptionRun04.characterRun.characterIndex = 36u;
4804 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4805 fontDescriptionRun04.familyLength = fontLatin.size();
4806 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4807 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4808 fontDescriptionRun04.familyDefined = true;
4809 fontDescriptionRun04.weightDefined = false;
4810 fontDescriptionRun04.widthDefined = false;
4811 fontDescriptionRun04.slantDefined = false;
4812 fontDescriptionRun04.sizeDefined = false;
4814 FontDescriptionRun fontDescriptionRun05;
4815 fontDescriptionRun05.characterRun.characterIndex = 48u;
4816 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4817 fontDescriptionRun05.familyLength = fontLatin.size();
4818 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4819 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4820 fontDescriptionRun05.familyDefined = true;
4821 fontDescriptionRun05.weightDefined = false;
4822 fontDescriptionRun05.widthDefined = false;
4823 fontDescriptionRun05.slantDefined = false;
4824 fontDescriptionRun05.sizeDefined = false;
4826 FontDescriptionRun fontDescriptionRun06;
4827 fontDescriptionRun06.characterRun.characterIndex = 60u;
4828 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4829 fontDescriptionRun06.familyLength = fontArabic.size();
4830 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4831 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4832 fontDescriptionRun06.familyDefined = true;
4833 fontDescriptionRun06.weightDefined = false;
4834 fontDescriptionRun06.widthDefined = false;
4835 fontDescriptionRun06.slantDefined = false;
4836 fontDescriptionRun06.sizeDefined = false;
4838 Vector<FontDescriptionRun> fontDescriptionRuns;
4839 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4840 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4841 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4842 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4843 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4844 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4846 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4848 Size textArea( 100.f, 300.f );
4851 "End alignment for the first paragraph.",
4852 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4855 fontDescriptionRuns.Begin(),
4856 Layout::HORIZONTAL_ALIGN_END,
4857 Layout::VERTICAL_ALIGN_TOP,
4864 if( !AlignTest( data ) )
4866 tet_result(TET_FAIL);
4869 tet_result(TET_PASS);
4873 int UtcDaliTextAlign08(void)
4875 ToolkitTestApplication application;
4876 tet_infoline(" UtcDaliTextAlign08");
4878 // Calculate text alignment.
4880 const std::string fontLatin( "TizenSans" );
4881 const std::string fontHebrew( "TizenSansHebrew" );
4882 const std::string fontArabic( "TizenSansArabic" );
4884 // Set a known font description
4885 FontDescriptionRun fontDescriptionRun01;
4886 fontDescriptionRun01.characterRun.characterIndex = 0u;
4887 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4888 fontDescriptionRun01.familyLength = fontLatin.size();
4889 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4890 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4891 fontDescriptionRun01.familyDefined = true;
4892 fontDescriptionRun01.weightDefined = false;
4893 fontDescriptionRun01.widthDefined = false;
4894 fontDescriptionRun01.slantDefined = false;
4895 fontDescriptionRun01.sizeDefined = false;
4897 FontDescriptionRun fontDescriptionRun02;
4898 fontDescriptionRun02.characterRun.characterIndex = 12u;
4899 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4900 fontDescriptionRun02.familyLength = fontHebrew.size();
4901 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4902 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4903 fontDescriptionRun02.familyDefined = true;
4904 fontDescriptionRun02.weightDefined = false;
4905 fontDescriptionRun02.widthDefined = false;
4906 fontDescriptionRun02.slantDefined = false;
4907 fontDescriptionRun02.sizeDefined = false;
4909 FontDescriptionRun fontDescriptionRun03;
4910 fontDescriptionRun03.characterRun.characterIndex = 22u;
4911 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4912 fontDescriptionRun03.familyLength = fontArabic.size();
4913 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4914 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4915 fontDescriptionRun03.familyDefined = true;
4916 fontDescriptionRun03.weightDefined = false;
4917 fontDescriptionRun03.widthDefined = false;
4918 fontDescriptionRun03.slantDefined = false;
4919 fontDescriptionRun03.sizeDefined = false;
4921 FontDescriptionRun fontDescriptionRun04;
4922 fontDescriptionRun04.characterRun.characterIndex = 36u;
4923 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4924 fontDescriptionRun04.familyLength = fontLatin.size();
4925 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4926 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4927 fontDescriptionRun04.familyDefined = true;
4928 fontDescriptionRun04.weightDefined = false;
4929 fontDescriptionRun04.widthDefined = false;
4930 fontDescriptionRun04.slantDefined = false;
4931 fontDescriptionRun04.sizeDefined = false;
4933 FontDescriptionRun fontDescriptionRun05;
4934 fontDescriptionRun05.characterRun.characterIndex = 48u;
4935 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4936 fontDescriptionRun05.familyLength = fontLatin.size();
4937 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4938 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4939 fontDescriptionRun05.familyDefined = true;
4940 fontDescriptionRun05.weightDefined = false;
4941 fontDescriptionRun05.widthDefined = false;
4942 fontDescriptionRun05.slantDefined = false;
4943 fontDescriptionRun05.sizeDefined = false;
4945 FontDescriptionRun fontDescriptionRun06;
4946 fontDescriptionRun06.characterRun.characterIndex = 60u;
4947 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4948 fontDescriptionRun06.familyLength = fontArabic.size();
4949 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4950 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4951 fontDescriptionRun06.familyDefined = true;
4952 fontDescriptionRun06.weightDefined = false;
4953 fontDescriptionRun06.widthDefined = false;
4954 fontDescriptionRun06.slantDefined = false;
4955 fontDescriptionRun06.sizeDefined = false;
4957 Vector<FontDescriptionRun> fontDescriptionRuns;
4958 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4959 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4960 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4961 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4962 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4963 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4965 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
4967 Size textArea( 100.f, 300.f );
4970 "End alignment for the mid paragraph.",
4971 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4974 fontDescriptionRuns.Begin(),
4975 Layout::HORIZONTAL_ALIGN_END,
4976 Layout::VERTICAL_ALIGN_TOP,
4983 if( !AlignTest( data ) )
4985 tet_result(TET_FAIL);
4988 tet_result(TET_PASS);
4992 int UtcDaliTextAlign09(void)
4994 ToolkitTestApplication application;
4995 tet_infoline(" UtcDaliTextAlign09");
4997 // Calculate text alignment.
4999 const std::string fontLatin( "TizenSans" );
5000 const std::string fontHebrew( "TizenSansHebrew" );
5001 const std::string fontArabic( "TizenSansArabic" );
5003 // Set a known font description
5004 FontDescriptionRun fontDescriptionRun01;
5005 fontDescriptionRun01.characterRun.characterIndex = 0u;
5006 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5007 fontDescriptionRun01.familyLength = fontLatin.size();
5008 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5009 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5010 fontDescriptionRun01.familyDefined = true;
5011 fontDescriptionRun01.weightDefined = false;
5012 fontDescriptionRun01.widthDefined = false;
5013 fontDescriptionRun01.slantDefined = false;
5014 fontDescriptionRun01.sizeDefined = false;
5016 FontDescriptionRun fontDescriptionRun02;
5017 fontDescriptionRun02.characterRun.characterIndex = 12u;
5018 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5019 fontDescriptionRun02.familyLength = fontHebrew.size();
5020 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5021 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5022 fontDescriptionRun02.familyDefined = true;
5023 fontDescriptionRun02.weightDefined = false;
5024 fontDescriptionRun02.widthDefined = false;
5025 fontDescriptionRun02.slantDefined = false;
5026 fontDescriptionRun02.sizeDefined = false;
5028 FontDescriptionRun fontDescriptionRun03;
5029 fontDescriptionRun03.characterRun.characterIndex = 22u;
5030 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5031 fontDescriptionRun03.familyLength = fontArabic.size();
5032 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5033 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5034 fontDescriptionRun03.familyDefined = true;
5035 fontDescriptionRun03.weightDefined = false;
5036 fontDescriptionRun03.widthDefined = false;
5037 fontDescriptionRun03.slantDefined = false;
5038 fontDescriptionRun03.sizeDefined = false;
5040 FontDescriptionRun fontDescriptionRun04;
5041 fontDescriptionRun04.characterRun.characterIndex = 36u;
5042 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5043 fontDescriptionRun04.familyLength = fontLatin.size();
5044 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5045 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5046 fontDescriptionRun04.familyDefined = true;
5047 fontDescriptionRun04.weightDefined = false;
5048 fontDescriptionRun04.widthDefined = false;
5049 fontDescriptionRun04.slantDefined = false;
5050 fontDescriptionRun04.sizeDefined = false;
5052 FontDescriptionRun fontDescriptionRun05;
5053 fontDescriptionRun05.characterRun.characterIndex = 48u;
5054 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5055 fontDescriptionRun05.familyLength = fontLatin.size();
5056 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5057 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5058 fontDescriptionRun05.familyDefined = true;
5059 fontDescriptionRun05.weightDefined = false;
5060 fontDescriptionRun05.widthDefined = false;
5061 fontDescriptionRun05.slantDefined = false;
5062 fontDescriptionRun05.sizeDefined = false;
5064 FontDescriptionRun fontDescriptionRun06;
5065 fontDescriptionRun06.characterRun.characterIndex = 60u;
5066 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5067 fontDescriptionRun06.familyLength = fontArabic.size();
5068 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5069 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5070 fontDescriptionRun06.familyDefined = true;
5071 fontDescriptionRun06.weightDefined = false;
5072 fontDescriptionRun06.widthDefined = false;
5073 fontDescriptionRun06.slantDefined = false;
5074 fontDescriptionRun06.sizeDefined = false;
5076 Vector<FontDescriptionRun> fontDescriptionRuns;
5077 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5078 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5079 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5080 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5081 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5082 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5084 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5086 Size textArea( 100.f, 300.f );
5089 "End alignment for the last paragraph.",
5090 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5093 fontDescriptionRuns.Begin(),
5094 Layout::HORIZONTAL_ALIGN_END,
5095 Layout::VERTICAL_ALIGN_TOP,
5102 if( !AlignTest( data ) )
5104 tet_result(TET_FAIL);
5107 tet_result(TET_PASS);
5111 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5113 ToolkitTestApplication application;
5114 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5116 Layout::Engine engine;
5117 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5119 engine.SetDefaultLineSpacing( 10.f );
5120 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5122 tet_result(TET_PASS);