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,
173 Layout::LineWrap::WORD );
175 layoutParameters.isLastNewParagraph = isLastNewParagraph;
177 // The initial glyph and the number of glyphs to layout.
178 layoutParameters.startGlyphIndex = data.startIndex;
179 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
180 layoutParameters.startLineIndex = startRemoveIndex;
181 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
183 layoutSize = Vector2::ZERO;
185 const bool updated = engine.LayoutText( layoutParameters,
191 // 4) Compare the results.
193 if( updated != data.updated )
195 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
199 if( layoutSize != data.layoutSize )
201 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
205 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
207 const Vector2& position = *( glyphPositions.Begin() + index );
209 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
211 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
214 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
216 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
221 if( lines.Count() != data.numberOfLines )
223 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
227 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
229 const LineRun& line = *( lines.Begin() + index );
230 const LineRun& expectedLine = *( data.lines + index );
232 if( line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex )
234 std::cout << " Different line info for line : " << index << std::endl;
236 std::cout << " expected" << std::endl;
237 Print( expectedLine );
240 if( line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs )
242 std::cout << " Different line info for line : " << index << std::endl;
244 std::cout << " expected" << std::endl;
245 Print( expectedLine );
249 if( line.characterRun.characterIndex != expectedLine.characterRun.characterIndex )
251 std::cout << " Different line info for line : " << index << std::endl;
253 std::cout << " expected" << std::endl;
254 Print( expectedLine );
257 if( line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters )
259 std::cout << " Different line info for line : " << index << std::endl;
261 std::cout << " expected" << std::endl;
262 Print( expectedLine );
266 if( fabsf( line.width - expectedLine.width ) > Math::MACHINE_EPSILON_1 )
268 std::cout << " Different line info for line : " << index << std::endl;
270 std::cout << " expected" << std::endl;
271 Print( expectedLine );
275 if( fabsf( line.ascender - expectedLine.ascender ) > Math::MACHINE_EPSILON_1 )
277 std::cout << " Different line info for line : " << index << std::endl;
279 std::cout << " expected" << std::endl;
280 Print( expectedLine );
284 if( fabsf( line.descender - expectedLine.descender ) > Math::MACHINE_EPSILON_1 )
286 std::cout << " Different line info for line : " << index << std::endl;
288 std::cout << " expected" << std::endl;
289 Print( expectedLine );
293 if( fabsf( line.extraLength - expectedLine.extraLength ) > Math::MACHINE_EPSILON_1 )
295 std::cout << " Different line info for line : " << index << std::endl;
297 std::cout << " expected" << std::endl;
298 Print( expectedLine );
302 if( line.ellipsis != expectedLine.ellipsis )
304 std::cout << " Different line info for line : " << index << std::endl;
306 std::cout << " expected" << std::endl;
307 Print( expectedLine );
311 // Do not compare the alignment offset as it's not calculated in the layout.
312 // Do not compare the line direction as it's not set in the layout.
318 //////////////////////////////////////////////////////////
320 struct ReLayoutRightToLeftLinesData
322 std::string description;
325 unsigned int numberOfFonts;
326 FontDescriptionRun* fontDescriptions;
327 unsigned int totalNumberOfGlyphs;
329 unsigned int startIndex;
330 unsigned int numberOfCharacters;
333 bool ReLayoutRightToLeftLinesTest( const ReLayoutRightToLeftLinesData& data )
336 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
337 fontClient.SetDpi( 96u, 96u );
339 char* pathNamePtr = get_current_dir_name();
340 const std::string pathName( pathNamePtr );
343 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
344 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
345 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
347 // 1) Create the model.
348 LogicalModelPtr logicalModel;
349 VisualModelPtr visualModel;
353 Vector<FontDescriptionRun> fontDescriptionRuns;
354 if( 0u != data.numberOfFonts )
356 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
357 data.fontDescriptions,
358 data.fontDescriptions + data.numberOfFonts );
361 LayoutOptions options;
362 options.reorder = false;
363 options.align = false;
364 CreateTextModel( data.text,
373 // 2) Call the ReLayoutRightToLeftLines() method.
374 Layout::Engine engine;
375 engine.SetMetrics( metrics );
377 Layout::Parameters layoutParameters( data.textArea,
378 logicalModel->mText.Begin(),
379 logicalModel->mLineBreakInfo.Begin(),
380 logicalModel->mWordBreakInfo.Begin(),
381 ( 0u != logicalModel->mCharacterDirections.Count() ) ? logicalModel->mCharacterDirections.Begin() : NULL,
382 visualModel->mGlyphs.Begin(),
383 visualModel->mGlyphsToCharacters.Begin(),
384 visualModel->mCharactersPerGlyph.Begin(),
385 visualModel->mCharactersToGlyph.Begin(),
386 visualModel->mGlyphsPerCharacter.Begin(),
387 visualModel->mGlyphs.Count(),
388 Layout::HORIZONTAL_ALIGN_BEGIN,
389 Layout::LineWrap::WORD );
391 layoutParameters.numberOfBidirectionalInfoRuns = logicalModel->mBidirectionalLineInfo.Count();
392 layoutParameters.lineBidirectionalInfoRunsBuffer = logicalModel->mBidirectionalLineInfo.Begin();
394 engine.ReLayoutRightToLeftLines( layoutParameters,
396 data.numberOfCharacters,
397 visualModel->mGlyphPositions );
399 // 3) Compare the results.
400 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
402 if( data.totalNumberOfGlyphs != visualModel->mGlyphs.Count() )
404 std::cout << " Different number of glyphs : " << visualModel->mGlyphs.Count() << ", expected : " << data.totalNumberOfGlyphs << std::endl;
408 for( unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index )
410 const Vector2& position = *( glyphPositions.Begin() + index );
412 if( fabsf( position.x - *( data.positions + 2u * index ) ) > Math::MACHINE_EPSILON_1000 )
414 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *( data.positions + 2u * index ) << std::endl;
417 if( fabsf( position.y - *( data.positions + 2u * index + 1u ) ) > Math::MACHINE_EPSILON_1000 )
419 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *( data.positions + 2u * index + 1u ) << std::endl;
427 //////////////////////////////////////////////////////////
431 std::string description;
434 unsigned int numberOfFonts;
435 FontDescriptionRun* fontDescriptions;
436 Layout::HorizontalAlignment horizontalAlignment;
437 Layout::VerticalAlignment verticalAlignment;
438 unsigned int startIndex;
439 unsigned int numberOfCharacters;
440 unsigned int numberOfLines;
444 bool AlignTest( const AlignData& data )
447 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
448 fontClient.SetDpi( 96u, 96u );
450 char* pathNamePtr = get_current_dir_name();
451 const std::string pathName( pathNamePtr );
454 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
455 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf" );
456 fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf" );
458 // 1) Create the model.
459 LogicalModelPtr logicalModel;
460 VisualModelPtr visualModel;
464 Vector<FontDescriptionRun> fontDescriptionRuns;
465 if( 0u != data.numberOfFonts )
467 fontDescriptionRuns.Insert( fontDescriptionRuns.End(),
468 data.fontDescriptions,
469 data.fontDescriptions + data.numberOfFonts );
472 LayoutOptions options;
473 options.align = false;
474 CreateTextModel( data.text,
483 // Call the Align method.
484 Layout::Engine engine;
485 engine.SetMetrics( metrics );
487 float alignmentOffset = 0.f;
488 engine.Align( data.textArea,
490 data.numberOfCharacters,
491 data.horizontalAlignment,
496 if( data.numberOfLines != visualModel->mLines.Count() )
498 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
502 const LineRun* const linesBuffer = visualModel->mLines.Begin();
503 for( unsigned int index = 0u; index < data.numberOfLines; ++index )
505 const LineRun& line = *( linesBuffer + index );
507 if( line.alignmentOffset != *( data.lineOffsets + index ) )
509 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *( data.lineOffsets + index ) << std::endl;
519 //////////////////////////////////////////////////////////
521 // UtcDaliTextLayoutSetGetLayout
522 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
523 // UtcDaliTextLayoutSetGetHorizontalAlignment
524 // UtcDaliTextLayoutSetGetVerticalAlignment
525 // UtcDaliTextLayoutSetGetCursorWidth
526 // UtcDaliTextLayoutNoText
527 // UtcDaliTextLayoutSmallTextArea01
528 // UtcDaliTextLayoutSmallTextArea02
529 // UtcDaliTextLayoutMultilineText01
530 // UtcDaliTextLayoutMultilineText02
531 // UtcDaliTextLayoutMultilineText03
532 // UtcDaliTextLayoutMultilineText04
533 // UtcDaliTextLayoutMultilineText05
534 // UtcDaliTextUpdateLayout01
535 // UtcDaliTextUpdateLayout02
536 // UtcDaliTextUpdateLayout03
537 // UtcDaliTextLayoutEllipsis01
538 // UtcDaliTextLayoutEllipsis02
539 // UtcDaliTextLayoutEllipsis03
540 // UtcDaliTextLayoutEllipsis04
541 // UtcDaliTextLayoutEllipsis04
542 // UtcDaliTextReorderLayout01
543 // UtcDaliTextReorderLayout02
544 // UtcDaliTextReorderLayout03
545 // UtcDaliTextReorderLayout04
546 // UtcDaliTextAlign01
547 // UtcDaliTextAlign02
548 // UtcDaliTextAlign03
549 // UtcDaliTextAlign04
550 // UtcDaliTextAlign05
551 // UtcDaliTextAlign06
552 // UtcDaliTextAlign07
553 // UtcDaliTextAlign08
554 // UtcDaliTextAlign09
556 //////////////////////////////////////////////////////////
558 int UtcDaliTextLayoutSetGetLayout(void)
560 ToolkitTestApplication application;
561 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
563 Layout::Engine engine;
565 DALI_TEST_CHECK( Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout() );
567 engine.SetLayout( Layout::Engine::MULTI_LINE_BOX );
568 DALI_TEST_CHECK( Layout::Engine::MULTI_LINE_BOX == engine.GetLayout() );
570 tet_result(TET_PASS);
574 int UtcDaliTextLayoutSetGetCursorWidth(void)
576 ToolkitTestApplication application;
579 Layout::Engine engine;
581 DALI_TEST_EQUALS( 1, engine.GetCursorWidth(), TEST_LOCATION );
583 engine.SetCursorWidth( 2 );
584 DALI_TEST_EQUALS( 2, engine.GetCursorWidth(), TEST_LOCATION );
586 tet_result(TET_PASS);
590 int UtcDaliTextLayoutNoText(void)
592 ToolkitTestApplication application;
593 tet_infoline(" UtcDaliTextLayoutNoText");
595 Size textArea(100.f, 60.f);
596 Size layoutSize = Vector2::ZERO;
597 LayoutTextData data =
609 Layout::Engine::MULTI_LINE_BOX,
616 if( !LayoutTextTest( data ) )
618 tet_result(TET_FAIL);
621 tet_result(TET_PASS);
625 int UtcDaliTextLayoutSmallTextArea01(void)
627 ToolkitTestApplication application;
628 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
630 // Won't layout the text in multi-line if the width is too small.
632 const std::string fontFamily( "TizenSans" );
634 // Set a known font description
635 FontDescriptionRun fontDescriptionRun;
636 fontDescriptionRun.characterRun.characterIndex = 0u;
637 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
638 fontDescriptionRun.familyLength = fontFamily.size();
639 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
640 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
641 fontDescriptionRun.familyDefined = true;
642 fontDescriptionRun.weightDefined = false;
643 fontDescriptionRun.widthDefined = false;
644 fontDescriptionRun.slantDefined = false;
645 fontDescriptionRun.sizeDefined = false;
647 Vector<FontDescriptionRun> fontDescriptionRuns;
648 fontDescriptionRuns.PushBack( fontDescriptionRun );
649 Size textArea(1.f, 1.f);
650 Size layoutSize = Vector2::ZERO;
651 LayoutTextData data =
653 "Layout text in a small area",
657 fontDescriptionRuns.Begin(),
663 Layout::Engine::MULTI_LINE_BOX,
670 if( !LayoutTextTest( data ) )
672 tet_result(TET_FAIL);
675 tet_result(TET_PASS);
679 int UtcDaliTextLayoutSmallTextArea02(void)
681 ToolkitTestApplication application;
682 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
684 // Will layout the text in single line as it can be scrolled.
686 const std::string fontFamily( "TizenSans" );
688 // Set a known font description
689 FontDescriptionRun fontDescriptionRun;
690 fontDescriptionRun.characterRun.characterIndex = 0u;
691 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
692 fontDescriptionRun.familyLength = fontFamily.size();
693 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
694 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
695 fontDescriptionRun.familyDefined = true;
696 fontDescriptionRun.weightDefined = false;
697 fontDescriptionRun.widthDefined = false;
698 fontDescriptionRun.slantDefined = false;
699 fontDescriptionRun.sizeDefined = false;
701 Vector<FontDescriptionRun> fontDescriptionRuns;
702 fontDescriptionRuns.PushBack( fontDescriptionRun );
703 Size textArea(1.f, 1.f);
704 Size layoutSize(80.f, 20.f);
705 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 };
706 struct LineRun line =
718 Vector<LineRun> lines;
719 lines.PushBack( line );
721 LayoutTextData data =
723 "Layout text in a small area",
727 fontDescriptionRuns.Begin(),
733 Layout::Engine::SINGLE_LINE_BOX,
740 if( !LayoutTextTest( data ) )
742 tet_result(TET_FAIL);
745 tet_result(TET_PASS);
749 int UtcDaliTextLayoutMultilineText01(void)
751 ToolkitTestApplication application;
752 tet_infoline(" UtcDaliTextLayoutMultilineText01");
754 // Layout some lines of left to right text.
756 const std::string fontFamily( "TizenSans" );
758 // Set a known font description
759 FontDescriptionRun fontDescriptionRun1;
760 fontDescriptionRun1.characterRun.characterIndex = 0u;
761 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
762 fontDescriptionRun1.familyLength = fontFamily.size();
763 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
764 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
765 fontDescriptionRun1.familyDefined = true;
766 fontDescriptionRun1.weightDefined = false;
767 fontDescriptionRun1.widthDefined = false;
768 fontDescriptionRun1.slantDefined = false;
769 fontDescriptionRun1.sizeDefined = false;
771 FontDescriptionRun fontDescriptionRun2;
772 fontDescriptionRun2.characterRun.characterIndex = 18u;
773 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
774 fontDescriptionRun2.familyLength = fontFamily.size();
775 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
776 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
777 fontDescriptionRun2.familyDefined = true;
778 fontDescriptionRun2.weightDefined = false;
779 fontDescriptionRun2.widthDefined = false;
780 fontDescriptionRun2.slantDefined = false;
781 fontDescriptionRun2.sizeDefined = false;
783 Vector<FontDescriptionRun> fontDescriptionRuns;
784 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
785 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
786 Size textArea(100.f, 300.f);
787 Size layoutSize(95.f, 97.f);
790 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,
791 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
792 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,
793 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,
794 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
796 struct LineRun line0 =
808 struct LineRun line1 =
820 struct LineRun line2 =
832 struct LineRun line3 =
844 struct LineRun line4 =
856 Vector<LineRun> lines;
857 lines.PushBack( line0 );
858 lines.PushBack( line1 );
859 lines.PushBack( line2 );
860 lines.PushBack( line3 );
861 lines.PushBack( line4 );
863 LayoutTextData data =
865 "Layout simple multi-line text",
866 "Hello world demo.\n"
867 "Layout different lines of text.",
870 fontDescriptionRuns.Begin(),
876 Layout::Engine::MULTI_LINE_BOX,
883 if( !LayoutTextTest( data ) )
885 tet_result(TET_FAIL);
888 tet_result(TET_PASS);
892 int UtcDaliTextLayoutMultilineText02(void)
894 ToolkitTestApplication application;
895 tet_infoline(" UtcDaliTextLayoutMultilineText02");
897 // Layout some lines of bidirectional text.
899 const std::string fontFamily1( "TizenSans" );
901 // Set a known font description
902 FontDescriptionRun fontDescriptionRun1;
903 fontDescriptionRun1.characterRun.characterIndex = 0u;
904 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
905 fontDescriptionRun1.familyLength = fontFamily1.size();
906 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
907 memcpy( fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength );
908 fontDescriptionRun1.familyDefined = true;
909 fontDescriptionRun1.weightDefined = false;
910 fontDescriptionRun1.widthDefined = false;
911 fontDescriptionRun1.slantDefined = false;
912 fontDescriptionRun1.sizeDefined = false;
914 const std::string fontFamily2( "TizenSansHebrew" );
916 // Set a known font description
917 FontDescriptionRun fontDescriptionRun2;
918 fontDescriptionRun2.characterRun.characterIndex = 17u;
919 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
920 fontDescriptionRun2.familyLength = fontFamily2.size();
921 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
922 memcpy( fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength );
923 fontDescriptionRun2.familyDefined = true;
924 fontDescriptionRun2.weightDefined = false;
925 fontDescriptionRun2.widthDefined = false;
926 fontDescriptionRun2.slantDefined = false;
927 fontDescriptionRun2.sizeDefined = false;
929 const std::string fontFamily3( "TizenSans" );
931 // Set a known font description
932 FontDescriptionRun fontDescriptionRun3;
933 fontDescriptionRun3.characterRun.characterIndex = 26u;
934 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
935 fontDescriptionRun3.familyLength = fontFamily3.size();
936 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
937 memcpy( fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength );
938 fontDescriptionRun3.familyDefined = true;
939 fontDescriptionRun3.weightDefined = false;
940 fontDescriptionRun3.widthDefined = false;
941 fontDescriptionRun3.slantDefined = false;
942 fontDescriptionRun3.sizeDefined = false;
944 const std::string fontFamily4( "TizenSansHebrew" );
946 // Set a known font description
947 FontDescriptionRun fontDescriptionRun4;
948 fontDescriptionRun4.characterRun.characterIndex = 28u;
949 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
950 fontDescriptionRun4.familyLength = fontFamily4.size();
951 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
952 memcpy( fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength );
953 fontDescriptionRun4.familyDefined = true;
954 fontDescriptionRun4.weightDefined = false;
955 fontDescriptionRun4.widthDefined = false;
956 fontDescriptionRun4.slantDefined = false;
957 fontDescriptionRun4.sizeDefined = false;
959 const std::string fontFamily5( "TizenSans" );
961 // Set a known font description
962 FontDescriptionRun fontDescriptionRun5;
963 fontDescriptionRun5.characterRun.characterIndex = 38u;
964 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
965 fontDescriptionRun5.familyLength = fontFamily5.size();
966 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
967 memcpy( fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength );
968 fontDescriptionRun5.familyDefined = true;
969 fontDescriptionRun5.weightDefined = false;
970 fontDescriptionRun5.widthDefined = false;
971 fontDescriptionRun5.slantDefined = false;
972 fontDescriptionRun5.sizeDefined = false;
974 Vector<FontDescriptionRun> fontDescriptionRuns;
975 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
976 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
977 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
978 fontDescriptionRuns.PushBack( fontDescriptionRun4 );
979 fontDescriptionRuns.PushBack( fontDescriptionRun5 );
980 Size textArea(100.f, 300.f);
981 Size layoutSize(81.f, 120.f);
984 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,
985 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,
986 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
987 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,
988 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,
989 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
991 struct LineRun line0 =
1003 struct LineRun line1 =
1015 struct LineRun line2 =
1027 struct LineRun line3 =
1039 struct LineRun line4 =
1051 struct LineRun line5 =
1063 Vector<LineRun> lines;
1064 lines.PushBack( line0 );
1065 lines.PushBack( line1 );
1066 lines.PushBack( line2 );
1067 lines.PushBack( line3 );
1068 lines.PushBack( line4 );
1069 lines.PushBack( line5 );
1071 LayoutTextData data =
1073 "Layout bidirectional text.",
1074 "Hello world demo שלום עולם.\n"
1075 "שלום עולם hello world demo.",
1078 fontDescriptionRuns.Begin(),
1084 Layout::Engine::MULTI_LINE_BOX,
1091 if( !LayoutTextTest( data ) )
1093 tet_result(TET_FAIL);
1096 tet_result(TET_PASS);
1100 int UtcDaliTextLayoutMultilineText03(void)
1102 ToolkitTestApplication application;
1103 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1105 // Layout a long word which doesn't fit in the width of the text area.
1107 const std::string fontFamily( "TizenSans" );
1109 // Set a known font description
1110 FontDescriptionRun fontDescriptionRun;
1111 fontDescriptionRun.characterRun.characterIndex = 0u;
1112 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1113 fontDescriptionRun.familyLength = fontFamily.size();
1114 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1115 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1116 fontDescriptionRun.familyDefined = true;
1117 fontDescriptionRun.weightDefined = false;
1118 fontDescriptionRun.widthDefined = false;
1119 fontDescriptionRun.slantDefined = false;
1120 fontDescriptionRun.sizeDefined = false;
1122 Vector<FontDescriptionRun> fontDescriptionRuns;
1123 fontDescriptionRuns.PushBack( fontDescriptionRun );
1124 Size textArea(100.f, 300.f);
1125 Size layoutSize(96.f, 60.f);
1128 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,
1129 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,
1130 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f,
1132 struct LineRun line0 =
1144 struct LineRun line1 =
1156 struct LineRun line2 =
1168 Vector<LineRun> lines;
1169 lines.PushBack( line0 );
1170 lines.PushBack( line1 );
1171 lines.PushBack( line2 );
1173 LayoutTextData data =
1175 "Layout a long word which doesn't fit in the width of the text area.",
1176 "Helloworlddemohelloworlddemo.",
1179 fontDescriptionRuns.Begin(),
1185 Layout::Engine::MULTI_LINE_BOX,
1192 if( !LayoutTextTest( data ) )
1194 tet_result(TET_FAIL);
1197 tet_result(TET_PASS);
1201 int UtcDaliTextLayoutMultilineText04(void)
1203 ToolkitTestApplication application;
1204 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1206 // Layout simple text ending with a \n. It has to add a void line at the end.
1208 const std::string fontFamily( "TizenSans" );
1210 // Set a known font description
1211 FontDescriptionRun fontDescriptionRun;
1212 fontDescriptionRun.characterRun.characterIndex = 0u;
1213 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1214 fontDescriptionRun.familyLength = fontFamily.size();
1215 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1216 memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
1217 fontDescriptionRun.familyDefined = true;
1218 fontDescriptionRun.weightDefined = false;
1219 fontDescriptionRun.widthDefined = false;
1220 fontDescriptionRun.slantDefined = false;
1221 fontDescriptionRun.sizeDefined = false;
1223 Vector<FontDescriptionRun> fontDescriptionRuns;
1224 fontDescriptionRuns.PushBack( fontDescriptionRun );
1225 Size textArea(100.f, 300.f);
1226 Size layoutSize(83.f, 40.f);
1229 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
1231 struct LineRun line0 =
1243 struct LineRun line1 =
1255 Vector<LineRun> lines;
1256 lines.PushBack( line0 );
1257 lines.PushBack( line1 );
1259 LayoutTextData data =
1261 "Layout simple text ending with a \n.",
1265 fontDescriptionRuns.Begin(),
1271 Layout::Engine::MULTI_LINE_BOX,
1278 if( !LayoutTextTest( data ) )
1280 tet_result(TET_FAIL);
1283 tet_result(TET_PASS);
1287 int UtcDaliTextLayoutMultilineText05(void)
1289 ToolkitTestApplication application;
1290 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1292 // Layout simple text with one character with a different font size.
1294 const std::string fontFamily( "TizenSans" );
1296 // Set a known font description
1297 FontDescriptionRun fontDescriptionRun1;
1298 fontDescriptionRun1.characterRun.characterIndex = 0u;
1299 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1300 fontDescriptionRun1.familyLength = fontFamily.size();
1301 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1302 memcpy( fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength );
1303 fontDescriptionRun1.familyDefined = true;
1304 fontDescriptionRun1.weightDefined = false;
1305 fontDescriptionRun1.widthDefined = false;
1306 fontDescriptionRun1.slantDefined = false;
1307 fontDescriptionRun1.sizeDefined = false;
1309 FontDescriptionRun fontDescriptionRun2;
1310 fontDescriptionRun2.characterRun.characterIndex = 6u;
1311 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1312 fontDescriptionRun2.familyLength = fontFamily.size();
1313 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1314 memcpy( fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength );
1315 fontDescriptionRun2.size = 1280u;
1316 fontDescriptionRun2.familyDefined = true;
1317 fontDescriptionRun2.weightDefined = false;
1318 fontDescriptionRun2.widthDefined = false;
1319 fontDescriptionRun2.slantDefined = false;
1320 fontDescriptionRun2.sizeDefined = true;
1322 FontDescriptionRun fontDescriptionRun3;
1323 fontDescriptionRun3.characterRun.characterIndex = 7u;
1324 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1325 fontDescriptionRun3.familyLength = fontFamily.size();
1326 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1327 memcpy( fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength );
1328 fontDescriptionRun3.familyDefined = true;
1329 fontDescriptionRun3.weightDefined = false;
1330 fontDescriptionRun3.widthDefined = false;
1331 fontDescriptionRun3.slantDefined = false;
1332 fontDescriptionRun3.sizeDefined = false;
1334 Vector<FontDescriptionRun> fontDescriptionRuns;
1335 fontDescriptionRuns.PushBack( fontDescriptionRun1 );
1336 fontDescriptionRuns.PushBack( fontDescriptionRun2 );
1337 fontDescriptionRuns.PushBack( fontDescriptionRun3 );
1338 Size textArea(100.f, 300.f);
1339 Size layoutSize(88.f, 53.f);
1342 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,
1343 0.f, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f
1345 struct LineRun line0 =
1357 struct LineRun line1 =
1369 Vector<LineRun> lines;
1370 lines.PushBack( line0 );
1371 lines.PushBack( line1 );
1373 LayoutTextData data =
1375 "Layout simple text with one character with a different font size.",
1376 "Hello world demo.",
1379 fontDescriptionRuns.Begin(),
1385 Layout::Engine::MULTI_LINE_BOX,
1392 if( !LayoutTextTest( data ) )
1394 tet_result(TET_FAIL);
1397 tet_result(TET_PASS);
1401 int UtcDaliTextUpdateLayout01(void)
1403 ToolkitTestApplication application;
1404 tet_infoline(" UtcDaliTextUpdateLayout01");
1406 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1408 const std::string fontLatin( "TizenSans" );
1409 const std::string fontHebrew( "TizenSansHebrew" );
1410 const std::string fontArabic( "TizenSansArabic" );
1412 // Set a known font description
1413 FontDescriptionRun fontDescriptionRun01;
1414 fontDescriptionRun01.characterRun.characterIndex = 0u;
1415 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1416 fontDescriptionRun01.familyLength = fontLatin.size();
1417 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1418 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1419 fontDescriptionRun01.familyDefined = true;
1420 fontDescriptionRun01.weightDefined = false;
1421 fontDescriptionRun01.widthDefined = false;
1422 fontDescriptionRun01.slantDefined = false;
1423 fontDescriptionRun01.sizeDefined = false;
1425 // Set a known font description
1426 FontDescriptionRun fontDescriptionRun02;
1427 fontDescriptionRun02.characterRun.characterIndex = 17u;
1428 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1429 fontDescriptionRun02.familyLength = fontHebrew.size();
1430 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1431 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1432 fontDescriptionRun02.familyDefined = true;
1433 fontDescriptionRun02.weightDefined = false;
1434 fontDescriptionRun02.widthDefined = false;
1435 fontDescriptionRun02.slantDefined = false;
1436 fontDescriptionRun02.sizeDefined = false;
1438 // Set a known font description
1439 FontDescriptionRun fontDescriptionRun03;
1440 fontDescriptionRun03.characterRun.characterIndex = 26u;
1441 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1442 fontDescriptionRun03.familyLength = fontLatin.size();
1443 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1444 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
1445 fontDescriptionRun03.familyDefined = true;
1446 fontDescriptionRun03.weightDefined = false;
1447 fontDescriptionRun03.widthDefined = false;
1448 fontDescriptionRun03.slantDefined = false;
1449 fontDescriptionRun03.sizeDefined = false;
1451 // Set a known font description
1452 FontDescriptionRun fontDescriptionRun04;
1453 fontDescriptionRun04.characterRun.characterIndex = 28u;
1454 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1455 fontDescriptionRun04.familyLength = fontArabic.size();
1456 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1457 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
1458 fontDescriptionRun04.familyDefined = true;
1459 fontDescriptionRun04.weightDefined = false;
1460 fontDescriptionRun04.widthDefined = false;
1461 fontDescriptionRun04.slantDefined = false;
1462 fontDescriptionRun04.sizeDefined = false;
1464 // Set a known font description
1465 FontDescriptionRun fontDescriptionRun05;
1466 fontDescriptionRun05.characterRun.characterIndex = 42u;
1467 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1468 fontDescriptionRun05.familyLength = fontLatin.size();
1469 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1470 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
1471 fontDescriptionRun05.familyDefined = true;
1472 fontDescriptionRun05.weightDefined = false;
1473 fontDescriptionRun05.widthDefined = false;
1474 fontDescriptionRun05.slantDefined = false;
1475 fontDescriptionRun05.sizeDefined = false;
1477 // Set a known font description
1478 FontDescriptionRun fontDescriptionRun06;
1479 fontDescriptionRun06.characterRun.characterIndex = 54u;
1480 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1481 fontDescriptionRun06.familyLength = fontHebrew.size();
1482 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1483 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
1484 fontDescriptionRun06.familyDefined = true;
1485 fontDescriptionRun06.weightDefined = false;
1486 fontDescriptionRun06.widthDefined = false;
1487 fontDescriptionRun06.slantDefined = false;
1488 fontDescriptionRun06.sizeDefined = false;
1490 // Set a known font description
1491 FontDescriptionRun fontDescriptionRun07;
1492 fontDescriptionRun07.characterRun.characterIndex = 64u;
1493 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1494 fontDescriptionRun07.familyLength = fontHebrew.size();
1495 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1496 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
1497 fontDescriptionRun07.familyDefined = true;
1498 fontDescriptionRun07.weightDefined = false;
1499 fontDescriptionRun07.widthDefined = false;
1500 fontDescriptionRun07.slantDefined = false;
1501 fontDescriptionRun07.sizeDefined = false;
1503 // Set a known font description
1504 FontDescriptionRun fontDescriptionRun08;
1505 fontDescriptionRun08.characterRun.characterIndex = 74u;
1506 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1507 fontDescriptionRun08.familyLength = fontLatin.size();
1508 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1509 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
1510 fontDescriptionRun08.familyDefined = true;
1511 fontDescriptionRun08.weightDefined = false;
1512 fontDescriptionRun08.widthDefined = false;
1513 fontDescriptionRun08.slantDefined = false;
1514 fontDescriptionRun08.sizeDefined = false;
1516 // Set a known font description
1517 FontDescriptionRun fontDescriptionRun09;
1518 fontDescriptionRun09.characterRun.characterIndex = 92u;
1519 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1520 fontDescriptionRun09.familyLength = fontLatin.size();
1521 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1522 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
1523 fontDescriptionRun09.familyDefined = true;
1524 fontDescriptionRun09.weightDefined = false;
1525 fontDescriptionRun09.widthDefined = false;
1526 fontDescriptionRun09.slantDefined = false;
1527 fontDescriptionRun09.sizeDefined = false;
1529 // Set a known font description
1530 FontDescriptionRun fontDescriptionRun10;
1531 fontDescriptionRun10.characterRun.characterIndex = 104u;
1532 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1533 fontDescriptionRun10.familyLength = fontArabic.size();
1534 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1535 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
1536 fontDescriptionRun10.familyDefined = true;
1537 fontDescriptionRun10.weightDefined = false;
1538 fontDescriptionRun10.widthDefined = false;
1539 fontDescriptionRun10.slantDefined = false;
1540 fontDescriptionRun10.sizeDefined = false;
1542 // Set a known font description
1543 FontDescriptionRun fontDescriptionRun11;
1544 fontDescriptionRun11.characterRun.characterIndex = 118u;
1545 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1546 fontDescriptionRun11.familyLength = fontHebrew.size();
1547 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1548 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
1549 fontDescriptionRun11.familyDefined = true;
1550 fontDescriptionRun11.weightDefined = false;
1551 fontDescriptionRun11.widthDefined = false;
1552 fontDescriptionRun11.slantDefined = false;
1553 fontDescriptionRun11.sizeDefined = false;
1555 // Set a known font description
1556 FontDescriptionRun fontDescriptionRun12;
1557 fontDescriptionRun12.characterRun.characterIndex = 128u;
1558 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1559 fontDescriptionRun12.familyLength = fontLatin.size();
1560 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1561 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
1562 fontDescriptionRun12.familyDefined = true;
1563 fontDescriptionRun12.weightDefined = false;
1564 fontDescriptionRun12.widthDefined = false;
1565 fontDescriptionRun12.slantDefined = false;
1566 fontDescriptionRun12.sizeDefined = false;
1568 // Set a known font description
1569 FontDescriptionRun fontDescriptionRun13;
1570 fontDescriptionRun13.characterRun.characterIndex = 145u;
1571 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1572 fontDescriptionRun13.familyLength = fontHebrew.size();
1573 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1574 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
1575 fontDescriptionRun13.familyDefined = true;
1576 fontDescriptionRun13.weightDefined = false;
1577 fontDescriptionRun13.widthDefined = false;
1578 fontDescriptionRun13.slantDefined = false;
1579 fontDescriptionRun13.sizeDefined = false;
1581 // Set a known font description
1582 FontDescriptionRun fontDescriptionRun14;
1583 fontDescriptionRun14.characterRun.characterIndex = 154u;
1584 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1585 fontDescriptionRun14.familyLength = fontLatin.size();
1586 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1587 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
1588 fontDescriptionRun14.familyDefined = true;
1589 fontDescriptionRun14.weightDefined = false;
1590 fontDescriptionRun14.widthDefined = false;
1591 fontDescriptionRun14.slantDefined = false;
1592 fontDescriptionRun14.sizeDefined = false;
1594 // Set a known font description
1595 FontDescriptionRun fontDescriptionRun15;
1596 fontDescriptionRun15.characterRun.characterIndex = 156u;
1597 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1598 fontDescriptionRun15.familyLength = fontHebrew.size();
1599 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1600 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
1601 fontDescriptionRun15.familyDefined = true;
1602 fontDescriptionRun15.weightDefined = false;
1603 fontDescriptionRun15.widthDefined = false;
1604 fontDescriptionRun15.slantDefined = false;
1605 fontDescriptionRun15.sizeDefined = false;
1607 // Set a known font description
1608 FontDescriptionRun fontDescriptionRun16;
1609 fontDescriptionRun16.characterRun.characterIndex = 166u;
1610 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1611 fontDescriptionRun16.familyLength = fontLatin.size();
1612 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1613 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
1614 fontDescriptionRun16.familyDefined = true;
1615 fontDescriptionRun16.weightDefined = false;
1616 fontDescriptionRun16.widthDefined = false;
1617 fontDescriptionRun16.slantDefined = false;
1618 fontDescriptionRun16.sizeDefined = false;
1620 // Set a known font description
1621 FontDescriptionRun fontDescriptionRun17;
1622 fontDescriptionRun17.characterRun.characterIndex = 178u;
1623 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1624 fontDescriptionRun17.familyLength = fontArabic.size();
1625 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1626 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
1627 fontDescriptionRun17.familyDefined = true;
1628 fontDescriptionRun17.weightDefined = false;
1629 fontDescriptionRun17.widthDefined = false;
1630 fontDescriptionRun17.slantDefined = false;
1631 fontDescriptionRun17.sizeDefined = false;
1633 Vector<FontDescriptionRun> fontDescriptionRuns;
1634 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
1635 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
1636 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
1637 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
1638 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
1639 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
1640 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
1641 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
1642 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
1643 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
1644 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
1645 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
1646 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
1647 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
1648 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
1649 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
1650 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
1651 Size textArea(100.f, 300.f);
1652 Size layoutSize(92.f, 380.f);
1655 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,
1656 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,
1657 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1658 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,
1659 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,
1660 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1661 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,
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, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
1664 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,
1665 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,
1666 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
1667 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,
1668 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,
1669 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
1670 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,
1671 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,
1672 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,
1675 struct LineRun line01 =
1687 struct LineRun line02 =
1699 struct LineRun line03 =
1711 struct LineRun line04 =
1723 struct LineRun line05 =
1735 struct LineRun line06 =
1747 struct LineRun line07 =
1759 struct LineRun line08 =
1771 struct LineRun line09 =
1783 struct LineRun line10 =
1795 struct LineRun line11 =
1807 struct LineRun line12 =
1819 struct LineRun line13 =
1831 struct LineRun line14 =
1843 struct LineRun line15 =
1855 struct LineRun line16 =
1867 struct LineRun line17 =
1879 struct LineRun line18 =
1891 struct LineRun line19 =
1903 Vector<LineRun> lines;
1904 lines.PushBack( line01 );
1905 lines.PushBack( line02 );
1906 lines.PushBack( line03 );
1907 lines.PushBack( line04 );
1908 lines.PushBack( line05 );
1909 lines.PushBack( line06 );
1910 lines.PushBack( line07 );
1911 lines.PushBack( line08 );
1912 lines.PushBack( line09 );
1913 lines.PushBack( line10 );
1914 lines.PushBack( line11 );
1915 lines.PushBack( line12 );
1916 lines.PushBack( line13 );
1917 lines.PushBack( line14 );
1918 lines.PushBack( line15 );
1919 lines.PushBack( line16 );
1920 lines.PushBack( line17 );
1921 lines.PushBack( line18 );
1922 lines.PushBack( line19 );
1924 LayoutTextData data =
1926 "Layout bidirectional text.",
1927 "Hello world demo שלום עולם.\n"
1928 "مرحبا بالعالم hello world שלום עולם\n"
1929 "שלום עולם hello world demo.\n"
1930 "hello world مرحبا بالعالم שלום עולם\n"
1931 "Hello world demo שלום עולם.\n"
1932 "שלום עולם hello world مرحبا بالعالم\n",
1935 fontDescriptionRuns.Begin(),
1941 Layout::Engine::MULTI_LINE_BOX,
1948 if( !LayoutTextTest( data ) )
1950 tet_result(TET_FAIL);
1953 tet_result(TET_PASS);
1957 int UtcDaliTextUpdateLayout02(void)
1959 ToolkitTestApplication application;
1960 tet_infoline(" UtcDaliTextUpdateLayout02");
1962 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
1964 const std::string fontLatin( "TizenSans" );
1965 const std::string fontHebrew( "TizenSansHebrew" );
1966 const std::string fontArabic( "TizenSansArabic" );
1968 // Set a known font description
1969 FontDescriptionRun fontDescriptionRun01;
1970 fontDescriptionRun01.characterRun.characterIndex = 0u;
1971 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1972 fontDescriptionRun01.familyLength = fontLatin.size();
1973 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1974 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
1975 fontDescriptionRun01.familyDefined = true;
1976 fontDescriptionRun01.weightDefined = false;
1977 fontDescriptionRun01.widthDefined = false;
1978 fontDescriptionRun01.slantDefined = false;
1979 fontDescriptionRun01.sizeDefined = false;
1981 // Set a known font description
1982 FontDescriptionRun fontDescriptionRun02;
1983 fontDescriptionRun02.characterRun.characterIndex = 17u;
1984 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1985 fontDescriptionRun02.familyLength = fontHebrew.size();
1986 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1987 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
1988 fontDescriptionRun02.familyDefined = true;
1989 fontDescriptionRun02.weightDefined = false;
1990 fontDescriptionRun02.widthDefined = false;
1991 fontDescriptionRun02.slantDefined = false;
1992 fontDescriptionRun02.sizeDefined = false;
1994 // Set a known font description
1995 FontDescriptionRun fontDescriptionRun03;
1996 fontDescriptionRun03.characterRun.characterIndex = 26u;
1997 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1998 fontDescriptionRun03.familyLength = fontLatin.size();
1999 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2000 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2001 fontDescriptionRun03.familyDefined = true;
2002 fontDescriptionRun03.weightDefined = false;
2003 fontDescriptionRun03.widthDefined = false;
2004 fontDescriptionRun03.slantDefined = false;
2005 fontDescriptionRun03.sizeDefined = false;
2007 // Set a known font description
2008 FontDescriptionRun fontDescriptionRun04;
2009 fontDescriptionRun04.characterRun.characterIndex = 28u;
2010 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2011 fontDescriptionRun04.familyLength = fontArabic.size();
2012 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2013 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2014 fontDescriptionRun04.familyDefined = true;
2015 fontDescriptionRun04.weightDefined = false;
2016 fontDescriptionRun04.widthDefined = false;
2017 fontDescriptionRun04.slantDefined = false;
2018 fontDescriptionRun04.sizeDefined = false;
2020 // Set a known font description
2021 FontDescriptionRun fontDescriptionRun05;
2022 fontDescriptionRun05.characterRun.characterIndex = 42u;
2023 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2024 fontDescriptionRun05.familyLength = fontLatin.size();
2025 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2026 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2027 fontDescriptionRun05.familyDefined = true;
2028 fontDescriptionRun05.weightDefined = false;
2029 fontDescriptionRun05.widthDefined = false;
2030 fontDescriptionRun05.slantDefined = false;
2031 fontDescriptionRun05.sizeDefined = false;
2033 // Set a known font description
2034 FontDescriptionRun fontDescriptionRun06;
2035 fontDescriptionRun06.characterRun.characterIndex = 54u;
2036 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2037 fontDescriptionRun06.familyLength = fontHebrew.size();
2038 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2039 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2040 fontDescriptionRun06.familyDefined = true;
2041 fontDescriptionRun06.weightDefined = false;
2042 fontDescriptionRun06.widthDefined = false;
2043 fontDescriptionRun06.slantDefined = false;
2044 fontDescriptionRun06.sizeDefined = false;
2046 // Set a known font description
2047 FontDescriptionRun fontDescriptionRun07;
2048 fontDescriptionRun07.characterRun.characterIndex = 64u;
2049 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2050 fontDescriptionRun07.familyLength = fontHebrew.size();
2051 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2052 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2053 fontDescriptionRun07.familyDefined = true;
2054 fontDescriptionRun07.weightDefined = false;
2055 fontDescriptionRun07.widthDefined = false;
2056 fontDescriptionRun07.slantDefined = false;
2057 fontDescriptionRun07.sizeDefined = false;
2059 // Set a known font description
2060 FontDescriptionRun fontDescriptionRun08;
2061 fontDescriptionRun08.characterRun.characterIndex = 74u;
2062 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2063 fontDescriptionRun08.familyLength = fontLatin.size();
2064 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2065 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2066 fontDescriptionRun08.familyDefined = true;
2067 fontDescriptionRun08.weightDefined = false;
2068 fontDescriptionRun08.widthDefined = false;
2069 fontDescriptionRun08.slantDefined = false;
2070 fontDescriptionRun08.sizeDefined = false;
2072 // Set a known font description
2073 FontDescriptionRun fontDescriptionRun09;
2074 fontDescriptionRun09.characterRun.characterIndex = 92u;
2075 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2076 fontDescriptionRun09.familyLength = fontLatin.size();
2077 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2078 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2079 fontDescriptionRun09.familyDefined = true;
2080 fontDescriptionRun09.weightDefined = false;
2081 fontDescriptionRun09.widthDefined = false;
2082 fontDescriptionRun09.slantDefined = false;
2083 fontDescriptionRun09.sizeDefined = false;
2085 // Set a known font description
2086 FontDescriptionRun fontDescriptionRun10;
2087 fontDescriptionRun10.characterRun.characterIndex = 104u;
2088 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2089 fontDescriptionRun10.familyLength = fontArabic.size();
2090 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2091 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2092 fontDescriptionRun10.familyDefined = true;
2093 fontDescriptionRun10.weightDefined = false;
2094 fontDescriptionRun10.widthDefined = false;
2095 fontDescriptionRun10.slantDefined = false;
2096 fontDescriptionRun10.sizeDefined = false;
2098 // Set a known font description
2099 FontDescriptionRun fontDescriptionRun11;
2100 fontDescriptionRun11.characterRun.characterIndex = 118u;
2101 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2102 fontDescriptionRun11.familyLength = fontHebrew.size();
2103 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2104 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2105 fontDescriptionRun11.familyDefined = true;
2106 fontDescriptionRun11.weightDefined = false;
2107 fontDescriptionRun11.widthDefined = false;
2108 fontDescriptionRun11.slantDefined = false;
2109 fontDescriptionRun11.sizeDefined = false;
2111 // Set a known font description
2112 FontDescriptionRun fontDescriptionRun12;
2113 fontDescriptionRun12.characterRun.characterIndex = 128u;
2114 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2115 fontDescriptionRun12.familyLength = fontLatin.size();
2116 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2117 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2118 fontDescriptionRun12.familyDefined = true;
2119 fontDescriptionRun12.weightDefined = false;
2120 fontDescriptionRun12.widthDefined = false;
2121 fontDescriptionRun12.slantDefined = false;
2122 fontDescriptionRun12.sizeDefined = false;
2124 // Set a known font description
2125 FontDescriptionRun fontDescriptionRun13;
2126 fontDescriptionRun13.characterRun.characterIndex = 145u;
2127 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2128 fontDescriptionRun13.familyLength = fontHebrew.size();
2129 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2130 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2131 fontDescriptionRun13.familyDefined = true;
2132 fontDescriptionRun13.weightDefined = false;
2133 fontDescriptionRun13.widthDefined = false;
2134 fontDescriptionRun13.slantDefined = false;
2135 fontDescriptionRun13.sizeDefined = false;
2137 // Set a known font description
2138 FontDescriptionRun fontDescriptionRun14;
2139 fontDescriptionRun14.characterRun.characterIndex = 154u;
2140 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2141 fontDescriptionRun14.familyLength = fontLatin.size();
2142 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2143 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2144 fontDescriptionRun14.familyDefined = true;
2145 fontDescriptionRun14.weightDefined = false;
2146 fontDescriptionRun14.widthDefined = false;
2147 fontDescriptionRun14.slantDefined = false;
2148 fontDescriptionRun14.sizeDefined = false;
2150 // Set a known font description
2151 FontDescriptionRun fontDescriptionRun15;
2152 fontDescriptionRun15.characterRun.characterIndex = 156u;
2153 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2154 fontDescriptionRun15.familyLength = fontHebrew.size();
2155 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2156 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2157 fontDescriptionRun15.familyDefined = true;
2158 fontDescriptionRun15.weightDefined = false;
2159 fontDescriptionRun15.widthDefined = false;
2160 fontDescriptionRun15.slantDefined = false;
2161 fontDescriptionRun15.sizeDefined = false;
2163 // Set a known font description
2164 FontDescriptionRun fontDescriptionRun16;
2165 fontDescriptionRun16.characterRun.characterIndex = 166u;
2166 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2167 fontDescriptionRun16.familyLength = fontLatin.size();
2168 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2169 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2170 fontDescriptionRun16.familyDefined = true;
2171 fontDescriptionRun16.weightDefined = false;
2172 fontDescriptionRun16.widthDefined = false;
2173 fontDescriptionRun16.slantDefined = false;
2174 fontDescriptionRun16.sizeDefined = false;
2176 // Set a known font description
2177 FontDescriptionRun fontDescriptionRun17;
2178 fontDescriptionRun17.characterRun.characterIndex = 178u;
2179 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2180 fontDescriptionRun17.familyLength = fontArabic.size();
2181 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2182 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2183 fontDescriptionRun17.familyDefined = true;
2184 fontDescriptionRun17.weightDefined = false;
2185 fontDescriptionRun17.widthDefined = false;
2186 fontDescriptionRun17.slantDefined = false;
2187 fontDescriptionRun17.sizeDefined = false;
2189 Vector<FontDescriptionRun> fontDescriptionRuns;
2190 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2191 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2192 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2193 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2194 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2195 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2196 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2197 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2198 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2199 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2200 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2201 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2202 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2203 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2204 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2205 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2206 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2207 Size textArea(100.f, 300.f);
2208 Size layoutSize(92.f, 380.f);
2211 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,
2212 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,
2213 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2214 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,
2215 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,
2216 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2217 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,
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, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2220 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,
2221 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,
2222 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2223 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,
2224 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,
2225 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2226 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,
2227 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,
2228 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,
2231 struct LineRun line01 =
2243 struct LineRun line02 =
2255 struct LineRun line03 =
2267 struct LineRun line04 =
2279 struct LineRun line05 =
2291 struct LineRun line06 =
2303 struct LineRun line07 =
2315 struct LineRun line08 =
2327 struct LineRun line09 =
2339 struct LineRun line10 =
2351 struct LineRun line11 =
2363 struct LineRun line12 =
2375 struct LineRun line13 =
2387 struct LineRun line14 =
2399 struct LineRun line15 =
2411 struct LineRun line16 =
2423 struct LineRun line17 =
2435 struct LineRun line18 =
2447 struct LineRun line19 =
2459 Vector<LineRun> lines;
2460 lines.PushBack( line01 );
2461 lines.PushBack( line02 );
2462 lines.PushBack( line03 );
2463 lines.PushBack( line04 );
2464 lines.PushBack( line05 );
2465 lines.PushBack( line06 );
2466 lines.PushBack( line07 );
2467 lines.PushBack( line08 );
2468 lines.PushBack( line09 );
2469 lines.PushBack( line10 );
2470 lines.PushBack( line11 );
2471 lines.PushBack( line12 );
2472 lines.PushBack( line13 );
2473 lines.PushBack( line14 );
2474 lines.PushBack( line15 );
2475 lines.PushBack( line16 );
2476 lines.PushBack( line17 );
2477 lines.PushBack( line18 );
2478 lines.PushBack( line19 );
2480 LayoutTextData data =
2482 "Layout bidirectional text.",
2483 "Hello world demo שלום עולם.\n"
2484 "مرحبا بالعالم hello world שלום עולם\n"
2485 "שלום עולם hello world demo.\n"
2486 "hello world مرحبا بالعالم שלום עולם\n"
2487 "Hello world demo שלום עולם.\n"
2488 "שלום עולם hello world مرحبا بالعالم\n",
2491 fontDescriptionRuns.Begin(),
2497 Layout::Engine::MULTI_LINE_BOX,
2504 if( !LayoutTextTest( data ) )
2506 tet_result(TET_FAIL);
2509 tet_result(TET_PASS);
2513 int UtcDaliTextUpdateLayout03(void)
2515 ToolkitTestApplication application;
2516 tet_infoline(" UtcDaliTextUpdateLayout03");
2518 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2520 const std::string fontLatin( "TizenSans" );
2521 const std::string fontHebrew( "TizenSansHebrew" );
2522 const std::string fontArabic( "TizenSansArabic" );
2524 // Set a known font description
2525 FontDescriptionRun fontDescriptionRun01;
2526 fontDescriptionRun01.characterRun.characterIndex = 0u;
2527 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2528 fontDescriptionRun01.familyLength = fontLatin.size();
2529 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2530 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
2531 fontDescriptionRun01.familyDefined = true;
2532 fontDescriptionRun01.weightDefined = false;
2533 fontDescriptionRun01.widthDefined = false;
2534 fontDescriptionRun01.slantDefined = false;
2535 fontDescriptionRun01.sizeDefined = false;
2537 // Set a known font description
2538 FontDescriptionRun fontDescriptionRun02;
2539 fontDescriptionRun02.characterRun.characterIndex = 17u;
2540 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2541 fontDescriptionRun02.familyLength = fontHebrew.size();
2542 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2543 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
2544 fontDescriptionRun02.familyDefined = true;
2545 fontDescriptionRun02.weightDefined = false;
2546 fontDescriptionRun02.widthDefined = false;
2547 fontDescriptionRun02.slantDefined = false;
2548 fontDescriptionRun02.sizeDefined = false;
2550 // Set a known font description
2551 FontDescriptionRun fontDescriptionRun03;
2552 fontDescriptionRun03.characterRun.characterIndex = 26u;
2553 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2554 fontDescriptionRun03.familyLength = fontLatin.size();
2555 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2556 memcpy( fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength );
2557 fontDescriptionRun03.familyDefined = true;
2558 fontDescriptionRun03.weightDefined = false;
2559 fontDescriptionRun03.widthDefined = false;
2560 fontDescriptionRun03.slantDefined = false;
2561 fontDescriptionRun03.sizeDefined = false;
2563 // Set a known font description
2564 FontDescriptionRun fontDescriptionRun04;
2565 fontDescriptionRun04.characterRun.characterIndex = 28u;
2566 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2567 fontDescriptionRun04.familyLength = fontArabic.size();
2568 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2569 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
2570 fontDescriptionRun04.familyDefined = true;
2571 fontDescriptionRun04.weightDefined = false;
2572 fontDescriptionRun04.widthDefined = false;
2573 fontDescriptionRun04.slantDefined = false;
2574 fontDescriptionRun04.sizeDefined = false;
2576 // Set a known font description
2577 FontDescriptionRun fontDescriptionRun05;
2578 fontDescriptionRun05.characterRun.characterIndex = 42u;
2579 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2580 fontDescriptionRun05.familyLength = fontLatin.size();
2581 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2582 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
2583 fontDescriptionRun05.familyDefined = true;
2584 fontDescriptionRun05.weightDefined = false;
2585 fontDescriptionRun05.widthDefined = false;
2586 fontDescriptionRun05.slantDefined = false;
2587 fontDescriptionRun05.sizeDefined = false;
2589 // Set a known font description
2590 FontDescriptionRun fontDescriptionRun06;
2591 fontDescriptionRun06.characterRun.characterIndex = 54u;
2592 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2593 fontDescriptionRun06.familyLength = fontHebrew.size();
2594 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2595 memcpy( fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength );
2596 fontDescriptionRun06.familyDefined = true;
2597 fontDescriptionRun06.weightDefined = false;
2598 fontDescriptionRun06.widthDefined = false;
2599 fontDescriptionRun06.slantDefined = false;
2600 fontDescriptionRun06.sizeDefined = false;
2602 // Set a known font description
2603 FontDescriptionRun fontDescriptionRun07;
2604 fontDescriptionRun07.characterRun.characterIndex = 64u;
2605 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2606 fontDescriptionRun07.familyLength = fontHebrew.size();
2607 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2608 memcpy( fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength );
2609 fontDescriptionRun07.familyDefined = true;
2610 fontDescriptionRun07.weightDefined = false;
2611 fontDescriptionRun07.widthDefined = false;
2612 fontDescriptionRun07.slantDefined = false;
2613 fontDescriptionRun07.sizeDefined = false;
2615 // Set a known font description
2616 FontDescriptionRun fontDescriptionRun08;
2617 fontDescriptionRun08.characterRun.characterIndex = 74u;
2618 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2619 fontDescriptionRun08.familyLength = fontLatin.size();
2620 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2621 memcpy( fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength );
2622 fontDescriptionRun08.familyDefined = true;
2623 fontDescriptionRun08.weightDefined = false;
2624 fontDescriptionRun08.widthDefined = false;
2625 fontDescriptionRun08.slantDefined = false;
2626 fontDescriptionRun08.sizeDefined = false;
2628 // Set a known font description
2629 FontDescriptionRun fontDescriptionRun09;
2630 fontDescriptionRun09.characterRun.characterIndex = 92u;
2631 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2632 fontDescriptionRun09.familyLength = fontLatin.size();
2633 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2634 memcpy( fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength );
2635 fontDescriptionRun09.familyDefined = true;
2636 fontDescriptionRun09.weightDefined = false;
2637 fontDescriptionRun09.widthDefined = false;
2638 fontDescriptionRun09.slantDefined = false;
2639 fontDescriptionRun09.sizeDefined = false;
2641 // Set a known font description
2642 FontDescriptionRun fontDescriptionRun10;
2643 fontDescriptionRun10.characterRun.characterIndex = 104u;
2644 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2645 fontDescriptionRun10.familyLength = fontArabic.size();
2646 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2647 memcpy( fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength );
2648 fontDescriptionRun10.familyDefined = true;
2649 fontDescriptionRun10.weightDefined = false;
2650 fontDescriptionRun10.widthDefined = false;
2651 fontDescriptionRun10.slantDefined = false;
2652 fontDescriptionRun10.sizeDefined = false;
2654 // Set a known font description
2655 FontDescriptionRun fontDescriptionRun11;
2656 fontDescriptionRun11.characterRun.characterIndex = 118u;
2657 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2658 fontDescriptionRun11.familyLength = fontHebrew.size();
2659 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2660 memcpy( fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength );
2661 fontDescriptionRun11.familyDefined = true;
2662 fontDescriptionRun11.weightDefined = false;
2663 fontDescriptionRun11.widthDefined = false;
2664 fontDescriptionRun11.slantDefined = false;
2665 fontDescriptionRun11.sizeDefined = false;
2667 // Set a known font description
2668 FontDescriptionRun fontDescriptionRun12;
2669 fontDescriptionRun12.characterRun.characterIndex = 128u;
2670 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2671 fontDescriptionRun12.familyLength = fontLatin.size();
2672 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2673 memcpy( fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength );
2674 fontDescriptionRun12.familyDefined = true;
2675 fontDescriptionRun12.weightDefined = false;
2676 fontDescriptionRun12.widthDefined = false;
2677 fontDescriptionRun12.slantDefined = false;
2678 fontDescriptionRun12.sizeDefined = false;
2680 // Set a known font description
2681 FontDescriptionRun fontDescriptionRun13;
2682 fontDescriptionRun13.characterRun.characterIndex = 145u;
2683 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2684 fontDescriptionRun13.familyLength = fontHebrew.size();
2685 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2686 memcpy( fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength );
2687 fontDescriptionRun13.familyDefined = true;
2688 fontDescriptionRun13.weightDefined = false;
2689 fontDescriptionRun13.widthDefined = false;
2690 fontDescriptionRun13.slantDefined = false;
2691 fontDescriptionRun13.sizeDefined = false;
2693 // Set a known font description
2694 FontDescriptionRun fontDescriptionRun14;
2695 fontDescriptionRun14.characterRun.characterIndex = 154u;
2696 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2697 fontDescriptionRun14.familyLength = fontLatin.size();
2698 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2699 memcpy( fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength );
2700 fontDescriptionRun14.familyDefined = true;
2701 fontDescriptionRun14.weightDefined = false;
2702 fontDescriptionRun14.widthDefined = false;
2703 fontDescriptionRun14.slantDefined = false;
2704 fontDescriptionRun14.sizeDefined = false;
2706 // Set a known font description
2707 FontDescriptionRun fontDescriptionRun15;
2708 fontDescriptionRun15.characterRun.characterIndex = 156u;
2709 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2710 fontDescriptionRun15.familyLength = fontHebrew.size();
2711 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2712 memcpy( fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength );
2713 fontDescriptionRun15.familyDefined = true;
2714 fontDescriptionRun15.weightDefined = false;
2715 fontDescriptionRun15.widthDefined = false;
2716 fontDescriptionRun15.slantDefined = false;
2717 fontDescriptionRun15.sizeDefined = false;
2719 // Set a known font description
2720 FontDescriptionRun fontDescriptionRun16;
2721 fontDescriptionRun16.characterRun.characterIndex = 166u;
2722 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2723 fontDescriptionRun16.familyLength = fontLatin.size();
2724 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2725 memcpy( fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength );
2726 fontDescriptionRun16.familyDefined = true;
2727 fontDescriptionRun16.weightDefined = false;
2728 fontDescriptionRun16.widthDefined = false;
2729 fontDescriptionRun16.slantDefined = false;
2730 fontDescriptionRun16.sizeDefined = false;
2732 // Set a known font description
2733 FontDescriptionRun fontDescriptionRun17;
2734 fontDescriptionRun17.characterRun.characterIndex = 178u;
2735 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2736 fontDescriptionRun17.familyLength = fontArabic.size();
2737 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2738 memcpy( fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength );
2739 fontDescriptionRun17.familyDefined = true;
2740 fontDescriptionRun17.weightDefined = false;
2741 fontDescriptionRun17.widthDefined = false;
2742 fontDescriptionRun17.slantDefined = false;
2743 fontDescriptionRun17.sizeDefined = false;
2745 Vector<FontDescriptionRun> fontDescriptionRuns;
2746 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
2747 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
2748 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
2749 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
2750 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
2751 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
2752 fontDescriptionRuns.PushBack( fontDescriptionRun07 );
2753 fontDescriptionRuns.PushBack( fontDescriptionRun08 );
2754 fontDescriptionRuns.PushBack( fontDescriptionRun09 );
2755 fontDescriptionRuns.PushBack( fontDescriptionRun10 );
2756 fontDescriptionRuns.PushBack( fontDescriptionRun11 );
2757 fontDescriptionRuns.PushBack( fontDescriptionRun12 );
2758 fontDescriptionRuns.PushBack( fontDescriptionRun13 );
2759 fontDescriptionRuns.PushBack( fontDescriptionRun14 );
2760 fontDescriptionRuns.PushBack( fontDescriptionRun15 );
2761 fontDescriptionRuns.PushBack( fontDescriptionRun16 );
2762 fontDescriptionRuns.PushBack( fontDescriptionRun17 );
2763 Size textArea(100.f, 300.f);
2764 Size layoutSize(92.f, 380.f);
2767 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,
2768 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,
2769 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2770 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,
2771 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,
2772 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2773 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,
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, -13.f, 10.f, -9.f, 18.f, -9.f, 30.f, -9.f, 39.f, -3.f, 42.f, -12.f,
2776 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,
2777 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,
2778 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
2779 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,
2780 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,
2781 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -3.f, 33.f, -12.f,
2782 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,
2783 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,
2784 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,
2787 struct LineRun line01 =
2799 struct LineRun line02 =
2811 struct LineRun line03 =
2823 struct LineRun line04 =
2835 struct LineRun line05 =
2847 struct LineRun line06 =
2859 struct LineRun line07 =
2871 struct LineRun line08 =
2883 struct LineRun line09 =
2895 struct LineRun line10 =
2907 struct LineRun line11 =
2919 struct LineRun line12 =
2931 struct LineRun line13 =
2943 struct LineRun line14 =
2955 struct LineRun line15 =
2967 struct LineRun line16 =
2979 struct LineRun line17 =
2991 struct LineRun line18 =
3003 struct LineRun line19 =
3015 Vector<LineRun> lines;
3016 lines.PushBack( line01 );
3017 lines.PushBack( line02 );
3018 lines.PushBack( line03 );
3019 lines.PushBack( line04 );
3020 lines.PushBack( line05 );
3021 lines.PushBack( line06 );
3022 lines.PushBack( line07 );
3023 lines.PushBack( line08 );
3024 lines.PushBack( line09 );
3025 lines.PushBack( line10 );
3026 lines.PushBack( line11 );
3027 lines.PushBack( line12 );
3028 lines.PushBack( line13 );
3029 lines.PushBack( line14 );
3030 lines.PushBack( line15 );
3031 lines.PushBack( line16 );
3032 lines.PushBack( line17 );
3033 lines.PushBack( line18 );
3034 lines.PushBack( line19 );
3036 LayoutTextData data =
3038 "Layout bidirectional text.",
3039 "Hello world demo שלום עולם.\n"
3040 "مرحبا بالعالم hello world שלום עולם\n"
3041 "שלום עולם hello world demo.\n"
3042 "hello world مرحبا بالعالم שלום עולם\n"
3043 "Hello world demo שלום עולם.\n"
3044 "שלום עולם hello world مرحبا بالعالم\n",
3047 fontDescriptionRuns.Begin(),
3053 Layout::Engine::MULTI_LINE_BOX,
3060 if( !LayoutTextTest( data ) )
3062 tet_result(TET_FAIL);
3065 tet_result(TET_PASS);
3069 int UtcDaliTextLayoutEllipsis01(void)
3071 ToolkitTestApplication application;
3072 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3074 // Layout single-line LTR text with ellipsis.
3076 const std::string fontLatin( "TizenSans" );
3078 // Set a known font description
3079 FontDescriptionRun fontDescriptionRun01;
3080 fontDescriptionRun01.characterRun.characterIndex = 0u;
3081 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3082 fontDescriptionRun01.familyLength = fontLatin.size();
3083 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3084 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3085 fontDescriptionRun01.familyDefined = true;
3086 fontDescriptionRun01.weightDefined = false;
3087 fontDescriptionRun01.widthDefined = false;
3088 fontDescriptionRun01.slantDefined = false;
3089 fontDescriptionRun01.sizeDefined = false;
3091 Vector<FontDescriptionRun> fontDescriptionRuns;
3092 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3094 struct LineRun line01 =
3106 Vector<LineRun> lines;
3107 lines.PushBack( line01 );
3111 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,
3114 Size textArea( 100.f, 50.f );
3115 Size layoutSize( 100.f, 20.f );
3117 LayoutTextData data =
3119 "Layout single-line LTR text with ellipsis.",
3120 "Hello world demo hello world demo hello world demo.",
3123 fontDescriptionRuns.Begin(),
3129 Layout::Engine::SINGLE_LINE_BOX,
3136 if( !LayoutTextTest( data ) )
3138 tet_result(TET_FAIL);
3141 tet_result(TET_PASS);
3145 int UtcDaliTextLayoutEllipsis02(void)
3147 ToolkitTestApplication application;
3148 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3150 // Layout multi-line LTR text with ellipsis.
3152 const std::string fontLatin( "TizenSans" );
3154 // Set a known font description
3155 FontDescriptionRun fontDescriptionRun01;
3156 fontDescriptionRun01.characterRun.characterIndex = 0u;
3157 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3158 fontDescriptionRun01.familyLength = fontLatin.size();
3159 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3160 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3161 fontDescriptionRun01.familyDefined = true;
3162 fontDescriptionRun01.weightDefined = false;
3163 fontDescriptionRun01.widthDefined = false;
3164 fontDescriptionRun01.slantDefined = false;
3165 fontDescriptionRun01.sizeDefined = false;
3167 Vector<FontDescriptionRun> fontDescriptionRuns;
3168 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3170 struct LineRun line01 =
3182 struct LineRun line02 =
3194 Vector<LineRun> lines;
3195 lines.PushBack( line01 );
3196 lines.PushBack( line02 );
3200 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,
3201 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,
3204 Size textArea( 100.f, 50.f );
3205 Size layoutSize( 100.f, 40.f );
3207 LayoutTextData data =
3209 "Layout multi-line LTR text with ellipsis.",
3210 "Hello world demo hello world demo hello world demo.",
3213 fontDescriptionRuns.Begin(),
3219 Layout::Engine::MULTI_LINE_BOX,
3226 if( !LayoutTextTest( data ) )
3228 tet_result(TET_FAIL);
3231 tet_result(TET_PASS);
3235 int UtcDaliTextLayoutEllipsis03(void)
3237 ToolkitTestApplication application;
3238 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3240 // Layout single-line RTL text with ellipsis.
3242 const std::string fontHebrew( "TizenSansHebrew" );
3243 const std::string fontArabic( "TizenSansArabic" );
3245 // Set a known font description
3246 FontDescriptionRun fontDescriptionRun01;
3247 fontDescriptionRun01.characterRun.characterIndex = 0u;
3248 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3249 fontDescriptionRun01.familyLength = fontHebrew.size();
3250 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3251 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3252 fontDescriptionRun01.familyDefined = true;
3253 fontDescriptionRun01.weightDefined = false;
3254 fontDescriptionRun01.widthDefined = false;
3255 fontDescriptionRun01.slantDefined = false;
3256 fontDescriptionRun01.sizeDefined = false;
3258 FontDescriptionRun fontDescriptionRun02;
3259 fontDescriptionRun02.characterRun.characterIndex = 10u;
3260 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3261 fontDescriptionRun02.familyLength = fontArabic.size();
3262 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3263 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3264 fontDescriptionRun02.familyDefined = true;
3265 fontDescriptionRun02.weightDefined = false;
3266 fontDescriptionRun02.widthDefined = false;
3267 fontDescriptionRun02.slantDefined = false;
3268 fontDescriptionRun02.sizeDefined = false;
3270 FontDescriptionRun fontDescriptionRun03;
3271 fontDescriptionRun03.characterRun.characterIndex = 24u;
3272 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3273 fontDescriptionRun03.familyLength = fontHebrew.size();
3274 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3275 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3276 fontDescriptionRun03.familyDefined = true;
3277 fontDescriptionRun03.weightDefined = false;
3278 fontDescriptionRun03.widthDefined = false;
3279 fontDescriptionRun03.slantDefined = false;
3280 fontDescriptionRun03.sizeDefined = false;
3282 FontDescriptionRun fontDescriptionRun04;
3283 fontDescriptionRun04.characterRun.characterIndex = 34u;
3284 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3285 fontDescriptionRun04.familyLength = fontArabic.size();
3286 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3287 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3288 fontDescriptionRun04.familyDefined = true;
3289 fontDescriptionRun04.weightDefined = false;
3290 fontDescriptionRun04.widthDefined = false;
3291 fontDescriptionRun04.slantDefined = false;
3292 fontDescriptionRun04.sizeDefined = false;
3294 FontDescriptionRun fontDescriptionRun05;
3295 fontDescriptionRun05.characterRun.characterIndex = 48u;
3296 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3297 fontDescriptionRun05.familyLength = fontHebrew.size();
3298 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3299 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3300 fontDescriptionRun05.familyDefined = true;
3301 fontDescriptionRun05.weightDefined = false;
3302 fontDescriptionRun05.widthDefined = false;
3303 fontDescriptionRun05.slantDefined = false;
3304 fontDescriptionRun05.sizeDefined = false;
3306 FontDescriptionRun fontDescriptionRun06;
3307 fontDescriptionRun06.characterRun.characterIndex = 58u;
3308 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3309 fontDescriptionRun06.familyLength = fontArabic.size();
3310 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3311 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3312 fontDescriptionRun06.familyDefined = true;
3313 fontDescriptionRun06.weightDefined = false;
3314 fontDescriptionRun06.widthDefined = false;
3315 fontDescriptionRun06.slantDefined = false;
3316 fontDescriptionRun06.sizeDefined = false;
3318 Vector<FontDescriptionRun> fontDescriptionRuns;
3319 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3320 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3321 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3322 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3323 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3324 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3326 struct LineRun line01 =
3338 Vector<LineRun> lines;
3339 lines.PushBack( line01 );
3343 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,
3346 Size textArea( 100.f, 50.f );
3347 Size layoutSize( 100.f, 20.f );
3349 LayoutTextData data =
3351 "Layout single-line RTL text with ellipsis.",
3352 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3355 fontDescriptionRuns.Begin(),
3361 Layout::Engine::SINGLE_LINE_BOX,
3368 if( !LayoutTextTest( data ) )
3370 tet_result(TET_FAIL);
3373 tet_result(TET_PASS);
3377 int UtcDaliTextLayoutEllipsis04(void)
3379 ToolkitTestApplication application;
3380 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3382 // Layout multi-line RTL text with ellipsis.
3384 const std::string fontHebrew( "TizenSansHebrew" );
3385 const std::string fontArabic( "TizenSansArabic" );
3387 // Set a known font description
3388 FontDescriptionRun fontDescriptionRun01;
3389 fontDescriptionRun01.characterRun.characterIndex = 0u;
3390 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3391 fontDescriptionRun01.familyLength = fontHebrew.size();
3392 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3393 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3394 fontDescriptionRun01.familyDefined = true;
3395 fontDescriptionRun01.weightDefined = false;
3396 fontDescriptionRun01.widthDefined = false;
3397 fontDescriptionRun01.slantDefined = false;
3398 fontDescriptionRun01.sizeDefined = false;
3400 FontDescriptionRun fontDescriptionRun02;
3401 fontDescriptionRun02.characterRun.characterIndex = 10u;
3402 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3403 fontDescriptionRun02.familyLength = fontArabic.size();
3404 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3405 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3406 fontDescriptionRun02.familyDefined = true;
3407 fontDescriptionRun02.weightDefined = false;
3408 fontDescriptionRun02.widthDefined = false;
3409 fontDescriptionRun02.slantDefined = false;
3410 fontDescriptionRun02.sizeDefined = false;
3412 FontDescriptionRun fontDescriptionRun03;
3413 fontDescriptionRun03.characterRun.characterIndex = 24u;
3414 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3415 fontDescriptionRun03.familyLength = fontHebrew.size();
3416 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3417 memcpy( fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength );
3418 fontDescriptionRun03.familyDefined = true;
3419 fontDescriptionRun03.weightDefined = false;
3420 fontDescriptionRun03.widthDefined = false;
3421 fontDescriptionRun03.slantDefined = false;
3422 fontDescriptionRun03.sizeDefined = false;
3424 FontDescriptionRun fontDescriptionRun04;
3425 fontDescriptionRun04.characterRun.characterIndex = 34u;
3426 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3427 fontDescriptionRun04.familyLength = fontArabic.size();
3428 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3429 memcpy( fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength );
3430 fontDescriptionRun04.familyDefined = true;
3431 fontDescriptionRun04.weightDefined = false;
3432 fontDescriptionRun04.widthDefined = false;
3433 fontDescriptionRun04.slantDefined = false;
3434 fontDescriptionRun04.sizeDefined = false;
3436 FontDescriptionRun fontDescriptionRun05;
3437 fontDescriptionRun05.characterRun.characterIndex = 48u;
3438 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3439 fontDescriptionRun05.familyLength = fontHebrew.size();
3440 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3441 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3442 fontDescriptionRun05.familyDefined = true;
3443 fontDescriptionRun05.weightDefined = false;
3444 fontDescriptionRun05.widthDefined = false;
3445 fontDescriptionRun05.slantDefined = false;
3446 fontDescriptionRun05.sizeDefined = false;
3448 FontDescriptionRun fontDescriptionRun06;
3449 fontDescriptionRun06.characterRun.characterIndex = 58u;
3450 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3451 fontDescriptionRun06.familyLength = fontArabic.size();
3452 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3453 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3454 fontDescriptionRun06.familyDefined = true;
3455 fontDescriptionRun06.weightDefined = false;
3456 fontDescriptionRun06.widthDefined = false;
3457 fontDescriptionRun06.slantDefined = false;
3458 fontDescriptionRun06.sizeDefined = false;
3460 Vector<FontDescriptionRun> fontDescriptionRuns;
3461 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3462 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3463 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3464 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3465 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3466 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3468 struct LineRun line01 =
3480 struct LineRun line02 =
3492 Vector<LineRun> lines;
3493 lines.PushBack( line01 );
3494 lines.PushBack( line02 );
3498 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,
3499 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,
3502 Size textArea( 100.f, 50.f );
3503 Size layoutSize( 100.f, 40.f );
3505 LayoutTextData data =
3507 "Layout single-line RTL text with ellipsis.",
3508 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3511 fontDescriptionRuns.Begin(),
3517 Layout::Engine::MULTI_LINE_BOX,
3524 if( !LayoutTextTest( data ) )
3526 tet_result(TET_FAIL);
3529 tet_result(TET_PASS);
3533 int UtcDaliTextLayoutEllipsis05(void)
3535 ToolkitTestApplication application;
3536 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3538 const std::string fontLatin( "TizenSans" );
3540 // Set a known font description
3541 FontDescriptionRun fontDescriptionRun01;
3542 fontDescriptionRun01.characterRun.characterIndex = 0u;
3543 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3544 fontDescriptionRun01.familyLength = fontLatin.size();
3545 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3546 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3547 fontDescriptionRun01.familyDefined = true;
3548 fontDescriptionRun01.weightDefined = false;
3549 fontDescriptionRun01.widthDefined = false;
3550 fontDescriptionRun01.slantDefined = false;
3551 fontDescriptionRun01.sizeDefined = false;
3553 Vector<FontDescriptionRun> fontDescriptionRuns;
3554 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3556 struct LineRun line01 =
3568 Vector<LineRun> lines;
3569 lines.PushBack( line01 );
3576 Size textArea( 100.f, 19.f );
3577 Size layoutSize( 100.f, 20.f );
3579 LayoutTextData data =
3581 "Not enough height.",
3585 fontDescriptionRuns.Begin(),
3591 Layout::Engine::MULTI_LINE_BOX,
3598 if( !LayoutTextTest( data ) )
3600 tet_result(TET_FAIL);
3603 tet_result(TET_PASS);
3607 int UtcDaliTextReorderLayout01(void)
3609 ToolkitTestApplication application;
3610 tet_infoline(" UtcDaliTextReorderLayout01");
3612 // Reorder lines. No right to left characters.
3614 const std::string fontLatin( "TizenSans" );
3616 // Set a known font description
3617 FontDescriptionRun fontDescriptionRun01;
3618 fontDescriptionRun01.characterRun.characterIndex = 0u;
3619 fontDescriptionRun01.characterRun.numberOfCharacters = 11u;
3620 fontDescriptionRun01.familyLength = fontLatin.size();
3621 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3622 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
3623 fontDescriptionRun01.familyDefined = true;
3624 fontDescriptionRun01.weightDefined = false;
3625 fontDescriptionRun01.widthDefined = false;
3626 fontDescriptionRun01.slantDefined = false;
3627 fontDescriptionRun01.sizeDefined = false;
3629 Vector<FontDescriptionRun> fontDescriptionRuns;
3630 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3634 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,
3637 Size textArea( 100.f, 300.f );
3639 ReLayoutRightToLeftLinesData data =
3641 "Text with no right to left text.",
3645 fontDescriptionRuns.Begin(),
3652 if( !ReLayoutRightToLeftLinesTest( data ) )
3654 tet_result(TET_FAIL);
3657 tet_result(TET_PASS);
3661 int UtcDaliTextReorderLayout02(void)
3663 ToolkitTestApplication application;
3664 tet_infoline(" UtcDaliTextReorderLayout02");
3666 // Reorder lines of the first paragraph.
3668 const std::string fontHebrew( "TizenSansHebrew" );
3669 const std::string fontArabic( "TizenSansArabic" );
3671 // Set a known font description
3672 FontDescriptionRun fontDescriptionRun01;
3673 fontDescriptionRun01.characterRun.characterIndex = 0u;
3674 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3675 fontDescriptionRun01.familyLength = fontHebrew.size();
3676 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3677 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3678 fontDescriptionRun01.familyDefined = true;
3679 fontDescriptionRun01.weightDefined = false;
3680 fontDescriptionRun01.widthDefined = false;
3681 fontDescriptionRun01.slantDefined = false;
3682 fontDescriptionRun01.sizeDefined = false;
3684 FontDescriptionRun fontDescriptionRun02;
3685 fontDescriptionRun02.characterRun.characterIndex = 10u;
3686 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3687 fontDescriptionRun02.familyLength = fontArabic.size();
3688 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3689 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3690 fontDescriptionRun02.familyDefined = true;
3691 fontDescriptionRun02.weightDefined = false;
3692 fontDescriptionRun02.widthDefined = false;
3693 fontDescriptionRun02.slantDefined = false;
3694 fontDescriptionRun02.sizeDefined = false;
3696 FontDescriptionRun fontDescriptionRun03;
3697 fontDescriptionRun03.characterRun.characterIndex = 24u;
3698 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3699 fontDescriptionRun03.familyLength = fontArabic.size();
3700 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3701 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3702 fontDescriptionRun03.familyDefined = true;
3703 fontDescriptionRun03.weightDefined = false;
3704 fontDescriptionRun03.widthDefined = false;
3705 fontDescriptionRun03.slantDefined = false;
3706 fontDescriptionRun03.sizeDefined = false;
3708 FontDescriptionRun fontDescriptionRun04;
3709 fontDescriptionRun04.characterRun.characterIndex = 38u;
3710 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3711 fontDescriptionRun04.familyLength = fontHebrew.size();
3712 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3713 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3714 fontDescriptionRun04.familyDefined = true;
3715 fontDescriptionRun04.weightDefined = false;
3716 fontDescriptionRun04.widthDefined = false;
3717 fontDescriptionRun04.slantDefined = false;
3718 fontDescriptionRun04.sizeDefined = false;
3720 FontDescriptionRun fontDescriptionRun05;
3721 fontDescriptionRun05.characterRun.characterIndex = 48u;
3722 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3723 fontDescriptionRun05.familyLength = fontHebrew.size();
3724 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3725 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3726 fontDescriptionRun05.familyDefined = true;
3727 fontDescriptionRun05.weightDefined = false;
3728 fontDescriptionRun05.widthDefined = false;
3729 fontDescriptionRun05.slantDefined = false;
3730 fontDescriptionRun05.sizeDefined = false;
3732 FontDescriptionRun fontDescriptionRun06;
3733 fontDescriptionRun06.characterRun.characterIndex = 58u;
3734 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3735 fontDescriptionRun06.familyLength = fontArabic.size();
3736 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3737 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3738 fontDescriptionRun06.familyDefined = true;
3739 fontDescriptionRun06.weightDefined = false;
3740 fontDescriptionRun06.widthDefined = false;
3741 fontDescriptionRun06.slantDefined = false;
3742 fontDescriptionRun06.sizeDefined = false;
3744 Vector<FontDescriptionRun> fontDescriptionRuns;
3745 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3746 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3747 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3748 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3749 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3750 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3754 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,
3755 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,
3756 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,
3757 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
3758 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,
3759 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,
3762 Size textArea( 100.f, 300.f );
3764 ReLayoutRightToLeftLinesData data =
3766 "Paragraphs with right to left text.",
3767 "שלום עולם مرحبا بالعالم\n"
3768 "مرحبا بالعالم שלום עולם\n"
3769 "שלום עולם مرحبا بالعالم.",
3772 fontDescriptionRuns.Begin(),
3779 if( !ReLayoutRightToLeftLinesTest( data ) )
3781 tet_result(TET_FAIL);
3784 tet_result(TET_PASS);
3788 int UtcDaliTextReorderLayout03(void)
3790 ToolkitTestApplication application;
3791 tet_infoline(" UtcDaliTextReorderLayout03");
3793 // Reorder lines of the mid paragraph.
3795 const std::string fontHebrew( "TizenSansHebrew" );
3796 const std::string fontArabic( "TizenSansArabic" );
3798 // Set a known font description
3799 FontDescriptionRun fontDescriptionRun01;
3800 fontDescriptionRun01.characterRun.characterIndex = 0u;
3801 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3802 fontDescriptionRun01.familyLength = fontHebrew.size();
3803 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3804 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3805 fontDescriptionRun01.familyDefined = true;
3806 fontDescriptionRun01.weightDefined = false;
3807 fontDescriptionRun01.widthDefined = false;
3808 fontDescriptionRun01.slantDefined = false;
3809 fontDescriptionRun01.sizeDefined = false;
3811 FontDescriptionRun fontDescriptionRun02;
3812 fontDescriptionRun02.characterRun.characterIndex = 10u;
3813 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3814 fontDescriptionRun02.familyLength = fontArabic.size();
3815 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3816 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3817 fontDescriptionRun02.familyDefined = true;
3818 fontDescriptionRun02.weightDefined = false;
3819 fontDescriptionRun02.widthDefined = false;
3820 fontDescriptionRun02.slantDefined = false;
3821 fontDescriptionRun02.sizeDefined = false;
3823 FontDescriptionRun fontDescriptionRun03;
3824 fontDescriptionRun03.characterRun.characterIndex = 24u;
3825 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3826 fontDescriptionRun03.familyLength = fontArabic.size();
3827 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3828 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3829 fontDescriptionRun03.familyDefined = true;
3830 fontDescriptionRun03.weightDefined = false;
3831 fontDescriptionRun03.widthDefined = false;
3832 fontDescriptionRun03.slantDefined = false;
3833 fontDescriptionRun03.sizeDefined = false;
3835 FontDescriptionRun fontDescriptionRun04;
3836 fontDescriptionRun04.characterRun.characterIndex = 38u;
3837 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3838 fontDescriptionRun04.familyLength = fontHebrew.size();
3839 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3840 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3841 fontDescriptionRun04.familyDefined = true;
3842 fontDescriptionRun04.weightDefined = false;
3843 fontDescriptionRun04.widthDefined = false;
3844 fontDescriptionRun04.slantDefined = false;
3845 fontDescriptionRun04.sizeDefined = false;
3847 FontDescriptionRun fontDescriptionRun05;
3848 fontDescriptionRun05.characterRun.characterIndex = 48u;
3849 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3850 fontDescriptionRun05.familyLength = fontHebrew.size();
3851 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3852 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3853 fontDescriptionRun05.familyDefined = true;
3854 fontDescriptionRun05.weightDefined = false;
3855 fontDescriptionRun05.widthDefined = false;
3856 fontDescriptionRun05.slantDefined = false;
3857 fontDescriptionRun05.sizeDefined = false;
3859 FontDescriptionRun fontDescriptionRun06;
3860 fontDescriptionRun06.characterRun.characterIndex = 58u;
3861 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3862 fontDescriptionRun06.familyLength = fontArabic.size();
3863 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3864 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3865 fontDescriptionRun06.familyDefined = true;
3866 fontDescriptionRun06.weightDefined = false;
3867 fontDescriptionRun06.widthDefined = false;
3868 fontDescriptionRun06.slantDefined = false;
3869 fontDescriptionRun06.sizeDefined = false;
3871 Vector<FontDescriptionRun> fontDescriptionRuns;
3872 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
3873 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
3874 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
3875 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
3876 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
3877 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
3881 1.f, -10.f, 12.f, -13.f, 19.f, -10.f, 24.f, -10.f, 32.f, -0.f, 37.f, -10.f, 45.f, -10.f, 50.f, -13.f, 58.f, -10.f, 66.f, -0.f, 69.f, -8.f, 76.f, -6.f, 81.f, -7.f, 87.f, -7.f, 92.f, -11.f, 94.f, -0.f,
3882 0.f, -7.f, 5.f, -11.f, 6.f, -11.f, 10.f, -8.f, 17.f, -11.f, 18.f, -11.f, 22.f, -8.f, 28.f, -0.f,
3883 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,
3884 22.f, -10.f, 17.f, -10.f, 10.f, -13.f, 1.f, -10.f, 0.f, -0.f,
3885 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,
3886 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,
3889 Size textArea( 100.f, 300.f );
3891 ReLayoutRightToLeftLinesData data =
3893 "Paragraphs with right to left text.",
3894 "שלום עולם مرحبا بالعالم\n"
3895 "مرحبا بالعالم שלום עולם\n"
3896 "שלום עולם مرحبا بالعالم.",
3899 fontDescriptionRuns.Begin(),
3906 if( !ReLayoutRightToLeftLinesTest( data ) )
3908 tet_result(TET_FAIL);
3911 tet_result(TET_PASS);
3915 int UtcDaliTextReorderLayout04(void)
3917 ToolkitTestApplication application;
3918 tet_infoline(" UtcDaliTextReorderLayout04");
3920 // Reorder lines of the last paragraph.
3922 const std::string fontHebrew( "TizenSansHebrew" );
3923 const std::string fontArabic( "TizenSansArabic" );
3925 // Set a known font description
3926 FontDescriptionRun fontDescriptionRun01;
3927 fontDescriptionRun01.characterRun.characterIndex = 0u;
3928 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3929 fontDescriptionRun01.familyLength = fontHebrew.size();
3930 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3931 memcpy( fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength );
3932 fontDescriptionRun01.familyDefined = true;
3933 fontDescriptionRun01.weightDefined = false;
3934 fontDescriptionRun01.widthDefined = false;
3935 fontDescriptionRun01.slantDefined = false;
3936 fontDescriptionRun01.sizeDefined = false;
3938 FontDescriptionRun fontDescriptionRun02;
3939 fontDescriptionRun02.characterRun.characterIndex = 10u;
3940 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3941 fontDescriptionRun02.familyLength = fontArabic.size();
3942 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3943 memcpy( fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength );
3944 fontDescriptionRun02.familyDefined = true;
3945 fontDescriptionRun02.weightDefined = false;
3946 fontDescriptionRun02.widthDefined = false;
3947 fontDescriptionRun02.slantDefined = false;
3948 fontDescriptionRun02.sizeDefined = false;
3950 FontDescriptionRun fontDescriptionRun03;
3951 fontDescriptionRun03.characterRun.characterIndex = 24u;
3952 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3953 fontDescriptionRun03.familyLength = fontArabic.size();
3954 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3955 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
3956 fontDescriptionRun03.familyDefined = true;
3957 fontDescriptionRun03.weightDefined = false;
3958 fontDescriptionRun03.widthDefined = false;
3959 fontDescriptionRun03.slantDefined = false;
3960 fontDescriptionRun03.sizeDefined = false;
3962 FontDescriptionRun fontDescriptionRun04;
3963 fontDescriptionRun04.characterRun.characterIndex = 38u;
3964 fontDescriptionRun04.characterRun.numberOfCharacters = 10u;
3965 fontDescriptionRun04.familyLength = fontHebrew.size();
3966 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3967 memcpy( fontDescriptionRun04.familyName, fontHebrew.c_str(), fontDescriptionRun04.familyLength );
3968 fontDescriptionRun04.familyDefined = true;
3969 fontDescriptionRun04.weightDefined = false;
3970 fontDescriptionRun04.widthDefined = false;
3971 fontDescriptionRun04.slantDefined = false;
3972 fontDescriptionRun04.sizeDefined = false;
3974 FontDescriptionRun fontDescriptionRun05;
3975 fontDescriptionRun05.characterRun.characterIndex = 48u;
3976 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3977 fontDescriptionRun05.familyLength = fontHebrew.size();
3978 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3979 memcpy( fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength );
3980 fontDescriptionRun05.familyDefined = true;
3981 fontDescriptionRun05.weightDefined = false;
3982 fontDescriptionRun05.widthDefined = false;
3983 fontDescriptionRun05.slantDefined = false;
3984 fontDescriptionRun05.sizeDefined = false;
3986 FontDescriptionRun fontDescriptionRun06;
3987 fontDescriptionRun06.characterRun.characterIndex = 58u;
3988 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3989 fontDescriptionRun06.familyLength = fontArabic.size();
3990 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3991 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
3992 fontDescriptionRun06.familyDefined = true;
3993 fontDescriptionRun06.weightDefined = false;
3994 fontDescriptionRun06.widthDefined = false;
3995 fontDescriptionRun06.slantDefined = false;
3996 fontDescriptionRun06.sizeDefined = false;
3998 Vector<FontDescriptionRun> fontDescriptionRuns;
3999 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4000 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4001 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4002 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4003 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4004 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4008 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,
4009 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,
4010 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,
4011 1.f, -10.f, 9.f, -10.f, 14.f, -13.f, 22.f, -10.f, 30.f, -0.f,
4012 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,
4013 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,
4016 Size textArea( 100.f, 300.f );
4018 ReLayoutRightToLeftLinesData data =
4020 "Paragraphs with right to left text.",
4021 "שלום עולם مرحبا بالعالم\n"
4022 "مرحبا بالعالم שלום עולם\n"
4023 "שלום עולם مرحبا بالعالم.",
4026 fontDescriptionRuns.Begin(),
4033 if( !ReLayoutRightToLeftLinesTest( data ) )
4035 tet_result(TET_FAIL);
4038 tet_result(TET_PASS);
4042 int UtcDaliTextAlign01(void)
4044 ToolkitTestApplication application;
4045 tet_infoline(" UtcDaliTextAlign01");
4047 // Calculate text alignment.
4049 const std::string fontLatin( "TizenSans" );
4050 const std::string fontHebrew( "TizenSansHebrew" );
4051 const std::string fontArabic( "TizenSansArabic" );
4053 // Set a known font description
4054 FontDescriptionRun fontDescriptionRun01;
4055 fontDescriptionRun01.characterRun.characterIndex = 0u;
4056 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4057 fontDescriptionRun01.familyLength = fontLatin.size();
4058 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4059 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4060 fontDescriptionRun01.familyDefined = true;
4061 fontDescriptionRun01.weightDefined = false;
4062 fontDescriptionRun01.widthDefined = false;
4063 fontDescriptionRun01.slantDefined = false;
4064 fontDescriptionRun01.sizeDefined = false;
4066 FontDescriptionRun fontDescriptionRun02;
4067 fontDescriptionRun02.characterRun.characterIndex = 12u;
4068 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4069 fontDescriptionRun02.familyLength = fontHebrew.size();
4070 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4071 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4072 fontDescriptionRun02.familyDefined = true;
4073 fontDescriptionRun02.weightDefined = false;
4074 fontDescriptionRun02.widthDefined = false;
4075 fontDescriptionRun02.slantDefined = false;
4076 fontDescriptionRun02.sizeDefined = false;
4078 FontDescriptionRun fontDescriptionRun03;
4079 fontDescriptionRun03.characterRun.characterIndex = 22u;
4080 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4081 fontDescriptionRun03.familyLength = fontArabic.size();
4082 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4083 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4084 fontDescriptionRun03.familyDefined = true;
4085 fontDescriptionRun03.weightDefined = false;
4086 fontDescriptionRun03.widthDefined = false;
4087 fontDescriptionRun03.slantDefined = false;
4088 fontDescriptionRun03.sizeDefined = false;
4090 FontDescriptionRun fontDescriptionRun04;
4091 fontDescriptionRun04.characterRun.characterIndex = 36u;
4092 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4093 fontDescriptionRun04.familyLength = fontLatin.size();
4094 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4095 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4096 fontDescriptionRun04.familyDefined = true;
4097 fontDescriptionRun04.weightDefined = false;
4098 fontDescriptionRun04.widthDefined = false;
4099 fontDescriptionRun04.slantDefined = false;
4100 fontDescriptionRun04.sizeDefined = false;
4102 FontDescriptionRun fontDescriptionRun05;
4103 fontDescriptionRun05.characterRun.characterIndex = 48u;
4104 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4105 fontDescriptionRun05.familyLength = fontLatin.size();
4106 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4107 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4108 fontDescriptionRun05.familyDefined = true;
4109 fontDescriptionRun05.weightDefined = false;
4110 fontDescriptionRun05.widthDefined = false;
4111 fontDescriptionRun05.slantDefined = false;
4112 fontDescriptionRun05.sizeDefined = false;
4114 FontDescriptionRun fontDescriptionRun06;
4115 fontDescriptionRun06.characterRun.characterIndex = 60u;
4116 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4117 fontDescriptionRun06.familyLength = fontArabic.size();
4118 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4119 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4120 fontDescriptionRun06.familyDefined = true;
4121 fontDescriptionRun06.weightDefined = false;
4122 fontDescriptionRun06.widthDefined = false;
4123 fontDescriptionRun06.slantDefined = false;
4124 fontDescriptionRun06.sizeDefined = false;
4126 Vector<FontDescriptionRun> fontDescriptionRuns;
4127 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4128 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4129 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4130 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4131 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4132 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4134 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4136 Size textArea( 100.f, 300.f );
4139 "Begin alignment for the first paragraph.",
4140 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4143 fontDescriptionRuns.Begin(),
4144 Layout::HORIZONTAL_ALIGN_BEGIN,
4145 Layout::VERTICAL_ALIGN_TOP,
4152 if( !AlignTest( data ) )
4154 tet_result(TET_FAIL);
4157 tet_result(TET_PASS);
4161 int UtcDaliTextAlign02(void)
4163 ToolkitTestApplication application;
4164 tet_infoline(" UtcDaliTextAlign02");
4166 // Calculate text alignment.
4168 const std::string fontLatin( "TizenSans" );
4169 const std::string fontHebrew( "TizenSansHebrew" );
4170 const std::string fontArabic( "TizenSansArabic" );
4172 // Set a known font description
4173 FontDescriptionRun fontDescriptionRun01;
4174 fontDescriptionRun01.characterRun.characterIndex = 0u;
4175 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4176 fontDescriptionRun01.familyLength = fontLatin.size();
4177 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4178 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4179 fontDescriptionRun01.familyDefined = true;
4180 fontDescriptionRun01.weightDefined = false;
4181 fontDescriptionRun01.widthDefined = false;
4182 fontDescriptionRun01.slantDefined = false;
4183 fontDescriptionRun01.sizeDefined = false;
4185 FontDescriptionRun fontDescriptionRun02;
4186 fontDescriptionRun02.characterRun.characterIndex = 12u;
4187 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4188 fontDescriptionRun02.familyLength = fontHebrew.size();
4189 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4190 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4191 fontDescriptionRun02.familyDefined = true;
4192 fontDescriptionRun02.weightDefined = false;
4193 fontDescriptionRun02.widthDefined = false;
4194 fontDescriptionRun02.slantDefined = false;
4195 fontDescriptionRun02.sizeDefined = false;
4197 FontDescriptionRun fontDescriptionRun03;
4198 fontDescriptionRun03.characterRun.characterIndex = 22u;
4199 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4200 fontDescriptionRun03.familyLength = fontArabic.size();
4201 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4202 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4203 fontDescriptionRun03.familyDefined = true;
4204 fontDescriptionRun03.weightDefined = false;
4205 fontDescriptionRun03.widthDefined = false;
4206 fontDescriptionRun03.slantDefined = false;
4207 fontDescriptionRun03.sizeDefined = false;
4209 FontDescriptionRun fontDescriptionRun04;
4210 fontDescriptionRun04.characterRun.characterIndex = 36u;
4211 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4212 fontDescriptionRun04.familyLength = fontLatin.size();
4213 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4214 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4215 fontDescriptionRun04.familyDefined = true;
4216 fontDescriptionRun04.weightDefined = false;
4217 fontDescriptionRun04.widthDefined = false;
4218 fontDescriptionRun04.slantDefined = false;
4219 fontDescriptionRun04.sizeDefined = false;
4221 FontDescriptionRun fontDescriptionRun05;
4222 fontDescriptionRun05.characterRun.characterIndex = 48u;
4223 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4224 fontDescriptionRun05.familyLength = fontLatin.size();
4225 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4226 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4227 fontDescriptionRun05.familyDefined = true;
4228 fontDescriptionRun05.weightDefined = false;
4229 fontDescriptionRun05.widthDefined = false;
4230 fontDescriptionRun05.slantDefined = false;
4231 fontDescriptionRun05.sizeDefined = false;
4233 FontDescriptionRun fontDescriptionRun06;
4234 fontDescriptionRun06.characterRun.characterIndex = 60u;
4235 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4236 fontDescriptionRun06.familyLength = fontArabic.size();
4237 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4238 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4239 fontDescriptionRun06.familyDefined = true;
4240 fontDescriptionRun06.weightDefined = false;
4241 fontDescriptionRun06.widthDefined = false;
4242 fontDescriptionRun06.slantDefined = false;
4243 fontDescriptionRun06.sizeDefined = false;
4245 Vector<FontDescriptionRun> fontDescriptionRuns;
4246 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4247 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4248 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4249 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4250 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4251 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4253 float positions[] = { 0.f, 0.f, 2.f, 60.f, 0.f, 0.f };
4255 Size textArea( 100.f, 300.f );
4258 "Begin alignment for the mid paragraph.",
4259 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4262 fontDescriptionRuns.Begin(),
4263 Layout::HORIZONTAL_ALIGN_BEGIN,
4264 Layout::VERTICAL_ALIGN_TOP,
4271 if( !AlignTest( data ) )
4273 tet_result(TET_FAIL);
4276 tet_result(TET_PASS);
4280 int UtcDaliTextAlign03(void)
4282 ToolkitTestApplication application;
4283 tet_infoline(" UtcDaliTextAlign03");
4285 // Calculate text alignment.
4287 const std::string fontLatin( "TizenSans" );
4288 const std::string fontHebrew( "TizenSansHebrew" );
4289 const std::string fontArabic( "TizenSansArabic" );
4291 // Set a known font description
4292 FontDescriptionRun fontDescriptionRun01;
4293 fontDescriptionRun01.characterRun.characterIndex = 0u;
4294 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4295 fontDescriptionRun01.familyLength = fontLatin.size();
4296 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4297 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4298 fontDescriptionRun01.familyDefined = true;
4299 fontDescriptionRun01.weightDefined = false;
4300 fontDescriptionRun01.widthDefined = false;
4301 fontDescriptionRun01.slantDefined = false;
4302 fontDescriptionRun01.sizeDefined = false;
4304 FontDescriptionRun fontDescriptionRun02;
4305 fontDescriptionRun02.characterRun.characterIndex = 12u;
4306 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4307 fontDescriptionRun02.familyLength = fontHebrew.size();
4308 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4309 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4310 fontDescriptionRun02.familyDefined = true;
4311 fontDescriptionRun02.weightDefined = false;
4312 fontDescriptionRun02.widthDefined = false;
4313 fontDescriptionRun02.slantDefined = false;
4314 fontDescriptionRun02.sizeDefined = false;
4316 FontDescriptionRun fontDescriptionRun03;
4317 fontDescriptionRun03.characterRun.characterIndex = 22u;
4318 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4319 fontDescriptionRun03.familyLength = fontArabic.size();
4320 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4321 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4322 fontDescriptionRun03.familyDefined = true;
4323 fontDescriptionRun03.weightDefined = false;
4324 fontDescriptionRun03.widthDefined = false;
4325 fontDescriptionRun03.slantDefined = false;
4326 fontDescriptionRun03.sizeDefined = false;
4328 FontDescriptionRun fontDescriptionRun04;
4329 fontDescriptionRun04.characterRun.characterIndex = 36u;
4330 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4331 fontDescriptionRun04.familyLength = fontLatin.size();
4332 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4333 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4334 fontDescriptionRun04.familyDefined = true;
4335 fontDescriptionRun04.weightDefined = false;
4336 fontDescriptionRun04.widthDefined = false;
4337 fontDescriptionRun04.slantDefined = false;
4338 fontDescriptionRun04.sizeDefined = false;
4340 FontDescriptionRun fontDescriptionRun05;
4341 fontDescriptionRun05.characterRun.characterIndex = 48u;
4342 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4343 fontDescriptionRun05.familyLength = fontLatin.size();
4344 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4345 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4346 fontDescriptionRun05.familyDefined = true;
4347 fontDescriptionRun05.weightDefined = false;
4348 fontDescriptionRun05.widthDefined = false;
4349 fontDescriptionRun05.slantDefined = false;
4350 fontDescriptionRun05.sizeDefined = false;
4352 FontDescriptionRun fontDescriptionRun06;
4353 fontDescriptionRun06.characterRun.characterIndex = 60u;
4354 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4355 fontDescriptionRun06.familyLength = fontArabic.size();
4356 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4357 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4358 fontDescriptionRun06.familyDefined = true;
4359 fontDescriptionRun06.weightDefined = false;
4360 fontDescriptionRun06.widthDefined = false;
4361 fontDescriptionRun06.slantDefined = false;
4362 fontDescriptionRun06.sizeDefined = false;
4364 Vector<FontDescriptionRun> fontDescriptionRuns;
4365 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4366 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4367 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4368 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4369 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4370 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4372 float positions[] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
4374 Size textArea( 100.f, 300.f );
4377 "Begin alignment for the last paragraph.",
4378 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4381 fontDescriptionRuns.Begin(),
4382 Layout::HORIZONTAL_ALIGN_BEGIN,
4383 Layout::VERTICAL_ALIGN_TOP,
4390 if( !AlignTest( data ) )
4392 tet_result(TET_FAIL);
4395 tet_result(TET_PASS);
4399 int UtcDaliTextAlign04(void)
4401 ToolkitTestApplication application;
4402 tet_infoline(" UtcDaliTextAlign04");
4404 // Calculate text alignment.
4406 const std::string fontLatin( "TizenSans" );
4407 const std::string fontHebrew( "TizenSansHebrew" );
4408 const std::string fontArabic( "TizenSansArabic" );
4410 // Set a known font description
4411 FontDescriptionRun fontDescriptionRun01;
4412 fontDescriptionRun01.characterRun.characterIndex = 0u;
4413 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4414 fontDescriptionRun01.familyLength = fontLatin.size();
4415 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4416 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4417 fontDescriptionRun01.familyDefined = true;
4418 fontDescriptionRun01.weightDefined = false;
4419 fontDescriptionRun01.widthDefined = false;
4420 fontDescriptionRun01.slantDefined = false;
4421 fontDescriptionRun01.sizeDefined = false;
4423 FontDescriptionRun fontDescriptionRun02;
4424 fontDescriptionRun02.characterRun.characterIndex = 12u;
4425 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4426 fontDescriptionRun02.familyLength = fontHebrew.size();
4427 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4428 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4429 fontDescriptionRun02.familyDefined = true;
4430 fontDescriptionRun02.weightDefined = false;
4431 fontDescriptionRun02.widthDefined = false;
4432 fontDescriptionRun02.slantDefined = false;
4433 fontDescriptionRun02.sizeDefined = false;
4435 FontDescriptionRun fontDescriptionRun03;
4436 fontDescriptionRun03.characterRun.characterIndex = 22u;
4437 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4438 fontDescriptionRun03.familyLength = fontArabic.size();
4439 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4440 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4441 fontDescriptionRun03.familyDefined = true;
4442 fontDescriptionRun03.weightDefined = false;
4443 fontDescriptionRun03.widthDefined = false;
4444 fontDescriptionRun03.slantDefined = false;
4445 fontDescriptionRun03.sizeDefined = false;
4447 FontDescriptionRun fontDescriptionRun04;
4448 fontDescriptionRun04.characterRun.characterIndex = 36u;
4449 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4450 fontDescriptionRun04.familyLength = fontLatin.size();
4451 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4452 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4453 fontDescriptionRun04.familyDefined = true;
4454 fontDescriptionRun04.weightDefined = false;
4455 fontDescriptionRun04.widthDefined = false;
4456 fontDescriptionRun04.slantDefined = false;
4457 fontDescriptionRun04.sizeDefined = false;
4459 FontDescriptionRun fontDescriptionRun05;
4460 fontDescriptionRun05.characterRun.characterIndex = 48u;
4461 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4462 fontDescriptionRun05.familyLength = fontLatin.size();
4463 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4464 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4465 fontDescriptionRun05.familyDefined = true;
4466 fontDescriptionRun05.weightDefined = false;
4467 fontDescriptionRun05.widthDefined = false;
4468 fontDescriptionRun05.slantDefined = false;
4469 fontDescriptionRun05.sizeDefined = false;
4471 FontDescriptionRun fontDescriptionRun06;
4472 fontDescriptionRun06.characterRun.characterIndex = 60u;
4473 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4474 fontDescriptionRun06.familyLength = fontArabic.size();
4475 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4476 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4477 fontDescriptionRun06.familyDefined = true;
4478 fontDescriptionRun06.weightDefined = false;
4479 fontDescriptionRun06.widthDefined = false;
4480 fontDescriptionRun06.slantDefined = false;
4481 fontDescriptionRun06.sizeDefined = false;
4483 Vector<FontDescriptionRun> fontDescriptionRuns;
4484 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4485 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4486 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4487 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4488 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4489 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4491 float positions[] = { 10.f, 16.f, 0.f, 0.f, 0.f, 0.f };
4493 Size textArea( 100.f, 300.f );
4496 "Center alignment for the first paragraph.",
4497 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4500 fontDescriptionRuns.Begin(),
4501 Layout::HORIZONTAL_ALIGN_CENTER,
4502 Layout::VERTICAL_ALIGN_TOP,
4509 if( !AlignTest( data ) )
4511 tet_result(TET_FAIL);
4514 tet_result(TET_PASS);
4518 int UtcDaliTextAlign05(void)
4520 ToolkitTestApplication application;
4521 tet_infoline(" UtcDaliTextAlign05");
4523 // Calculate text alignment.
4525 const std::string fontLatin( "TizenSans" );
4526 const std::string fontHebrew( "TizenSansHebrew" );
4527 const std::string fontArabic( "TizenSansArabic" );
4529 // Set a known font description
4530 FontDescriptionRun fontDescriptionRun01;
4531 fontDescriptionRun01.characterRun.characterIndex = 0u;
4532 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4533 fontDescriptionRun01.familyLength = fontLatin.size();
4534 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4535 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4536 fontDescriptionRun01.familyDefined = true;
4537 fontDescriptionRun01.weightDefined = false;
4538 fontDescriptionRun01.widthDefined = false;
4539 fontDescriptionRun01.slantDefined = false;
4540 fontDescriptionRun01.sizeDefined = false;
4542 FontDescriptionRun fontDescriptionRun02;
4543 fontDescriptionRun02.characterRun.characterIndex = 12u;
4544 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4545 fontDescriptionRun02.familyLength = fontHebrew.size();
4546 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4547 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4548 fontDescriptionRun02.familyDefined = true;
4549 fontDescriptionRun02.weightDefined = false;
4550 fontDescriptionRun02.widthDefined = false;
4551 fontDescriptionRun02.slantDefined = false;
4552 fontDescriptionRun02.sizeDefined = false;
4554 FontDescriptionRun fontDescriptionRun03;
4555 fontDescriptionRun03.characterRun.characterIndex = 22u;
4556 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4557 fontDescriptionRun03.familyLength = fontArabic.size();
4558 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4559 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4560 fontDescriptionRun03.familyDefined = true;
4561 fontDescriptionRun03.weightDefined = false;
4562 fontDescriptionRun03.widthDefined = false;
4563 fontDescriptionRun03.slantDefined = false;
4564 fontDescriptionRun03.sizeDefined = false;
4566 FontDescriptionRun fontDescriptionRun04;
4567 fontDescriptionRun04.characterRun.characterIndex = 36u;
4568 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4569 fontDescriptionRun04.familyLength = fontLatin.size();
4570 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4571 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4572 fontDescriptionRun04.familyDefined = true;
4573 fontDescriptionRun04.weightDefined = false;
4574 fontDescriptionRun04.widthDefined = false;
4575 fontDescriptionRun04.slantDefined = false;
4576 fontDescriptionRun04.sizeDefined = false;
4578 FontDescriptionRun fontDescriptionRun05;
4579 fontDescriptionRun05.characterRun.characterIndex = 48u;
4580 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4581 fontDescriptionRun05.familyLength = fontLatin.size();
4582 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4583 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4584 fontDescriptionRun05.familyDefined = true;
4585 fontDescriptionRun05.weightDefined = false;
4586 fontDescriptionRun05.widthDefined = false;
4587 fontDescriptionRun05.slantDefined = false;
4588 fontDescriptionRun05.sizeDefined = false;
4590 FontDescriptionRun fontDescriptionRun06;
4591 fontDescriptionRun06.characterRun.characterIndex = 60u;
4592 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4593 fontDescriptionRun06.familyLength = fontArabic.size();
4594 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4595 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4596 fontDescriptionRun06.familyDefined = true;
4597 fontDescriptionRun06.weightDefined = false;
4598 fontDescriptionRun06.widthDefined = false;
4599 fontDescriptionRun06.slantDefined = false;
4600 fontDescriptionRun06.sizeDefined = false;
4602 Vector<FontDescriptionRun> fontDescriptionRuns;
4603 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4604 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4605 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4606 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4607 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4608 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4610 float positions[] = { 0.f, 0.f, -1.f, 30.f, 0.f, 0.f };
4612 Size textArea( 100.f, 300.f );
4615 "Center alignment for the mid paragraph.",
4616 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4619 fontDescriptionRuns.Begin(),
4620 Layout::HORIZONTAL_ALIGN_CENTER,
4621 Layout::VERTICAL_ALIGN_TOP,
4628 if( !AlignTest( data ) )
4630 tet_result(TET_FAIL);
4633 tet_result(TET_PASS);
4637 int UtcDaliTextAlign06(void)
4639 ToolkitTestApplication application;
4640 tet_infoline(" UtcDaliTextAlign06");
4642 // Calculate text alignment.
4644 const std::string fontLatin( "TizenSans" );
4645 const std::string fontHebrew( "TizenSansHebrew" );
4646 const std::string fontArabic( "TizenSansArabic" );
4648 // Set a known font description
4649 FontDescriptionRun fontDescriptionRun01;
4650 fontDescriptionRun01.characterRun.characterIndex = 0u;
4651 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4652 fontDescriptionRun01.familyLength = fontLatin.size();
4653 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4654 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4655 fontDescriptionRun01.familyDefined = true;
4656 fontDescriptionRun01.weightDefined = false;
4657 fontDescriptionRun01.widthDefined = false;
4658 fontDescriptionRun01.slantDefined = false;
4659 fontDescriptionRun01.sizeDefined = false;
4661 FontDescriptionRun fontDescriptionRun02;
4662 fontDescriptionRun02.characterRun.characterIndex = 12u;
4663 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4664 fontDescriptionRun02.familyLength = fontHebrew.size();
4665 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4666 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4667 fontDescriptionRun02.familyDefined = true;
4668 fontDescriptionRun02.weightDefined = false;
4669 fontDescriptionRun02.widthDefined = false;
4670 fontDescriptionRun02.slantDefined = false;
4671 fontDescriptionRun02.sizeDefined = false;
4673 FontDescriptionRun fontDescriptionRun03;
4674 fontDescriptionRun03.characterRun.characterIndex = 22u;
4675 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4676 fontDescriptionRun03.familyLength = fontArabic.size();
4677 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4678 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4679 fontDescriptionRun03.familyDefined = true;
4680 fontDescriptionRun03.weightDefined = false;
4681 fontDescriptionRun03.widthDefined = false;
4682 fontDescriptionRun03.slantDefined = false;
4683 fontDescriptionRun03.sizeDefined = false;
4685 FontDescriptionRun fontDescriptionRun04;
4686 fontDescriptionRun04.characterRun.characterIndex = 36u;
4687 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4688 fontDescriptionRun04.familyLength = fontLatin.size();
4689 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4690 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4691 fontDescriptionRun04.familyDefined = true;
4692 fontDescriptionRun04.weightDefined = false;
4693 fontDescriptionRun04.widthDefined = false;
4694 fontDescriptionRun04.slantDefined = false;
4695 fontDescriptionRun04.sizeDefined = false;
4697 FontDescriptionRun fontDescriptionRun05;
4698 fontDescriptionRun05.characterRun.characterIndex = 48u;
4699 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4700 fontDescriptionRun05.familyLength = fontLatin.size();
4701 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4702 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4703 fontDescriptionRun05.familyDefined = true;
4704 fontDescriptionRun05.weightDefined = false;
4705 fontDescriptionRun05.widthDefined = false;
4706 fontDescriptionRun05.slantDefined = false;
4707 fontDescriptionRun05.sizeDefined = false;
4709 FontDescriptionRun fontDescriptionRun06;
4710 fontDescriptionRun06.characterRun.characterIndex = 60u;
4711 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4712 fontDescriptionRun06.familyLength = fontArabic.size();
4713 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4714 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4715 fontDescriptionRun06.familyDefined = true;
4716 fontDescriptionRun06.weightDefined = false;
4717 fontDescriptionRun06.widthDefined = false;
4718 fontDescriptionRun06.slantDefined = false;
4719 fontDescriptionRun06.sizeDefined = false;
4721 Vector<FontDescriptionRun> fontDescriptionRuns;
4722 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4723 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4724 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4725 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4726 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4727 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4729 float positions[] = { 0.f, 0.f, 0.f, 0.f, 10.f, 20.f };
4731 Size textArea( 100.f, 300.f );
4734 "Center alignment for the last paragraph.",
4735 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4738 fontDescriptionRuns.Begin(),
4739 Layout::HORIZONTAL_ALIGN_CENTER,
4740 Layout::VERTICAL_ALIGN_TOP,
4747 if( !AlignTest( data ) )
4749 tet_result(TET_FAIL);
4752 tet_result(TET_PASS);
4756 int UtcDaliTextAlign07(void)
4758 ToolkitTestApplication application;
4759 tet_infoline(" UtcDaliTextAlign07");
4761 // Calculate text alignment.
4763 const std::string fontLatin( "TizenSans" );
4764 const std::string fontHebrew( "TizenSansHebrew" );
4765 const std::string fontArabic( "TizenSansArabic" );
4767 // Set a known font description
4768 FontDescriptionRun fontDescriptionRun01;
4769 fontDescriptionRun01.characterRun.characterIndex = 0u;
4770 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4771 fontDescriptionRun01.familyLength = fontLatin.size();
4772 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4773 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4774 fontDescriptionRun01.familyDefined = true;
4775 fontDescriptionRun01.weightDefined = false;
4776 fontDescriptionRun01.widthDefined = false;
4777 fontDescriptionRun01.slantDefined = false;
4778 fontDescriptionRun01.sizeDefined = false;
4780 FontDescriptionRun fontDescriptionRun02;
4781 fontDescriptionRun02.characterRun.characterIndex = 12u;
4782 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4783 fontDescriptionRun02.familyLength = fontHebrew.size();
4784 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4785 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4786 fontDescriptionRun02.familyDefined = true;
4787 fontDescriptionRun02.weightDefined = false;
4788 fontDescriptionRun02.widthDefined = false;
4789 fontDescriptionRun02.slantDefined = false;
4790 fontDescriptionRun02.sizeDefined = false;
4792 FontDescriptionRun fontDescriptionRun03;
4793 fontDescriptionRun03.characterRun.characterIndex = 22u;
4794 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4795 fontDescriptionRun03.familyLength = fontArabic.size();
4796 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4797 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4798 fontDescriptionRun03.familyDefined = true;
4799 fontDescriptionRun03.weightDefined = false;
4800 fontDescriptionRun03.widthDefined = false;
4801 fontDescriptionRun03.slantDefined = false;
4802 fontDescriptionRun03.sizeDefined = false;
4804 FontDescriptionRun fontDescriptionRun04;
4805 fontDescriptionRun04.characterRun.characterIndex = 36u;
4806 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4807 fontDescriptionRun04.familyLength = fontLatin.size();
4808 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4809 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4810 fontDescriptionRun04.familyDefined = true;
4811 fontDescriptionRun04.weightDefined = false;
4812 fontDescriptionRun04.widthDefined = false;
4813 fontDescriptionRun04.slantDefined = false;
4814 fontDescriptionRun04.sizeDefined = false;
4816 FontDescriptionRun fontDescriptionRun05;
4817 fontDescriptionRun05.characterRun.characterIndex = 48u;
4818 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4819 fontDescriptionRun05.familyLength = fontLatin.size();
4820 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4821 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4822 fontDescriptionRun05.familyDefined = true;
4823 fontDescriptionRun05.weightDefined = false;
4824 fontDescriptionRun05.widthDefined = false;
4825 fontDescriptionRun05.slantDefined = false;
4826 fontDescriptionRun05.sizeDefined = false;
4828 FontDescriptionRun fontDescriptionRun06;
4829 fontDescriptionRun06.characterRun.characterIndex = 60u;
4830 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4831 fontDescriptionRun06.familyLength = fontArabic.size();
4832 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4833 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4834 fontDescriptionRun06.familyDefined = true;
4835 fontDescriptionRun06.weightDefined = false;
4836 fontDescriptionRun06.widthDefined = false;
4837 fontDescriptionRun06.slantDefined = false;
4838 fontDescriptionRun06.sizeDefined = false;
4840 Vector<FontDescriptionRun> fontDescriptionRuns;
4841 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4842 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4843 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4844 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4845 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4846 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4848 float positions[] = { 20.f, 33.f, 0.f, 0.f, 0.f, 0.f };
4850 Size textArea( 100.f, 300.f );
4853 "End alignment for the first paragraph.",
4854 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4857 fontDescriptionRuns.Begin(),
4858 Layout::HORIZONTAL_ALIGN_END,
4859 Layout::VERTICAL_ALIGN_TOP,
4866 if( !AlignTest( data ) )
4868 tet_result(TET_FAIL);
4871 tet_result(TET_PASS);
4875 int UtcDaliTextAlign08(void)
4877 ToolkitTestApplication application;
4878 tet_infoline(" UtcDaliTextAlign08");
4880 // Calculate text alignment.
4882 const std::string fontLatin( "TizenSans" );
4883 const std::string fontHebrew( "TizenSansHebrew" );
4884 const std::string fontArabic( "TizenSansArabic" );
4886 // Set a known font description
4887 FontDescriptionRun fontDescriptionRun01;
4888 fontDescriptionRun01.characterRun.characterIndex = 0u;
4889 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4890 fontDescriptionRun01.familyLength = fontLatin.size();
4891 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4892 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
4893 fontDescriptionRun01.familyDefined = true;
4894 fontDescriptionRun01.weightDefined = false;
4895 fontDescriptionRun01.widthDefined = false;
4896 fontDescriptionRun01.slantDefined = false;
4897 fontDescriptionRun01.sizeDefined = false;
4899 FontDescriptionRun fontDescriptionRun02;
4900 fontDescriptionRun02.characterRun.characterIndex = 12u;
4901 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4902 fontDescriptionRun02.familyLength = fontHebrew.size();
4903 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4904 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
4905 fontDescriptionRun02.familyDefined = true;
4906 fontDescriptionRun02.weightDefined = false;
4907 fontDescriptionRun02.widthDefined = false;
4908 fontDescriptionRun02.slantDefined = false;
4909 fontDescriptionRun02.sizeDefined = false;
4911 FontDescriptionRun fontDescriptionRun03;
4912 fontDescriptionRun03.characterRun.characterIndex = 22u;
4913 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4914 fontDescriptionRun03.familyLength = fontArabic.size();
4915 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4916 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
4917 fontDescriptionRun03.familyDefined = true;
4918 fontDescriptionRun03.weightDefined = false;
4919 fontDescriptionRun03.widthDefined = false;
4920 fontDescriptionRun03.slantDefined = false;
4921 fontDescriptionRun03.sizeDefined = false;
4923 FontDescriptionRun fontDescriptionRun04;
4924 fontDescriptionRun04.characterRun.characterIndex = 36u;
4925 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4926 fontDescriptionRun04.familyLength = fontLatin.size();
4927 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4928 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
4929 fontDescriptionRun04.familyDefined = true;
4930 fontDescriptionRun04.weightDefined = false;
4931 fontDescriptionRun04.widthDefined = false;
4932 fontDescriptionRun04.slantDefined = false;
4933 fontDescriptionRun04.sizeDefined = false;
4935 FontDescriptionRun fontDescriptionRun05;
4936 fontDescriptionRun05.characterRun.characterIndex = 48u;
4937 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4938 fontDescriptionRun05.familyLength = fontLatin.size();
4939 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4940 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
4941 fontDescriptionRun05.familyDefined = true;
4942 fontDescriptionRun05.weightDefined = false;
4943 fontDescriptionRun05.widthDefined = false;
4944 fontDescriptionRun05.slantDefined = false;
4945 fontDescriptionRun05.sizeDefined = false;
4947 FontDescriptionRun fontDescriptionRun06;
4948 fontDescriptionRun06.characterRun.characterIndex = 60u;
4949 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4950 fontDescriptionRun06.familyLength = fontArabic.size();
4951 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4952 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
4953 fontDescriptionRun06.familyDefined = true;
4954 fontDescriptionRun06.weightDefined = false;
4955 fontDescriptionRun06.widthDefined = false;
4956 fontDescriptionRun06.slantDefined = false;
4957 fontDescriptionRun06.sizeDefined = false;
4959 Vector<FontDescriptionRun> fontDescriptionRuns;
4960 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
4961 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
4962 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
4963 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
4964 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
4965 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
4967 float positions[] = { 0.f, 0.f, -4.f, 0.f, 0.f, 0.f };
4969 Size textArea( 100.f, 300.f );
4972 "End alignment for the mid paragraph.",
4973 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4976 fontDescriptionRuns.Begin(),
4977 Layout::HORIZONTAL_ALIGN_END,
4978 Layout::VERTICAL_ALIGN_TOP,
4985 if( !AlignTest( data ) )
4987 tet_result(TET_FAIL);
4990 tet_result(TET_PASS);
4994 int UtcDaliTextAlign09(void)
4996 ToolkitTestApplication application;
4997 tet_infoline(" UtcDaliTextAlign09");
4999 // Calculate text alignment.
5001 const std::string fontLatin( "TizenSans" );
5002 const std::string fontHebrew( "TizenSansHebrew" );
5003 const std::string fontArabic( "TizenSansArabic" );
5005 // Set a known font description
5006 FontDescriptionRun fontDescriptionRun01;
5007 fontDescriptionRun01.characterRun.characterIndex = 0u;
5008 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5009 fontDescriptionRun01.familyLength = fontLatin.size();
5010 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5011 memcpy( fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength );
5012 fontDescriptionRun01.familyDefined = true;
5013 fontDescriptionRun01.weightDefined = false;
5014 fontDescriptionRun01.widthDefined = false;
5015 fontDescriptionRun01.slantDefined = false;
5016 fontDescriptionRun01.sizeDefined = false;
5018 FontDescriptionRun fontDescriptionRun02;
5019 fontDescriptionRun02.characterRun.characterIndex = 12u;
5020 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5021 fontDescriptionRun02.familyLength = fontHebrew.size();
5022 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5023 memcpy( fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength );
5024 fontDescriptionRun02.familyDefined = true;
5025 fontDescriptionRun02.weightDefined = false;
5026 fontDescriptionRun02.widthDefined = false;
5027 fontDescriptionRun02.slantDefined = false;
5028 fontDescriptionRun02.sizeDefined = false;
5030 FontDescriptionRun fontDescriptionRun03;
5031 fontDescriptionRun03.characterRun.characterIndex = 22u;
5032 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5033 fontDescriptionRun03.familyLength = fontArabic.size();
5034 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5035 memcpy( fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength );
5036 fontDescriptionRun03.familyDefined = true;
5037 fontDescriptionRun03.weightDefined = false;
5038 fontDescriptionRun03.widthDefined = false;
5039 fontDescriptionRun03.slantDefined = false;
5040 fontDescriptionRun03.sizeDefined = false;
5042 FontDescriptionRun fontDescriptionRun04;
5043 fontDescriptionRun04.characterRun.characterIndex = 36u;
5044 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5045 fontDescriptionRun04.familyLength = fontLatin.size();
5046 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5047 memcpy( fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength );
5048 fontDescriptionRun04.familyDefined = true;
5049 fontDescriptionRun04.weightDefined = false;
5050 fontDescriptionRun04.widthDefined = false;
5051 fontDescriptionRun04.slantDefined = false;
5052 fontDescriptionRun04.sizeDefined = false;
5054 FontDescriptionRun fontDescriptionRun05;
5055 fontDescriptionRun05.characterRun.characterIndex = 48u;
5056 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5057 fontDescriptionRun05.familyLength = fontLatin.size();
5058 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5059 memcpy( fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength );
5060 fontDescriptionRun05.familyDefined = true;
5061 fontDescriptionRun05.weightDefined = false;
5062 fontDescriptionRun05.widthDefined = false;
5063 fontDescriptionRun05.slantDefined = false;
5064 fontDescriptionRun05.sizeDefined = false;
5066 FontDescriptionRun fontDescriptionRun06;
5067 fontDescriptionRun06.characterRun.characterIndex = 60u;
5068 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5069 fontDescriptionRun06.familyLength = fontArabic.size();
5070 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5071 memcpy( fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength );
5072 fontDescriptionRun06.familyDefined = true;
5073 fontDescriptionRun06.weightDefined = false;
5074 fontDescriptionRun06.widthDefined = false;
5075 fontDescriptionRun06.slantDefined = false;
5076 fontDescriptionRun06.sizeDefined = false;
5078 Vector<FontDescriptionRun> fontDescriptionRuns;
5079 fontDescriptionRuns.PushBack( fontDescriptionRun01 );
5080 fontDescriptionRuns.PushBack( fontDescriptionRun02 );
5081 fontDescriptionRuns.PushBack( fontDescriptionRun03 );
5082 fontDescriptionRuns.PushBack( fontDescriptionRun04 );
5083 fontDescriptionRuns.PushBack( fontDescriptionRun05 );
5084 fontDescriptionRuns.PushBack( fontDescriptionRun06 );
5086 float positions[] = { 0.f, 0.f, 0.f, 0.f, 20.f, 40.f };
5088 Size textArea( 100.f, 300.f );
5091 "End alignment for the last paragraph.",
5092 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5095 fontDescriptionRuns.Begin(),
5096 Layout::HORIZONTAL_ALIGN_END,
5097 Layout::VERTICAL_ALIGN_TOP,
5104 if( !AlignTest( data ) )
5106 tet_result(TET_FAIL);
5109 tet_result(TET_PASS);
5113 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5115 ToolkitTestApplication application;
5116 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5118 Layout::Engine engine;
5119 DALI_TEST_EQUALS( 0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5121 engine.SetDefaultLineSpacing( 10.f );
5122 DALI_TEST_EQUALS( 10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
5124 tet_result(TET_PASS);