2 * Copyright (c) 2022 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-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali-toolkit/internal/text/layouts/layout-engine.h>
25 #include <dali-toolkit/internal/text/layouts/layout-parameters.h>
26 #include <dali-toolkit/internal/text/text-run-container.h>
27 #include <toolkit-text-utils.h>
30 using namespace Toolkit;
33 // Tests the LayoutEngine methods.
35 //////////////////////////////////////////////////////////
39 const std::string DEFAULT_FONT_DIR("/resources/fonts");
43 std::string description;
46 unsigned int numberOfFonts;
47 FontDescriptionRun* fontDescriptions;
49 unsigned int totalNumberOfGlyphs;
51 unsigned int numberOfLines;
53 Layout::Engine::Type layout;
54 unsigned int startIndex;
55 unsigned int numberOfGlyphs;
57 DevelText::EllipsisPosition::Type ellipsisPosition;
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 : " << floor(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");
87 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHindiRegular.ttf");
89 // 1) Create the model.
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.align = false;
104 CreateTextModel(data.text,
114 Toolkit::DevelText::EllipsisPosition::END,
116 0.0f // characterSpacing
119 LogicalModelPtr logicalModel = textModel->mLogicalModel;
120 VisualModelPtr visualModel = textModel->mVisualModel;
122 // 2) Clear the layout.
123 Vector<LineRun>& lines = visualModel->mLines;
125 const Length numberOfCharacters = logicalModel->mText.Count();
126 const bool isLastNewParagraph = (0u == numberOfCharacters) ? false : TextAbstraction::IsNewParagraph(*(logicalModel->mText.Begin() + (numberOfCharacters - 1u)));
127 const GlyphIndex lastGlyphIndex = data.startIndex + data.numberOfGlyphs - 1u;
128 const bool removeLastLine = isLastNewParagraph && (lastGlyphIndex + 1u == visualModel->mGlyphs.Count());
130 LineIndex startRemoveIndex = 0u;
132 if(0u != lines.Count())
134 startRemoveIndex = lines.Count();
135 LineIndex endRemoveIndex = startRemoveIndex;
136 ClearGlyphRuns(data.startIndex,
137 lastGlyphIndex + (removeLastLine ? 1u : 0u),
142 // Update the character runs of the lines.
143 const CharacterIndex* const glyphsToCharactersBuffer = visualModel->mGlyphsToCharacters.Begin();
144 const Length* const charactersPerGlyph = visualModel->mCharactersPerGlyph.Begin();
145 const CharacterIndex startCharacterIndex = *(glyphsToCharactersBuffer + data.startIndex);
146 const CharacterIndex lastCharacterIndex = *(glyphsToCharactersBuffer + lastGlyphIndex) + *(charactersPerGlyph + lastGlyphIndex) - 1u;
147 ClearCharacterRuns(startCharacterIndex,
148 lastCharacterIndex + (removeLastLine ? 1u : 0u),
153 lines.Erase(lines.Begin() + startRemoveIndex,
154 lines.Begin() + endRemoveIndex);
157 Vector<Vector2>& glyphPositions = visualModel->mGlyphPositions;
159 glyphPositions.Erase(glyphPositions.Begin() + data.startIndex,
160 glyphPositions.Begin() + data.startIndex + data.numberOfGlyphs);
163 Layout::Engine engine;
164 engine.SetMetrics(metrics);
165 engine.SetLayout(data.layout);
167 textModel->mHorizontalAlignment = Text::HorizontalAlignment::BEGIN;
168 textModel->mLineWrapMode = LineWrap::WORD;
169 textModel->mIgnoreSpacesAfterText = true;
170 Layout::Parameters layoutParameters(data.textArea,
173 layoutParameters.isLastNewParagraph = isLastNewParagraph;
175 // The initial glyph and the number of glyphs to layout.
176 layoutParameters.startGlyphIndex = data.startIndex;
177 layoutParameters.numberOfGlyphs = data.numberOfGlyphs;
178 layoutParameters.startLineIndex = startRemoveIndex;
179 layoutParameters.estimatedNumberOfLines = logicalModel->mParagraphInfo.Count();
181 layoutSize = Vector2::ZERO;
183 bool isAutoScroll = false;
184 bool isAutoScrollMaxTextureExceeded = false;
185 const bool updated = engine.LayoutText(layoutParameters,
189 isAutoScrollMaxTextureExceeded,
190 data.ellipsisPosition);
192 // 4) Compare the results.
194 if(updated != data.updated)
196 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
200 if(layoutSize != data.layoutSize)
202 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
206 for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index)
208 const Vector2& position = *(glyphPositions.Begin() + index);
210 if(fabsf(std::round(position.x) - *(data.positions + 2u * index)) > Math::MACHINE_EPSILON_1000)
212 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl;
215 if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000)
217 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl;
222 if(lines.Count() != data.numberOfLines)
224 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
228 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
230 const LineRun& line = *(lines.Begin() + index);
231 const LineRun& expectedLine = *(data.lines + index);
233 if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex)
235 std::cout << " Different line info for line : " << index << std::endl;
237 std::cout << " expected" << std::endl;
241 if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs)
243 std::cout << " Different line info for line : " << index << std::endl;
245 std::cout << " expected" << std::endl;
250 if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
252 std::cout << " Different line info for line : " << index << std::endl;
254 std::cout << " expected" << std::endl;
258 if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
260 std::cout << " Different line info for line : " << index << std::endl;
262 std::cout << " expected" << std::endl;
267 if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1)
269 std::cout << " Different line info for line : " << index << std::endl;
271 std::cout << " expected" << std::endl;
276 if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1)
278 std::cout << " Different line info for line : " << index << std::endl;
280 std::cout << " expected" << std::endl;
285 if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1)
287 std::cout << " Different line info for line : " << index << std::endl;
289 std::cout << " expected" << std::endl;
294 if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1)
296 std::cout << " Different line info for line : " << index << std::endl;
298 std::cout << " expected" << std::endl;
303 if(line.ellipsis != expectedLine.ellipsis)
305 std::cout << " Different line info for line : " << index << std::endl;
307 std::cout << " expected" << std::endl;
312 // Do not compare the alignment offset as it's not calculated in the layout.
313 // Do not compare the line direction as it's not set in the layout.
319 //////////////////////////////////////////////////////////
323 std::string description;
326 unsigned int numberOfFonts;
327 FontDescriptionRun* fontDescriptions;
328 Text::HorizontalAlignment::Type horizontalAlignment;
329 Text::VerticalAlignment::Type verticalAlignment;
330 unsigned int startIndex;
331 unsigned int numberOfCharacters;
332 unsigned int numberOfLines;
334 Dali::LayoutDirection::Type layoutDirection;
335 bool matchSystemLanguageDirection;
338 bool AlignTest(const AlignData& data)
341 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
342 fontClient.SetDpi(96u, 96u);
344 char* pathNamePtr = get_current_dir_name();
345 const std::string pathName(pathNamePtr);
348 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
349 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
350 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
352 // 1) Create the model.
357 Vector<FontDescriptionRun> fontDescriptionRuns;
358 if(0u != data.numberOfFonts)
360 fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
361 data.fontDescriptions,
362 data.fontDescriptions + data.numberOfFonts);
365 LayoutOptions options;
366 options.align = false;
367 CreateTextModel(data.text,
377 Toolkit::DevelText::EllipsisPosition::END,
379 0.0f // characterSpacing
382 LogicalModelPtr logicalModel = textModel->mLogicalModel;
383 VisualModelPtr visualModel = textModel->mVisualModel;
385 // Call the Align method.
386 Layout::Engine engine;
387 engine.SetMetrics(metrics);
389 float alignmentOffset = 0.f;
390 engine.Align(data.textArea,
392 data.numberOfCharacters,
393 data.horizontalAlignment,
396 data.layoutDirection,
397 data.matchSystemLanguageDirection);
400 if(data.numberOfLines != visualModel->mLines.Count())
402 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
406 const LineRun* const linesBuffer = visualModel->mLines.Begin();
407 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
409 const LineRun& line = *(linesBuffer + index);
411 if(line.alignmentOffset != *(data.lineOffsets + index))
413 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl;
422 //////////////////////////////////////////////////////////
424 // UtcDaliTextLayoutSetGetLayout
425 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
426 // UtcDaliTextLayoutSetGetHorizontalAlignment
427 // UtcDaliTextLayoutSetGetVerticalAlignment
428 // UtcDaliTextLayoutSetGetCursorWidth
429 // UtcDaliTextLayoutNoText
430 // UtcDaliTextLayoutSmallTextArea01
431 // UtcDaliTextLayoutSmallTextArea02
432 // UtcDaliTextLayoutMultilineText01
433 // UtcDaliTextLayoutMultilineText02
434 // UtcDaliTextLayoutMultilineText03
435 // UtcDaliTextLayoutMultilineText04
436 // UtcDaliTextLayoutMultilineText05
437 // UtcDaliTextLayoutMultilineText06
438 // UtcDaliTextUpdateLayout01
439 // UtcDaliTextUpdateLayout02
440 // UtcDaliTextUpdateLayout03
441 // UtcDaliTextLayoutEllipsis01
442 // UtcDaliTextLayoutEllipsis02
443 // UtcDaliTextLayoutEllipsis03
444 // UtcDaliTextLayoutEllipsis04
445 // UtcDaliTextLayoutEllipsis04
446 // UtcDaliTextReorderLayout01
447 // UtcDaliTextReorderLayout02
448 // UtcDaliTextReorderLayout03
449 // UtcDaliTextReorderLayout04
450 // UtcDaliTextAlign01
451 // UtcDaliTextAlign02
452 // UtcDaliTextAlign03
453 // UtcDaliTextAlign04
454 // UtcDaliTextAlign05
455 // UtcDaliTextAlign06
456 // UtcDaliTextAlign07
457 // UtcDaliTextAlign08
458 // UtcDaliTextAlign09
460 //////////////////////////////////////////////////////////
462 int UtcDaliTextLayoutSetGetLayout(void)
464 ToolkitTestApplication application;
465 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
467 Layout::Engine engine;
469 DALI_TEST_CHECK(Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout());
471 engine.SetLayout(Layout::Engine::MULTI_LINE_BOX);
472 DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout());
474 tet_result(TET_PASS);
478 int UtcDaliTextLayoutSetGetCursorWidth(void)
480 ToolkitTestApplication application;
483 Layout::Engine engine;
485 DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION);
487 engine.SetCursorWidth(2);
488 DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION);
490 tet_result(TET_PASS);
494 int UtcDaliTextLayoutNoText(void)
496 ToolkitTestApplication application;
497 tet_infoline(" UtcDaliTextLayoutNoText");
499 Size textArea(100.f, 60.f);
500 Size layoutSize = Vector2::ZERO;
501 LayoutTextData data =
513 Layout::Engine::MULTI_LINE_BOX,
517 DevelText::EllipsisPosition::END,
520 if(!LayoutTextTest(data))
522 tet_result(TET_FAIL);
525 tet_result(TET_PASS);
529 int UtcDaliTextLayoutSmallTextArea01(void)
531 ToolkitTestApplication application;
532 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
534 // Won't layout the text in multi-line if the width is too small.
536 const std::string fontFamily("TizenSans");
538 // Set a known font description
539 FontDescriptionRun fontDescriptionRun;
540 fontDescriptionRun.characterRun.characterIndex = 0u;
541 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
542 fontDescriptionRun.familyLength = fontFamily.size();
543 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
544 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
545 fontDescriptionRun.familyDefined = true;
546 fontDescriptionRun.weightDefined = false;
547 fontDescriptionRun.widthDefined = false;
548 fontDescriptionRun.slantDefined = false;
549 fontDescriptionRun.sizeDefined = false;
551 Vector<FontDescriptionRun> fontDescriptionRuns;
552 fontDescriptionRuns.PushBack(fontDescriptionRun);
553 Size textArea(1.f, 1.f);
554 Size layoutSize = Vector2::ZERO;
555 LayoutTextData data =
557 "Layout text in a small area",
561 fontDescriptionRuns.Begin(),
567 Layout::Engine::MULTI_LINE_BOX,
571 DevelText::EllipsisPosition::END,
574 if(!LayoutTextTest(data))
576 tet_result(TET_FAIL);
579 tet_result(TET_PASS);
583 int UtcDaliTextLayoutSmallTextArea02(void)
585 ToolkitTestApplication application;
586 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
588 // Will layout the text in single line as it can be scrolled.
590 const std::string fontFamily("TizenSans");
592 // Set a known font description
593 FontDescriptionRun fontDescriptionRun;
594 fontDescriptionRun.characterRun.characterIndex = 0u;
595 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
596 fontDescriptionRun.familyLength = fontFamily.size();
597 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
598 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
599 fontDescriptionRun.familyDefined = true;
600 fontDescriptionRun.weightDefined = false;
601 fontDescriptionRun.widthDefined = false;
602 fontDescriptionRun.slantDefined = false;
603 fontDescriptionRun.sizeDefined = false;
605 Vector<FontDescriptionRun> fontDescriptionRuns;
606 fontDescriptionRuns.PushBack(fontDescriptionRun);
607 Size textArea(1.f, 1.f);
608 Size layoutSize(81.f, 20.f);
609 float positions[] = {0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f};
610 struct LineRun line =
622 Vector<LineRun> lines;
623 lines.PushBack(line);
625 LayoutTextData data =
627 "Layout text in a small area",
631 fontDescriptionRuns.Begin(),
637 Layout::Engine::SINGLE_LINE_BOX,
641 DevelText::EllipsisPosition::END,
644 if(!LayoutTextTest(data))
646 tet_result(TET_FAIL);
649 tet_result(TET_PASS);
653 int UtcDaliTextLayoutMultilineText01(void)
655 ToolkitTestApplication application;
656 tet_infoline(" UtcDaliTextLayoutMultilineText01");
658 // Layout some lines of left to right text.
660 const std::string fontFamily("TizenSans");
662 // Set a known font description
663 FontDescriptionRun fontDescriptionRun1;
664 fontDescriptionRun1.characterRun.characterIndex = 0u;
665 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
666 fontDescriptionRun1.familyLength = fontFamily.size();
667 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
668 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
669 fontDescriptionRun1.familyDefined = true;
670 fontDescriptionRun1.weightDefined = false;
671 fontDescriptionRun1.widthDefined = false;
672 fontDescriptionRun1.slantDefined = false;
673 fontDescriptionRun1.sizeDefined = false;
675 FontDescriptionRun fontDescriptionRun2;
676 fontDescriptionRun2.characterRun.characterIndex = 18u;
677 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
678 fontDescriptionRun2.familyLength = fontFamily.size();
679 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
680 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
681 fontDescriptionRun2.familyDefined = true;
682 fontDescriptionRun2.weightDefined = false;
683 fontDescriptionRun2.widthDefined = false;
684 fontDescriptionRun2.slantDefined = false;
685 fontDescriptionRun2.sizeDefined = false;
687 Vector<FontDescriptionRun> fontDescriptionRuns;
688 fontDescriptionRuns.PushBack(fontDescriptionRun1);
689 fontDescriptionRuns.PushBack(fontDescriptionRun2);
690 Size textArea(100.f, 300.f);
691 Size layoutSize(98.f, 97.f);
694 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f, 0.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, 0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.f, -9.f, 42.f, -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f, 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 36.f, -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f, -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f};
695 struct LineRun line0 =
707 struct LineRun line1 =
719 struct LineRun line2 =
731 struct LineRun line3 =
743 struct LineRun line4 =
755 Vector<LineRun> lines;
756 lines.PushBack(line0);
757 lines.PushBack(line1);
758 lines.PushBack(line2);
759 lines.PushBack(line3);
760 lines.PushBack(line4);
762 LayoutTextData data =
764 "Layout simple multi-line text",
765 "Hello world demo.\n"
766 "Layout different lines of text.",
769 fontDescriptionRuns.Begin(),
775 Layout::Engine::MULTI_LINE_BOX,
779 DevelText::EllipsisPosition::END,
782 if(!LayoutTextTest(data))
784 tet_result(TET_FAIL);
787 tet_result(TET_PASS);
791 int UtcDaliTextLayoutMultilineText02(void)
793 ToolkitTestApplication application;
794 tet_infoline(" UtcDaliTextLayoutMultilineText02");
796 // Layout some lines of bidirectional text.
798 const std::string fontFamily1("TizenSans");
800 // Set a known font description
801 FontDescriptionRun fontDescriptionRun1;
802 fontDescriptionRun1.characterRun.characterIndex = 0u;
803 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
804 fontDescriptionRun1.familyLength = fontFamily1.size();
805 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
806 memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength);
807 fontDescriptionRun1.familyDefined = true;
808 fontDescriptionRun1.weightDefined = false;
809 fontDescriptionRun1.widthDefined = false;
810 fontDescriptionRun1.slantDefined = false;
811 fontDescriptionRun1.sizeDefined = false;
813 const std::string fontFamily2("TizenSansHebrew");
815 // Set a known font description
816 FontDescriptionRun fontDescriptionRun2;
817 fontDescriptionRun2.characterRun.characterIndex = 17u;
818 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
819 fontDescriptionRun2.familyLength = fontFamily2.size();
820 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
821 memcpy(fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength);
822 fontDescriptionRun2.familyDefined = true;
823 fontDescriptionRun2.weightDefined = false;
824 fontDescriptionRun2.widthDefined = false;
825 fontDescriptionRun2.slantDefined = false;
826 fontDescriptionRun2.sizeDefined = false;
828 const std::string fontFamily3("TizenSans");
830 // Set a known font description
831 FontDescriptionRun fontDescriptionRun3;
832 fontDescriptionRun3.characterRun.characterIndex = 26u;
833 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
834 fontDescriptionRun3.familyLength = fontFamily3.size();
835 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
836 memcpy(fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength);
837 fontDescriptionRun3.familyDefined = true;
838 fontDescriptionRun3.weightDefined = false;
839 fontDescriptionRun3.widthDefined = false;
840 fontDescriptionRun3.slantDefined = false;
841 fontDescriptionRun3.sizeDefined = false;
843 const std::string fontFamily4("TizenSansHebrew");
845 // Set a known font description
846 FontDescriptionRun fontDescriptionRun4;
847 fontDescriptionRun4.characterRun.characterIndex = 28u;
848 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
849 fontDescriptionRun4.familyLength = fontFamily4.size();
850 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
851 memcpy(fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength);
852 fontDescriptionRun4.familyDefined = true;
853 fontDescriptionRun4.weightDefined = false;
854 fontDescriptionRun4.widthDefined = false;
855 fontDescriptionRun4.slantDefined = false;
856 fontDescriptionRun4.sizeDefined = false;
858 const std::string fontFamily5("TizenSans");
860 // Set a known font description
861 FontDescriptionRun fontDescriptionRun5;
862 fontDescriptionRun5.characterRun.characterIndex = 38u;
863 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
864 fontDescriptionRun5.familyLength = fontFamily5.size();
865 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
866 memcpy(fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength);
867 fontDescriptionRun5.familyDefined = true;
868 fontDescriptionRun5.weightDefined = false;
869 fontDescriptionRun5.widthDefined = false;
870 fontDescriptionRun5.slantDefined = false;
871 fontDescriptionRun5.sizeDefined = false;
873 Vector<FontDescriptionRun> fontDescriptionRuns;
874 fontDescriptionRuns.PushBack(fontDescriptionRun1);
875 fontDescriptionRuns.PushBack(fontDescriptionRun2);
876 fontDescriptionRuns.PushBack(fontDescriptionRun3);
877 fontDescriptionRuns.PushBack(fontDescriptionRun4);
878 fontDescriptionRuns.PushBack(fontDescriptionRun5);
879 Size textArea(100.f, 300.f);
880 Size layoutSize(81.f, 120.f);
883 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
971 struct LineRun line0 =
983 struct LineRun line1 =
995 struct LineRun line2 =
1007 struct LineRun line3 =
1019 struct LineRun line4 =
1031 struct LineRun line5 =
1043 Vector<LineRun> lines;
1044 lines.PushBack(line0);
1045 lines.PushBack(line1);
1046 lines.PushBack(line2);
1047 lines.PushBack(line3);
1048 lines.PushBack(line4);
1049 lines.PushBack(line5);
1051 LayoutTextData data =
1053 "Layout bidirectional text.",
1054 "Hello world demo שלום עולם.\n"
1055 "שלום עולם hello world demo.",
1058 fontDescriptionRuns.Begin(),
1064 Layout::Engine::MULTI_LINE_BOX,
1068 DevelText::EllipsisPosition::END,
1071 if(!LayoutTextTest(data))
1073 tet_result(TET_FAIL);
1076 tet_result(TET_PASS);
1080 int UtcDaliTextLayoutMultilineText03(void)
1082 ToolkitTestApplication application;
1083 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1085 // Layout a long word which doesn't fit in the width of the text area.
1087 const std::string fontFamily("TizenSans");
1089 // Set a known font description
1090 FontDescriptionRun fontDescriptionRun;
1091 fontDescriptionRun.characterRun.characterIndex = 0u;
1092 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1093 fontDescriptionRun.familyLength = fontFamily.size();
1094 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1095 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1096 fontDescriptionRun.familyDefined = true;
1097 fontDescriptionRun.weightDefined = false;
1098 fontDescriptionRun.widthDefined = false;
1099 fontDescriptionRun.slantDefined = false;
1100 fontDescriptionRun.sizeDefined = false;
1102 Vector<FontDescriptionRun> fontDescriptionRuns;
1103 fontDescriptionRuns.PushBack(fontDescriptionRun);
1104 Size textArea(100.f, 300.f);
1105 Size layoutSize(98.f, 60.f);
1167 struct LineRun line0 =
1179 struct LineRun line1 =
1191 struct LineRun line2 =
1203 Vector<LineRun> lines;
1204 lines.PushBack(line0);
1205 lines.PushBack(line1);
1206 lines.PushBack(line2);
1208 LayoutTextData data =
1210 "Layout a long word which doesn't fit in the width of the text area.",
1211 "Helloworlddemohelloworlddemo.",
1214 fontDescriptionRuns.Begin(),
1220 Layout::Engine::MULTI_LINE_BOX,
1224 DevelText::EllipsisPosition::END,
1227 if(!LayoutTextTest(data))
1229 tet_result(TET_FAIL);
1232 tet_result(TET_PASS);
1236 int UtcDaliTextLayoutMultilineText04(void)
1238 ToolkitTestApplication application;
1239 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1241 // Layout simple text ending with a \n. It has to add a void line at the end.
1243 const std::string fontFamily("TizenSans");
1245 // Set a known font description
1246 FontDescriptionRun fontDescriptionRun;
1247 fontDescriptionRun.characterRun.characterIndex = 0u;
1248 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1249 fontDescriptionRun.familyLength = fontFamily.size();
1250 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1251 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1252 fontDescriptionRun.familyDefined = true;
1253 fontDescriptionRun.weightDefined = false;
1254 fontDescriptionRun.widthDefined = false;
1255 fontDescriptionRun.slantDefined = false;
1256 fontDescriptionRun.sizeDefined = false;
1258 Vector<FontDescriptionRun> fontDescriptionRuns;
1259 fontDescriptionRuns.PushBack(fontDescriptionRun);
1260 Size textArea(100.f, 300.f);
1261 Size layoutSize(84.f, 40.f);
1264 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f};
1265 struct LineRun line0 =
1276 struct LineRun line1 =
1288 Vector<LineRun> lines;
1289 lines.PushBack(line0);
1290 lines.PushBack(line1);
1292 LayoutTextData data =
1294 "Layout simple text ending with a \n.",
1298 fontDescriptionRuns.Begin(),
1304 Layout::Engine::MULTI_LINE_BOX,
1308 DevelText::EllipsisPosition::END,
1311 if(!LayoutTextTest(data))
1313 tet_result(TET_FAIL);
1316 tet_result(TET_PASS);
1320 int UtcDaliTextLayoutMultilineText05(void)
1322 ToolkitTestApplication application;
1323 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1325 // Layout simple text with one character with a different font size.
1327 const std::string fontFamily("TizenSans");
1329 // Set a known font description
1330 FontDescriptionRun fontDescriptionRun1;
1331 fontDescriptionRun1.characterRun.characterIndex = 0u;
1332 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1333 fontDescriptionRun1.familyLength = fontFamily.size();
1334 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1335 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
1336 fontDescriptionRun1.familyDefined = true;
1337 fontDescriptionRun1.weightDefined = false;
1338 fontDescriptionRun1.widthDefined = false;
1339 fontDescriptionRun1.slantDefined = false;
1340 fontDescriptionRun1.sizeDefined = false;
1342 FontDescriptionRun fontDescriptionRun2;
1343 fontDescriptionRun2.characterRun.characterIndex = 6u;
1344 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1345 fontDescriptionRun2.familyLength = fontFamily.size();
1346 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1347 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
1348 fontDescriptionRun2.size = 1280u;
1349 fontDescriptionRun2.familyDefined = true;
1350 fontDescriptionRun2.weightDefined = false;
1351 fontDescriptionRun2.widthDefined = false;
1352 fontDescriptionRun2.slantDefined = false;
1353 fontDescriptionRun2.sizeDefined = true;
1355 FontDescriptionRun fontDescriptionRun3;
1356 fontDescriptionRun3.characterRun.characterIndex = 7u;
1357 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1358 fontDescriptionRun3.familyLength = fontFamily.size();
1359 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1360 memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength);
1361 fontDescriptionRun3.familyDefined = true;
1362 fontDescriptionRun3.weightDefined = false;
1363 fontDescriptionRun3.widthDefined = false;
1364 fontDescriptionRun3.slantDefined = false;
1365 fontDescriptionRun3.sizeDefined = false;
1367 Vector<FontDescriptionRun> fontDescriptionRuns;
1368 fontDescriptionRuns.PushBack(fontDescriptionRun1);
1369 fontDescriptionRuns.PushBack(fontDescriptionRun2);
1370 fontDescriptionRuns.PushBack(fontDescriptionRun3);
1371 Size textArea(100.f, 300.f);
1372 Size layoutSize(89.f, 53.f);
1375 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f};
1376 struct LineRun line0 =
1388 struct LineRun line1 =
1400 Vector<LineRun> lines;
1401 lines.PushBack(line0);
1402 lines.PushBack(line1);
1404 LayoutTextData data =
1406 "Layout simple text with one character with a different font size.",
1407 "Hello world demo.",
1410 fontDescriptionRuns.Begin(),
1416 Layout::Engine::MULTI_LINE_BOX,
1420 DevelText::EllipsisPosition::END,
1423 if(!LayoutTextTest(data))
1425 tet_result(TET_FAIL);
1428 tet_result(TET_PASS);
1432 int UtcDaliTextLayoutMultilineText06(void)
1434 ToolkitTestApplication application;
1435 tet_infoline(" UtcDaliTextLayoutMultilineText06");
1437 const std::string fontFamily("TizenSansHebrew");
1439 // Set a known font description
1440 FontDescriptionRun fontDescriptionRun;
1441 fontDescriptionRun.characterRun.characterIndex = 0u;
1442 fontDescriptionRun.characterRun.numberOfCharacters = 10u;
1443 fontDescriptionRun.familyLength = fontFamily.size();
1444 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1445 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1446 fontDescriptionRun.familyDefined = true;
1447 fontDescriptionRun.weightDefined = false;
1448 fontDescriptionRun.widthDefined = false;
1449 fontDescriptionRun.slantDefined = false;
1450 fontDescriptionRun.sizeDefined = false;
1452 Vector<FontDescriptionRun> fontDescriptionRuns;
1453 fontDescriptionRuns.PushBack(fontDescriptionRun);
1455 Size textArea(64.f, 100.f);
1456 Size layoutSize(34.f, 40.f);
1459 27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f, 22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f};
1460 struct LineRun line0 =
1472 struct LineRun line1 =
1484 Vector<LineRun> lines;
1485 lines.PushBack(line0);
1486 lines.PushBack(line1);
1488 LayoutTextData data =
1490 "Layout right to left text that doesn't fit in the text area after reordering.",
1491 "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
1494 fontDescriptionRuns.Begin(),
1500 Layout::Engine::MULTI_LINE_BOX,
1504 DevelText::EllipsisPosition::END,
1507 if(!LayoutTextTest(data))
1509 tet_result(TET_FAIL);
1512 tet_result(TET_PASS);
1516 int UtcDaliTextLayoutMultilineText07(void)
1518 ToolkitTestApplication application;
1519 tet_infoline(" UtcDaliTextLayoutMultilineText07");
1521 const std::string fontFamily("TizenSansHebrew");
1523 // Set a known font description
1524 FontDescriptionRun fontDescriptionRun;
1525 fontDescriptionRun.characterRun.characterIndex = 0u;
1526 fontDescriptionRun.characterRun.numberOfCharacters = 9u;
1527 fontDescriptionRun.familyLength = fontFamily.size();
1528 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1529 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1530 fontDescriptionRun.familyDefined = true;
1531 fontDescriptionRun.weightDefined = false;
1532 fontDescriptionRun.widthDefined = false;
1533 fontDescriptionRun.slantDefined = false;
1534 fontDescriptionRun.sizeDefined = false;
1536 Vector<FontDescriptionRun> fontDescriptionRuns;
1537 fontDescriptionRuns.PushBack(fontDescriptionRun);
1539 Size textArea(26.f, 100.f);
1540 Size layoutSize(24.f, 60.f);
1543 10.f, -10.f, 4.f, -10.f, 0.f, -10.f, 13.f, -10.f, 9.f, -10.f, 0.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -10.f};
1544 struct LineRun line0 =
1556 struct LineRun line1 =
1568 struct LineRun line2 =
1580 Vector<LineRun> lines;
1581 lines.PushBack(line0);
1582 lines.PushBack(line1);
1583 lines.PushBack(line2);
1585 LayoutTextData data =
1587 "Layout a single word of right to left text that doesn't fit in one single line. When layouting ltr a piece of word fits in the line but it doesn't after reordering.",
1588 "שנורולכאן", // If a piece of this text is laid-out ltr the width is 26. When reordered, the length is 27. This might cause alignment issues.
1591 fontDescriptionRuns.Begin(),
1597 Layout::Engine::MULTI_LINE_BOX,
1601 DevelText::EllipsisPosition::END,
1604 if(!LayoutTextTest(data))
1606 tet_result(TET_FAIL);
1609 tet_result(TET_PASS);
1613 int UtcDaliTextUpdateLayout01(void)
1615 ToolkitTestApplication application;
1616 tet_infoline(" UtcDaliTextUpdateLayout01");
1618 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1620 const std::string fontLatin("TizenSans");
1621 const std::string fontHebrew("TizenSansHebrew");
1622 const std::string fontArabic("TizenSansArabic");
1624 // Set a known font description
1625 FontDescriptionRun fontDescriptionRun01;
1626 fontDescriptionRun01.characterRun.characterIndex = 0u;
1627 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1628 fontDescriptionRun01.familyLength = fontLatin.size();
1629 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1630 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
1631 fontDescriptionRun01.familyDefined = true;
1632 fontDescriptionRun01.weightDefined = false;
1633 fontDescriptionRun01.widthDefined = false;
1634 fontDescriptionRun01.slantDefined = false;
1635 fontDescriptionRun01.sizeDefined = false;
1637 // Set a known font description
1638 FontDescriptionRun fontDescriptionRun02;
1639 fontDescriptionRun02.characterRun.characterIndex = 17u;
1640 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1641 fontDescriptionRun02.familyLength = fontHebrew.size();
1642 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1643 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
1644 fontDescriptionRun02.familyDefined = true;
1645 fontDescriptionRun02.weightDefined = false;
1646 fontDescriptionRun02.widthDefined = false;
1647 fontDescriptionRun02.slantDefined = false;
1648 fontDescriptionRun02.sizeDefined = false;
1650 // Set a known font description
1651 FontDescriptionRun fontDescriptionRun03;
1652 fontDescriptionRun03.characterRun.characterIndex = 26u;
1653 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1654 fontDescriptionRun03.familyLength = fontLatin.size();
1655 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1656 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
1657 fontDescriptionRun03.familyDefined = true;
1658 fontDescriptionRun03.weightDefined = false;
1659 fontDescriptionRun03.widthDefined = false;
1660 fontDescriptionRun03.slantDefined = false;
1661 fontDescriptionRun03.sizeDefined = false;
1663 // Set a known font description
1664 FontDescriptionRun fontDescriptionRun04;
1665 fontDescriptionRun04.characterRun.characterIndex = 28u;
1666 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1667 fontDescriptionRun04.familyLength = fontArabic.size();
1668 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1669 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
1670 fontDescriptionRun04.familyDefined = true;
1671 fontDescriptionRun04.weightDefined = false;
1672 fontDescriptionRun04.widthDefined = false;
1673 fontDescriptionRun04.slantDefined = false;
1674 fontDescriptionRun04.sizeDefined = false;
1676 // Set a known font description
1677 FontDescriptionRun fontDescriptionRun05;
1678 fontDescriptionRun05.characterRun.characterIndex = 42u;
1679 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1680 fontDescriptionRun05.familyLength = fontLatin.size();
1681 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1682 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
1683 fontDescriptionRun05.familyDefined = true;
1684 fontDescriptionRun05.weightDefined = false;
1685 fontDescriptionRun05.widthDefined = false;
1686 fontDescriptionRun05.slantDefined = false;
1687 fontDescriptionRun05.sizeDefined = false;
1689 // Set a known font description
1690 FontDescriptionRun fontDescriptionRun06;
1691 fontDescriptionRun06.characterRun.characterIndex = 54u;
1692 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1693 fontDescriptionRun06.familyLength = fontHebrew.size();
1694 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1695 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
1696 fontDescriptionRun06.familyDefined = true;
1697 fontDescriptionRun06.weightDefined = false;
1698 fontDescriptionRun06.widthDefined = false;
1699 fontDescriptionRun06.slantDefined = false;
1700 fontDescriptionRun06.sizeDefined = false;
1702 // Set a known font description
1703 FontDescriptionRun fontDescriptionRun07;
1704 fontDescriptionRun07.characterRun.characterIndex = 64u;
1705 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1706 fontDescriptionRun07.familyLength = fontHebrew.size();
1707 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1708 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
1709 fontDescriptionRun07.familyDefined = true;
1710 fontDescriptionRun07.weightDefined = false;
1711 fontDescriptionRun07.widthDefined = false;
1712 fontDescriptionRun07.slantDefined = false;
1713 fontDescriptionRun07.sizeDefined = false;
1715 // Set a known font description
1716 FontDescriptionRun fontDescriptionRun08;
1717 fontDescriptionRun08.characterRun.characterIndex = 74u;
1718 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1719 fontDescriptionRun08.familyLength = fontLatin.size();
1720 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1721 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
1722 fontDescriptionRun08.familyDefined = true;
1723 fontDescriptionRun08.weightDefined = false;
1724 fontDescriptionRun08.widthDefined = false;
1725 fontDescriptionRun08.slantDefined = false;
1726 fontDescriptionRun08.sizeDefined = false;
1728 // Set a known font description
1729 FontDescriptionRun fontDescriptionRun09;
1730 fontDescriptionRun09.characterRun.characterIndex = 92u;
1731 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1732 fontDescriptionRun09.familyLength = fontLatin.size();
1733 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1734 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
1735 fontDescriptionRun09.familyDefined = true;
1736 fontDescriptionRun09.weightDefined = false;
1737 fontDescriptionRun09.widthDefined = false;
1738 fontDescriptionRun09.slantDefined = false;
1739 fontDescriptionRun09.sizeDefined = false;
1741 // Set a known font description
1742 FontDescriptionRun fontDescriptionRun10;
1743 fontDescriptionRun10.characterRun.characterIndex = 104u;
1744 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1745 fontDescriptionRun10.familyLength = fontArabic.size();
1746 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1747 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
1748 fontDescriptionRun10.familyDefined = true;
1749 fontDescriptionRun10.weightDefined = false;
1750 fontDescriptionRun10.widthDefined = false;
1751 fontDescriptionRun10.slantDefined = false;
1752 fontDescriptionRun10.sizeDefined = false;
1754 // Set a known font description
1755 FontDescriptionRun fontDescriptionRun11;
1756 fontDescriptionRun11.characterRun.characterIndex = 118u;
1757 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1758 fontDescriptionRun11.familyLength = fontHebrew.size();
1759 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1760 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
1761 fontDescriptionRun11.familyDefined = true;
1762 fontDescriptionRun11.weightDefined = false;
1763 fontDescriptionRun11.widthDefined = false;
1764 fontDescriptionRun11.slantDefined = false;
1765 fontDescriptionRun11.sizeDefined = false;
1767 // Set a known font description
1768 FontDescriptionRun fontDescriptionRun12;
1769 fontDescriptionRun12.characterRun.characterIndex = 128u;
1770 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1771 fontDescriptionRun12.familyLength = fontLatin.size();
1772 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1773 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
1774 fontDescriptionRun12.familyDefined = true;
1775 fontDescriptionRun12.weightDefined = false;
1776 fontDescriptionRun12.widthDefined = false;
1777 fontDescriptionRun12.slantDefined = false;
1778 fontDescriptionRun12.sizeDefined = false;
1780 // Set a known font description
1781 FontDescriptionRun fontDescriptionRun13;
1782 fontDescriptionRun13.characterRun.characterIndex = 145u;
1783 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1784 fontDescriptionRun13.familyLength = fontHebrew.size();
1785 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1786 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
1787 fontDescriptionRun13.familyDefined = true;
1788 fontDescriptionRun13.weightDefined = false;
1789 fontDescriptionRun13.widthDefined = false;
1790 fontDescriptionRun13.slantDefined = false;
1791 fontDescriptionRun13.sizeDefined = false;
1793 // Set a known font description
1794 FontDescriptionRun fontDescriptionRun14;
1795 fontDescriptionRun14.characterRun.characterIndex = 154u;
1796 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1797 fontDescriptionRun14.familyLength = fontLatin.size();
1798 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1799 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
1800 fontDescriptionRun14.familyDefined = true;
1801 fontDescriptionRun14.weightDefined = false;
1802 fontDescriptionRun14.widthDefined = false;
1803 fontDescriptionRun14.slantDefined = false;
1804 fontDescriptionRun14.sizeDefined = false;
1806 // Set a known font description
1807 FontDescriptionRun fontDescriptionRun15;
1808 fontDescriptionRun15.characterRun.characterIndex = 156u;
1809 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1810 fontDescriptionRun15.familyLength = fontHebrew.size();
1811 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1812 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
1813 fontDescriptionRun15.familyDefined = true;
1814 fontDescriptionRun15.weightDefined = false;
1815 fontDescriptionRun15.widthDefined = false;
1816 fontDescriptionRun15.slantDefined = false;
1817 fontDescriptionRun15.sizeDefined = false;
1819 // Set a known font description
1820 FontDescriptionRun fontDescriptionRun16;
1821 fontDescriptionRun16.characterRun.characterIndex = 166u;
1822 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1823 fontDescriptionRun16.familyLength = fontLatin.size();
1824 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1825 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
1826 fontDescriptionRun16.familyDefined = true;
1827 fontDescriptionRun16.weightDefined = false;
1828 fontDescriptionRun16.widthDefined = false;
1829 fontDescriptionRun16.slantDefined = false;
1830 fontDescriptionRun16.sizeDefined = false;
1832 // Set a known font description
1833 FontDescriptionRun fontDescriptionRun17;
1834 fontDescriptionRun17.characterRun.characterIndex = 178u;
1835 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1836 fontDescriptionRun17.familyLength = fontArabic.size();
1837 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1838 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
1839 fontDescriptionRun17.familyDefined = true;
1840 fontDescriptionRun17.weightDefined = false;
1841 fontDescriptionRun17.widthDefined = false;
1842 fontDescriptionRun17.slantDefined = false;
1843 fontDescriptionRun17.sizeDefined = false;
1845 Vector<FontDescriptionRun> fontDescriptionRuns;
1846 fontDescriptionRuns.PushBack(fontDescriptionRun01);
1847 fontDescriptionRuns.PushBack(fontDescriptionRun02);
1848 fontDescriptionRuns.PushBack(fontDescriptionRun03);
1849 fontDescriptionRuns.PushBack(fontDescriptionRun04);
1850 fontDescriptionRuns.PushBack(fontDescriptionRun05);
1851 fontDescriptionRuns.PushBack(fontDescriptionRun06);
1852 fontDescriptionRuns.PushBack(fontDescriptionRun07);
1853 fontDescriptionRuns.PushBack(fontDescriptionRun08);
1854 fontDescriptionRuns.PushBack(fontDescriptionRun09);
1855 fontDescriptionRuns.PushBack(fontDescriptionRun10);
1856 fontDescriptionRuns.PushBack(fontDescriptionRun11);
1857 fontDescriptionRuns.PushBack(fontDescriptionRun12);
1858 fontDescriptionRuns.PushBack(fontDescriptionRun13);
1859 fontDescriptionRuns.PushBack(fontDescriptionRun14);
1860 fontDescriptionRuns.PushBack(fontDescriptionRun15);
1861 fontDescriptionRuns.PushBack(fontDescriptionRun16);
1862 fontDescriptionRuns.PushBack(fontDescriptionRun17);
1863 Size textArea(100.f, 300.f);
1864 Size layoutSize(100.f, 380.f);
1867 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
2155 -12.f, // 150 .. 155
2230 struct LineRun line01 =
2242 struct LineRun line02 =
2254 struct LineRun line03 =
2266 struct LineRun line04 =
2278 struct LineRun line05 =
2290 struct LineRun line06 =
2302 struct LineRun line07 =
2314 struct LineRun line08 =
2326 struct LineRun line09 =
2338 struct LineRun line10 =
2350 struct LineRun line11 =
2362 struct LineRun line12 =
2374 struct LineRun line13 =
2386 struct LineRun line14 =
2398 struct LineRun line15 =
2410 struct LineRun line16 =
2422 struct LineRun line17 =
2434 struct LineRun line18 =
2446 struct LineRun line19 =
2458 Vector<LineRun> lines;
2459 lines.PushBack(line01);
2460 lines.PushBack(line02);
2461 lines.PushBack(line03);
2462 lines.PushBack(line04);
2463 lines.PushBack(line05);
2464 lines.PushBack(line06);
2465 lines.PushBack(line07);
2466 lines.PushBack(line08);
2467 lines.PushBack(line09);
2468 lines.PushBack(line10);
2469 lines.PushBack(line11);
2470 lines.PushBack(line12);
2471 lines.PushBack(line13);
2472 lines.PushBack(line14);
2473 lines.PushBack(line15);
2474 lines.PushBack(line16);
2475 lines.PushBack(line17);
2476 lines.PushBack(line18);
2477 lines.PushBack(line19);
2479 LayoutTextData data =
2481 "Layout bidirectional text.",
2482 "Hello world demo שלום עולם.\n"
2483 "مرحبا بالعالم hello world שלום עולם\n"
2484 "שלום עולם hello world demo.\n"
2485 "hello world مرحبا بالعالم שלום עולם\n"
2486 "Hello world demo שלום עולם.\n"
2487 "שלום עולם hello world مرحبا بالعالم\n",
2490 fontDescriptionRuns.Begin(),
2496 Layout::Engine::MULTI_LINE_BOX,
2500 DevelText::EllipsisPosition::END,
2503 if(!LayoutTextTest(data))
2505 tet_result(TET_FAIL);
2508 tet_result(TET_PASS);
2512 int UtcDaliTextUpdateLayout02(void)
2514 ToolkitTestApplication application;
2515 tet_infoline(" UtcDaliTextUpdateLayout02");
2517 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2519 const std::string fontLatin("TizenSans");
2520 const std::string fontHebrew("TizenSansHebrew");
2521 const std::string fontArabic("TizenSansArabic");
2523 // Set a known font description
2524 FontDescriptionRun fontDescriptionRun01;
2525 fontDescriptionRun01.characterRun.characterIndex = 0u;
2526 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2527 fontDescriptionRun01.familyLength = fontLatin.size();
2528 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2529 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
2530 fontDescriptionRun01.familyDefined = true;
2531 fontDescriptionRun01.weightDefined = false;
2532 fontDescriptionRun01.widthDefined = false;
2533 fontDescriptionRun01.slantDefined = false;
2534 fontDescriptionRun01.sizeDefined = false;
2536 // Set a known font description
2537 FontDescriptionRun fontDescriptionRun02;
2538 fontDescriptionRun02.characterRun.characterIndex = 17u;
2539 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2540 fontDescriptionRun02.familyLength = fontHebrew.size();
2541 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2542 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
2543 fontDescriptionRun02.familyDefined = true;
2544 fontDescriptionRun02.weightDefined = false;
2545 fontDescriptionRun02.widthDefined = false;
2546 fontDescriptionRun02.slantDefined = false;
2547 fontDescriptionRun02.sizeDefined = false;
2549 // Set a known font description
2550 FontDescriptionRun fontDescriptionRun03;
2551 fontDescriptionRun03.characterRun.characterIndex = 26u;
2552 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2553 fontDescriptionRun03.familyLength = fontLatin.size();
2554 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2555 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
2556 fontDescriptionRun03.familyDefined = true;
2557 fontDescriptionRun03.weightDefined = false;
2558 fontDescriptionRun03.widthDefined = false;
2559 fontDescriptionRun03.slantDefined = false;
2560 fontDescriptionRun03.sizeDefined = false;
2562 // Set a known font description
2563 FontDescriptionRun fontDescriptionRun04;
2564 fontDescriptionRun04.characterRun.characterIndex = 28u;
2565 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2566 fontDescriptionRun04.familyLength = fontArabic.size();
2567 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2568 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
2569 fontDescriptionRun04.familyDefined = true;
2570 fontDescriptionRun04.weightDefined = false;
2571 fontDescriptionRun04.widthDefined = false;
2572 fontDescriptionRun04.slantDefined = false;
2573 fontDescriptionRun04.sizeDefined = false;
2575 // Set a known font description
2576 FontDescriptionRun fontDescriptionRun05;
2577 fontDescriptionRun05.characterRun.characterIndex = 42u;
2578 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2579 fontDescriptionRun05.familyLength = fontLatin.size();
2580 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2581 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
2582 fontDescriptionRun05.familyDefined = true;
2583 fontDescriptionRun05.weightDefined = false;
2584 fontDescriptionRun05.widthDefined = false;
2585 fontDescriptionRun05.slantDefined = false;
2586 fontDescriptionRun05.sizeDefined = false;
2588 // Set a known font description
2589 FontDescriptionRun fontDescriptionRun06;
2590 fontDescriptionRun06.characterRun.characterIndex = 54u;
2591 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2592 fontDescriptionRun06.familyLength = fontHebrew.size();
2593 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2594 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
2595 fontDescriptionRun06.familyDefined = true;
2596 fontDescriptionRun06.weightDefined = false;
2597 fontDescriptionRun06.widthDefined = false;
2598 fontDescriptionRun06.slantDefined = false;
2599 fontDescriptionRun06.sizeDefined = false;
2601 // Set a known font description
2602 FontDescriptionRun fontDescriptionRun07;
2603 fontDescriptionRun07.characterRun.characterIndex = 64u;
2604 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2605 fontDescriptionRun07.familyLength = fontHebrew.size();
2606 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2607 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
2608 fontDescriptionRun07.familyDefined = true;
2609 fontDescriptionRun07.weightDefined = false;
2610 fontDescriptionRun07.widthDefined = false;
2611 fontDescriptionRun07.slantDefined = false;
2612 fontDescriptionRun07.sizeDefined = false;
2614 // Set a known font description
2615 FontDescriptionRun fontDescriptionRun08;
2616 fontDescriptionRun08.characterRun.characterIndex = 74u;
2617 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2618 fontDescriptionRun08.familyLength = fontLatin.size();
2619 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2620 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
2621 fontDescriptionRun08.familyDefined = true;
2622 fontDescriptionRun08.weightDefined = false;
2623 fontDescriptionRun08.widthDefined = false;
2624 fontDescriptionRun08.slantDefined = false;
2625 fontDescriptionRun08.sizeDefined = false;
2627 // Set a known font description
2628 FontDescriptionRun fontDescriptionRun09;
2629 fontDescriptionRun09.characterRun.characterIndex = 92u;
2630 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2631 fontDescriptionRun09.familyLength = fontLatin.size();
2632 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2633 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
2634 fontDescriptionRun09.familyDefined = true;
2635 fontDescriptionRun09.weightDefined = false;
2636 fontDescriptionRun09.widthDefined = false;
2637 fontDescriptionRun09.slantDefined = false;
2638 fontDescriptionRun09.sizeDefined = false;
2640 // Set a known font description
2641 FontDescriptionRun fontDescriptionRun10;
2642 fontDescriptionRun10.characterRun.characterIndex = 104u;
2643 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2644 fontDescriptionRun10.familyLength = fontArabic.size();
2645 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2646 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
2647 fontDescriptionRun10.familyDefined = true;
2648 fontDescriptionRun10.weightDefined = false;
2649 fontDescriptionRun10.widthDefined = false;
2650 fontDescriptionRun10.slantDefined = false;
2651 fontDescriptionRun10.sizeDefined = false;
2653 // Set a known font description
2654 FontDescriptionRun fontDescriptionRun11;
2655 fontDescriptionRun11.characterRun.characterIndex = 118u;
2656 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2657 fontDescriptionRun11.familyLength = fontHebrew.size();
2658 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2659 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
2660 fontDescriptionRun11.familyDefined = true;
2661 fontDescriptionRun11.weightDefined = false;
2662 fontDescriptionRun11.widthDefined = false;
2663 fontDescriptionRun11.slantDefined = false;
2664 fontDescriptionRun11.sizeDefined = false;
2666 // Set a known font description
2667 FontDescriptionRun fontDescriptionRun12;
2668 fontDescriptionRun12.characterRun.characterIndex = 128u;
2669 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2670 fontDescriptionRun12.familyLength = fontLatin.size();
2671 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2672 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
2673 fontDescriptionRun12.familyDefined = true;
2674 fontDescriptionRun12.weightDefined = false;
2675 fontDescriptionRun12.widthDefined = false;
2676 fontDescriptionRun12.slantDefined = false;
2677 fontDescriptionRun12.sizeDefined = false;
2679 // Set a known font description
2680 FontDescriptionRun fontDescriptionRun13;
2681 fontDescriptionRun13.characterRun.characterIndex = 145u;
2682 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2683 fontDescriptionRun13.familyLength = fontHebrew.size();
2684 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2685 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
2686 fontDescriptionRun13.familyDefined = true;
2687 fontDescriptionRun13.weightDefined = false;
2688 fontDescriptionRun13.widthDefined = false;
2689 fontDescriptionRun13.slantDefined = false;
2690 fontDescriptionRun13.sizeDefined = false;
2692 // Set a known font description
2693 FontDescriptionRun fontDescriptionRun14;
2694 fontDescriptionRun14.characterRun.characterIndex = 154u;
2695 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2696 fontDescriptionRun14.familyLength = fontLatin.size();
2697 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2698 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
2699 fontDescriptionRun14.familyDefined = true;
2700 fontDescriptionRun14.weightDefined = false;
2701 fontDescriptionRun14.widthDefined = false;
2702 fontDescriptionRun14.slantDefined = false;
2703 fontDescriptionRun14.sizeDefined = false;
2705 // Set a known font description
2706 FontDescriptionRun fontDescriptionRun15;
2707 fontDescriptionRun15.characterRun.characterIndex = 156u;
2708 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2709 fontDescriptionRun15.familyLength = fontHebrew.size();
2710 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2711 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
2712 fontDescriptionRun15.familyDefined = true;
2713 fontDescriptionRun15.weightDefined = false;
2714 fontDescriptionRun15.widthDefined = false;
2715 fontDescriptionRun15.slantDefined = false;
2716 fontDescriptionRun15.sizeDefined = false;
2718 // Set a known font description
2719 FontDescriptionRun fontDescriptionRun16;
2720 fontDescriptionRun16.characterRun.characterIndex = 166u;
2721 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2722 fontDescriptionRun16.familyLength = fontLatin.size();
2723 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2724 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
2725 fontDescriptionRun16.familyDefined = true;
2726 fontDescriptionRun16.weightDefined = false;
2727 fontDescriptionRun16.widthDefined = false;
2728 fontDescriptionRun16.slantDefined = false;
2729 fontDescriptionRun16.sizeDefined = false;
2731 // Set a known font description
2732 FontDescriptionRun fontDescriptionRun17;
2733 fontDescriptionRun17.characterRun.characterIndex = 178u;
2734 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2735 fontDescriptionRun17.familyLength = fontArabic.size();
2736 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2737 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
2738 fontDescriptionRun17.familyDefined = true;
2739 fontDescriptionRun17.weightDefined = false;
2740 fontDescriptionRun17.widthDefined = false;
2741 fontDescriptionRun17.slantDefined = false;
2742 fontDescriptionRun17.sizeDefined = false;
2744 Vector<FontDescriptionRun> fontDescriptionRuns;
2745 fontDescriptionRuns.PushBack(fontDescriptionRun01);
2746 fontDescriptionRuns.PushBack(fontDescriptionRun02);
2747 fontDescriptionRuns.PushBack(fontDescriptionRun03);
2748 fontDescriptionRuns.PushBack(fontDescriptionRun04);
2749 fontDescriptionRuns.PushBack(fontDescriptionRun05);
2750 fontDescriptionRuns.PushBack(fontDescriptionRun06);
2751 fontDescriptionRuns.PushBack(fontDescriptionRun07);
2752 fontDescriptionRuns.PushBack(fontDescriptionRun08);
2753 fontDescriptionRuns.PushBack(fontDescriptionRun09);
2754 fontDescriptionRuns.PushBack(fontDescriptionRun10);
2755 fontDescriptionRuns.PushBack(fontDescriptionRun11);
2756 fontDescriptionRuns.PushBack(fontDescriptionRun12);
2757 fontDescriptionRuns.PushBack(fontDescriptionRun13);
2758 fontDescriptionRuns.PushBack(fontDescriptionRun14);
2759 fontDescriptionRuns.PushBack(fontDescriptionRun15);
2760 fontDescriptionRuns.PushBack(fontDescriptionRun16);
2761 fontDescriptionRuns.PushBack(fontDescriptionRun17);
2762 Size textArea(100.f, 300.f);
2763 Size layoutSize(100.f, 380.f);
2766 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
3054 -12.f, // 150 .. 155
3129 struct LineRun line01 =
3141 struct LineRun line02 =
3153 struct LineRun line03 =
3165 struct LineRun line04 =
3177 struct LineRun line05 =
3189 struct LineRun line06 =
3201 struct LineRun line07 =
3213 struct LineRun line08 =
3225 struct LineRun line09 =
3237 struct LineRun line10 =
3249 struct LineRun line11 =
3261 struct LineRun line12 =
3273 struct LineRun line13 =
3285 struct LineRun line14 =
3297 struct LineRun line15 =
3309 struct LineRun line16 =
3321 struct LineRun line17 =
3333 struct LineRun line18 =
3345 struct LineRun line19 =
3357 Vector<LineRun> lines;
3358 lines.PushBack(line01);
3359 lines.PushBack(line02);
3360 lines.PushBack(line03);
3361 lines.PushBack(line04);
3362 lines.PushBack(line05);
3363 lines.PushBack(line06);
3364 lines.PushBack(line07);
3365 lines.PushBack(line08);
3366 lines.PushBack(line09);
3367 lines.PushBack(line10);
3368 lines.PushBack(line11);
3369 lines.PushBack(line12);
3370 lines.PushBack(line13);
3371 lines.PushBack(line14);
3372 lines.PushBack(line15);
3373 lines.PushBack(line16);
3374 lines.PushBack(line17);
3375 lines.PushBack(line18);
3376 lines.PushBack(line19);
3378 LayoutTextData data =
3380 "Layout bidirectional text.",
3381 "Hello world demo שלום עולם.\n"
3382 "مرحبا بالعالم hello world שלום עולם\n"
3383 "שלום עולם hello world demo.\n"
3384 "hello world مرحبا بالعالم שלום עולם\n"
3385 "Hello world demo שלום עולם.\n"
3386 "שלום עולם hello world مرحبا بالعالم\n",
3389 fontDescriptionRuns.Begin(),
3395 Layout::Engine::MULTI_LINE_BOX,
3399 DevelText::EllipsisPosition::END,
3402 if(!LayoutTextTest(data))
3404 tet_result(TET_FAIL);
3407 tet_result(TET_PASS);
3411 int UtcDaliTextUpdateLayout03(void)
3413 ToolkitTestApplication application;
3414 tet_infoline(" UtcDaliTextUpdateLayout03");
3416 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
3418 const std::string fontLatin("TizenSans");
3419 const std::string fontHebrew("TizenSansHebrew");
3420 const std::string fontArabic("TizenSansArabic");
3422 // Set a known font description
3423 FontDescriptionRun fontDescriptionRun01;
3424 fontDescriptionRun01.characterRun.characterIndex = 0u;
3425 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
3426 fontDescriptionRun01.familyLength = fontLatin.size();
3427 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3428 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3429 fontDescriptionRun01.familyDefined = true;
3430 fontDescriptionRun01.weightDefined = false;
3431 fontDescriptionRun01.widthDefined = false;
3432 fontDescriptionRun01.slantDefined = false;
3433 fontDescriptionRun01.sizeDefined = false;
3435 // Set a known font description
3436 FontDescriptionRun fontDescriptionRun02;
3437 fontDescriptionRun02.characterRun.characterIndex = 17u;
3438 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
3439 fontDescriptionRun02.familyLength = fontHebrew.size();
3440 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3441 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3442 fontDescriptionRun02.familyDefined = true;
3443 fontDescriptionRun02.weightDefined = false;
3444 fontDescriptionRun02.widthDefined = false;
3445 fontDescriptionRun02.slantDefined = false;
3446 fontDescriptionRun02.sizeDefined = false;
3448 // Set a known font description
3449 FontDescriptionRun fontDescriptionRun03;
3450 fontDescriptionRun03.characterRun.characterIndex = 26u;
3451 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
3452 fontDescriptionRun03.familyLength = fontLatin.size();
3453 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3454 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
3455 fontDescriptionRun03.familyDefined = true;
3456 fontDescriptionRun03.weightDefined = false;
3457 fontDescriptionRun03.widthDefined = false;
3458 fontDescriptionRun03.slantDefined = false;
3459 fontDescriptionRun03.sizeDefined = false;
3461 // Set a known font description
3462 FontDescriptionRun fontDescriptionRun04;
3463 fontDescriptionRun04.characterRun.characterIndex = 28u;
3464 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3465 fontDescriptionRun04.familyLength = fontArabic.size();
3466 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3467 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
3468 fontDescriptionRun04.familyDefined = true;
3469 fontDescriptionRun04.weightDefined = false;
3470 fontDescriptionRun04.widthDefined = false;
3471 fontDescriptionRun04.slantDefined = false;
3472 fontDescriptionRun04.sizeDefined = false;
3474 // Set a known font description
3475 FontDescriptionRun fontDescriptionRun05;
3476 fontDescriptionRun05.characterRun.characterIndex = 42u;
3477 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3478 fontDescriptionRun05.familyLength = fontLatin.size();
3479 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3480 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3481 fontDescriptionRun05.familyDefined = true;
3482 fontDescriptionRun05.weightDefined = false;
3483 fontDescriptionRun05.widthDefined = false;
3484 fontDescriptionRun05.slantDefined = false;
3485 fontDescriptionRun05.sizeDefined = false;
3487 // Set a known font description
3488 FontDescriptionRun fontDescriptionRun06;
3489 fontDescriptionRun06.characterRun.characterIndex = 54u;
3490 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
3491 fontDescriptionRun06.familyLength = fontHebrew.size();
3492 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3493 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
3494 fontDescriptionRun06.familyDefined = true;
3495 fontDescriptionRun06.weightDefined = false;
3496 fontDescriptionRun06.widthDefined = false;
3497 fontDescriptionRun06.slantDefined = false;
3498 fontDescriptionRun06.sizeDefined = false;
3500 // Set a known font description
3501 FontDescriptionRun fontDescriptionRun07;
3502 fontDescriptionRun07.characterRun.characterIndex = 64u;
3503 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
3504 fontDescriptionRun07.familyLength = fontHebrew.size();
3505 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
3506 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
3507 fontDescriptionRun07.familyDefined = true;
3508 fontDescriptionRun07.weightDefined = false;
3509 fontDescriptionRun07.widthDefined = false;
3510 fontDescriptionRun07.slantDefined = false;
3511 fontDescriptionRun07.sizeDefined = false;
3513 // Set a known font description
3514 FontDescriptionRun fontDescriptionRun08;
3515 fontDescriptionRun08.characterRun.characterIndex = 74u;
3516 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
3517 fontDescriptionRun08.familyLength = fontLatin.size();
3518 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
3519 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
3520 fontDescriptionRun08.familyDefined = true;
3521 fontDescriptionRun08.weightDefined = false;
3522 fontDescriptionRun08.widthDefined = false;
3523 fontDescriptionRun08.slantDefined = false;
3524 fontDescriptionRun08.sizeDefined = false;
3526 // Set a known font description
3527 FontDescriptionRun fontDescriptionRun09;
3528 fontDescriptionRun09.characterRun.characterIndex = 92u;
3529 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
3530 fontDescriptionRun09.familyLength = fontLatin.size();
3531 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
3532 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
3533 fontDescriptionRun09.familyDefined = true;
3534 fontDescriptionRun09.weightDefined = false;
3535 fontDescriptionRun09.widthDefined = false;
3536 fontDescriptionRun09.slantDefined = false;
3537 fontDescriptionRun09.sizeDefined = false;
3539 // Set a known font description
3540 FontDescriptionRun fontDescriptionRun10;
3541 fontDescriptionRun10.characterRun.characterIndex = 104u;
3542 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
3543 fontDescriptionRun10.familyLength = fontArabic.size();
3544 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
3545 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
3546 fontDescriptionRun10.familyDefined = true;
3547 fontDescriptionRun10.weightDefined = false;
3548 fontDescriptionRun10.widthDefined = false;
3549 fontDescriptionRun10.slantDefined = false;
3550 fontDescriptionRun10.sizeDefined = false;
3552 // Set a known font description
3553 FontDescriptionRun fontDescriptionRun11;
3554 fontDescriptionRun11.characterRun.characterIndex = 118u;
3555 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
3556 fontDescriptionRun11.familyLength = fontHebrew.size();
3557 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
3558 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
3559 fontDescriptionRun11.familyDefined = true;
3560 fontDescriptionRun11.weightDefined = false;
3561 fontDescriptionRun11.widthDefined = false;
3562 fontDescriptionRun11.slantDefined = false;
3563 fontDescriptionRun11.sizeDefined = false;
3565 // Set a known font description
3566 FontDescriptionRun fontDescriptionRun12;
3567 fontDescriptionRun12.characterRun.characterIndex = 128u;
3568 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
3569 fontDescriptionRun12.familyLength = fontLatin.size();
3570 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
3571 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
3572 fontDescriptionRun12.familyDefined = true;
3573 fontDescriptionRun12.weightDefined = false;
3574 fontDescriptionRun12.widthDefined = false;
3575 fontDescriptionRun12.slantDefined = false;
3576 fontDescriptionRun12.sizeDefined = false;
3578 // Set a known font description
3579 FontDescriptionRun fontDescriptionRun13;
3580 fontDescriptionRun13.characterRun.characterIndex = 145u;
3581 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
3582 fontDescriptionRun13.familyLength = fontHebrew.size();
3583 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
3584 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
3585 fontDescriptionRun13.familyDefined = true;
3586 fontDescriptionRun13.weightDefined = false;
3587 fontDescriptionRun13.widthDefined = false;
3588 fontDescriptionRun13.slantDefined = false;
3589 fontDescriptionRun13.sizeDefined = false;
3591 // Set a known font description
3592 FontDescriptionRun fontDescriptionRun14;
3593 fontDescriptionRun14.characterRun.characterIndex = 154u;
3594 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
3595 fontDescriptionRun14.familyLength = fontLatin.size();
3596 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
3597 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
3598 fontDescriptionRun14.familyDefined = true;
3599 fontDescriptionRun14.weightDefined = false;
3600 fontDescriptionRun14.widthDefined = false;
3601 fontDescriptionRun14.slantDefined = false;
3602 fontDescriptionRun14.sizeDefined = false;
3604 // Set a known font description
3605 FontDescriptionRun fontDescriptionRun15;
3606 fontDescriptionRun15.characterRun.characterIndex = 156u;
3607 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
3608 fontDescriptionRun15.familyLength = fontHebrew.size();
3609 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
3610 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
3611 fontDescriptionRun15.familyDefined = true;
3612 fontDescriptionRun15.weightDefined = false;
3613 fontDescriptionRun15.widthDefined = false;
3614 fontDescriptionRun15.slantDefined = false;
3615 fontDescriptionRun15.sizeDefined = false;
3617 // Set a known font description
3618 FontDescriptionRun fontDescriptionRun16;
3619 fontDescriptionRun16.characterRun.characterIndex = 166u;
3620 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
3621 fontDescriptionRun16.familyLength = fontLatin.size();
3622 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
3623 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
3624 fontDescriptionRun16.familyDefined = true;
3625 fontDescriptionRun16.weightDefined = false;
3626 fontDescriptionRun16.widthDefined = false;
3627 fontDescriptionRun16.slantDefined = false;
3628 fontDescriptionRun16.sizeDefined = false;
3630 // Set a known font description
3631 FontDescriptionRun fontDescriptionRun17;
3632 fontDescriptionRun17.characterRun.characterIndex = 178u;
3633 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
3634 fontDescriptionRun17.familyLength = fontArabic.size();
3635 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
3636 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
3637 fontDescriptionRun17.familyDefined = true;
3638 fontDescriptionRun17.weightDefined = false;
3639 fontDescriptionRun17.widthDefined = false;
3640 fontDescriptionRun17.slantDefined = false;
3641 fontDescriptionRun17.sizeDefined = false;
3643 Vector<FontDescriptionRun> fontDescriptionRuns;
3644 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3645 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3646 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3647 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3648 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3649 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3650 fontDescriptionRuns.PushBack(fontDescriptionRun07);
3651 fontDescriptionRuns.PushBack(fontDescriptionRun08);
3652 fontDescriptionRuns.PushBack(fontDescriptionRun09);
3653 fontDescriptionRuns.PushBack(fontDescriptionRun10);
3654 fontDescriptionRuns.PushBack(fontDescriptionRun11);
3655 fontDescriptionRuns.PushBack(fontDescriptionRun12);
3656 fontDescriptionRuns.PushBack(fontDescriptionRun13);
3657 fontDescriptionRuns.PushBack(fontDescriptionRun14);
3658 fontDescriptionRuns.PushBack(fontDescriptionRun15);
3659 fontDescriptionRuns.PushBack(fontDescriptionRun16);
3660 fontDescriptionRuns.PushBack(fontDescriptionRun17);
3661 Size textArea(100.f, 300.f);
3662 Size layoutSize(100.f, 380.f);
3665 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
3953 -12.f, // 150 .. 155
4028 struct LineRun line01 =
4040 struct LineRun line02 =
4052 struct LineRun line03 =
4064 struct LineRun line04 =
4076 struct LineRun line05 =
4088 struct LineRun line06 =
4100 struct LineRun line07 =
4112 struct LineRun line08 =
4124 struct LineRun line09 =
4136 struct LineRun line10 =
4148 struct LineRun line11 =
4160 struct LineRun line12 =
4172 struct LineRun line13 =
4184 struct LineRun line14 =
4196 struct LineRun line15 =
4208 struct LineRun line16 =
4220 struct LineRun line17 =
4232 struct LineRun line18 =
4244 struct LineRun line19 =
4256 Vector<LineRun> lines;
4257 lines.PushBack(line01);
4258 lines.PushBack(line02);
4259 lines.PushBack(line03);
4260 lines.PushBack(line04);
4261 lines.PushBack(line05);
4262 lines.PushBack(line06);
4263 lines.PushBack(line07);
4264 lines.PushBack(line08);
4265 lines.PushBack(line09);
4266 lines.PushBack(line10);
4267 lines.PushBack(line11);
4268 lines.PushBack(line12);
4269 lines.PushBack(line13);
4270 lines.PushBack(line14);
4271 lines.PushBack(line15);
4272 lines.PushBack(line16);
4273 lines.PushBack(line17);
4274 lines.PushBack(line18);
4275 lines.PushBack(line19);
4277 LayoutTextData data =
4279 "Layout bidirectional text.",
4280 "Hello world demo שלום עולם.\n"
4281 "مرحبا بالعالم hello world שלום עולם\n"
4282 "שלום עולם hello world demo.\n"
4283 "hello world مرحبا بالعالم שלום עולם\n"
4284 "Hello world demo שלום עולם.\n"
4285 "שלום עולם hello world مرحبا بالعالم\n",
4288 fontDescriptionRuns.Begin(),
4294 Layout::Engine::MULTI_LINE_BOX,
4298 DevelText::EllipsisPosition::END,
4301 if(!LayoutTextTest(data))
4303 tet_result(TET_FAIL);
4306 tet_result(TET_PASS);
4310 int UtcDaliTextLayoutEllipsis01(void)
4312 ToolkitTestApplication application;
4313 tet_infoline(" UtcDaliTextLayoutEllipsis01");
4315 // Layout single-line LTR text with ellipsis.
4317 const std::string fontLatin("TizenSans");
4319 // Set a known font description
4320 FontDescriptionRun fontDescriptionRun01;
4321 fontDescriptionRun01.characterRun.characterIndex = 0u;
4322 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4323 fontDescriptionRun01.familyLength = fontLatin.size();
4324 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4325 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4326 fontDescriptionRun01.familyDefined = true;
4327 fontDescriptionRun01.weightDefined = false;
4328 fontDescriptionRun01.widthDefined = false;
4329 fontDescriptionRun01.slantDefined = false;
4330 fontDescriptionRun01.sizeDefined = false;
4332 Vector<FontDescriptionRun> fontDescriptionRuns;
4333 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4335 struct LineRun line01 =
4347 Vector<LineRun> lines;
4348 lines.PushBack(line01);
4380 Size textArea(100.f, 50.f);
4381 Size layoutSize(100.f, 20.f);
4383 LayoutTextData data =
4385 "Layout single-line LTR text with ellipsis.",
4386 "Hello world demo hello world demo hello world demo.",
4389 fontDescriptionRuns.Begin(),
4395 Layout::Engine::SINGLE_LINE_BOX,
4399 DevelText::EllipsisPosition::END,
4402 if(!LayoutTextTest(data))
4404 tet_result(TET_FAIL);
4407 tet_result(TET_PASS);
4411 int UtcDaliTextLayoutEllipsis02(void)
4413 ToolkitTestApplication application;
4414 tet_infoline(" UtcDaliTextLayoutEllipsis02");
4416 // Layout multi-line LTR text with ellipsis.
4418 const std::string fontLatin("TizenSans");
4420 // Set a known font description
4421 FontDescriptionRun fontDescriptionRun01;
4422 fontDescriptionRun01.characterRun.characterIndex = 0u;
4423 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4424 fontDescriptionRun01.familyLength = fontLatin.size();
4425 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4426 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4427 fontDescriptionRun01.familyDefined = true;
4428 fontDescriptionRun01.weightDefined = false;
4429 fontDescriptionRun01.widthDefined = false;
4430 fontDescriptionRun01.slantDefined = false;
4431 fontDescriptionRun01.sizeDefined = false;
4433 Vector<FontDescriptionRun> fontDescriptionRuns;
4434 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4436 struct LineRun line01 =
4448 struct LineRun line02 =
4460 Vector<LineRun> lines;
4461 lines.PushBack(line01);
4462 lines.PushBack(line02);
4516 Size textArea(100.f, 50.f);
4517 Size layoutSize(100.f, 40.f);
4519 LayoutTextData data =
4521 "Layout multi-line LTR text with ellipsis.",
4522 "Hello world demo hello world demo hello world demo.",
4525 fontDescriptionRuns.Begin(),
4531 Layout::Engine::MULTI_LINE_BOX,
4535 DevelText::EllipsisPosition::END,
4538 if(!LayoutTextTest(data))
4540 tet_result(TET_FAIL);
4543 tet_result(TET_PASS);
4547 int UtcDaliTextLayoutEllipsis03(void)
4549 ToolkitTestApplication application;
4550 tet_infoline(" UtcDaliTextLayoutEllipsis03");
4552 // Layout single-line RTL text with ellipsis.
4554 const std::string fontHebrew("TizenSansHebrew");
4555 const std::string fontArabic("TizenSansArabic");
4557 // Set a known font description
4558 FontDescriptionRun fontDescriptionRun01;
4559 fontDescriptionRun01.characterRun.characterIndex = 0u;
4560 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4561 fontDescriptionRun01.familyLength = fontHebrew.size();
4562 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4563 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4564 fontDescriptionRun01.familyDefined = true;
4565 fontDescriptionRun01.weightDefined = false;
4566 fontDescriptionRun01.widthDefined = false;
4567 fontDescriptionRun01.slantDefined = false;
4568 fontDescriptionRun01.sizeDefined = false;
4570 FontDescriptionRun fontDescriptionRun02;
4571 fontDescriptionRun02.characterRun.characterIndex = 10u;
4572 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4573 fontDescriptionRun02.familyLength = fontArabic.size();
4574 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4575 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4576 fontDescriptionRun02.familyDefined = true;
4577 fontDescriptionRun02.weightDefined = false;
4578 fontDescriptionRun02.widthDefined = false;
4579 fontDescriptionRun02.slantDefined = false;
4580 fontDescriptionRun02.sizeDefined = false;
4582 FontDescriptionRun fontDescriptionRun03;
4583 fontDescriptionRun03.characterRun.characterIndex = 24u;
4584 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4585 fontDescriptionRun03.familyLength = fontHebrew.size();
4586 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4587 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4588 fontDescriptionRun03.familyDefined = true;
4589 fontDescriptionRun03.weightDefined = false;
4590 fontDescriptionRun03.widthDefined = false;
4591 fontDescriptionRun03.slantDefined = false;
4592 fontDescriptionRun03.sizeDefined = false;
4594 FontDescriptionRun fontDescriptionRun04;
4595 fontDescriptionRun04.characterRun.characterIndex = 34u;
4596 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4597 fontDescriptionRun04.familyLength = fontArabic.size();
4598 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4599 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4600 fontDescriptionRun04.familyDefined = true;
4601 fontDescriptionRun04.weightDefined = false;
4602 fontDescriptionRun04.widthDefined = false;
4603 fontDescriptionRun04.slantDefined = false;
4604 fontDescriptionRun04.sizeDefined = false;
4606 FontDescriptionRun fontDescriptionRun05;
4607 fontDescriptionRun05.characterRun.characterIndex = 48u;
4608 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4609 fontDescriptionRun05.familyLength = fontHebrew.size();
4610 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4611 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4612 fontDescriptionRun05.familyDefined = true;
4613 fontDescriptionRun05.weightDefined = false;
4614 fontDescriptionRun05.widthDefined = false;
4615 fontDescriptionRun05.slantDefined = false;
4616 fontDescriptionRun05.sizeDefined = false;
4618 FontDescriptionRun fontDescriptionRun06;
4619 fontDescriptionRun06.characterRun.characterIndex = 58u;
4620 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4621 fontDescriptionRun06.familyLength = fontArabic.size();
4622 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4623 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4624 fontDescriptionRun06.familyDefined = true;
4625 fontDescriptionRun06.weightDefined = false;
4626 fontDescriptionRun06.widthDefined = false;
4627 fontDescriptionRun06.slantDefined = false;
4628 fontDescriptionRun06.sizeDefined = false;
4630 Vector<FontDescriptionRun> fontDescriptionRuns;
4631 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4632 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4633 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4634 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4635 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4636 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4638 struct LineRun line01 =
4650 Vector<LineRun> lines;
4651 lines.PushBack(line01);
4689 Size textArea(100.f, 50.f);
4690 Size layoutSize(100.f, 20.f);
4692 LayoutTextData data =
4694 "Layout single-line RTL text with ellipsis.",
4695 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4698 fontDescriptionRuns.Begin(),
4704 Layout::Engine::SINGLE_LINE_BOX,
4708 DevelText::EllipsisPosition::END,
4711 if(!LayoutTextTest(data))
4713 tet_result(TET_FAIL);
4716 tet_result(TET_PASS);
4720 int UtcDaliTextLayoutEllipsis04(void)
4722 ToolkitTestApplication application;
4723 tet_infoline(" UtcDaliTextLayoutEllipsis04");
4725 // Layout multi-line RTL text with ellipsis.
4727 const std::string fontHebrew("TizenSansHebrew");
4728 const std::string fontArabic("TizenSansArabic");
4730 // Set a known font description
4731 FontDescriptionRun fontDescriptionRun01;
4732 fontDescriptionRun01.characterRun.characterIndex = 0u;
4733 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4734 fontDescriptionRun01.familyLength = fontHebrew.size();
4735 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4736 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4737 fontDescriptionRun01.familyDefined = true;
4738 fontDescriptionRun01.weightDefined = false;
4739 fontDescriptionRun01.widthDefined = false;
4740 fontDescriptionRun01.slantDefined = false;
4741 fontDescriptionRun01.sizeDefined = false;
4743 FontDescriptionRun fontDescriptionRun02;
4744 fontDescriptionRun02.characterRun.characterIndex = 10u;
4745 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4746 fontDescriptionRun02.familyLength = fontArabic.size();
4747 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4748 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4749 fontDescriptionRun02.familyDefined = true;
4750 fontDescriptionRun02.weightDefined = false;
4751 fontDescriptionRun02.widthDefined = false;
4752 fontDescriptionRun02.slantDefined = false;
4753 fontDescriptionRun02.sizeDefined = false;
4755 FontDescriptionRun fontDescriptionRun03;
4756 fontDescriptionRun03.characterRun.characterIndex = 24u;
4757 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4758 fontDescriptionRun03.familyLength = fontHebrew.size();
4759 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4760 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4761 fontDescriptionRun03.familyDefined = true;
4762 fontDescriptionRun03.weightDefined = false;
4763 fontDescriptionRun03.widthDefined = false;
4764 fontDescriptionRun03.slantDefined = false;
4765 fontDescriptionRun03.sizeDefined = false;
4767 FontDescriptionRun fontDescriptionRun04;
4768 fontDescriptionRun04.characterRun.characterIndex = 34u;
4769 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4770 fontDescriptionRun04.familyLength = fontArabic.size();
4771 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4772 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4773 fontDescriptionRun04.familyDefined = true;
4774 fontDescriptionRun04.weightDefined = false;
4775 fontDescriptionRun04.widthDefined = false;
4776 fontDescriptionRun04.slantDefined = false;
4777 fontDescriptionRun04.sizeDefined = false;
4779 FontDescriptionRun fontDescriptionRun05;
4780 fontDescriptionRun05.characterRun.characterIndex = 48u;
4781 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4782 fontDescriptionRun05.familyLength = fontHebrew.size();
4783 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4784 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4785 fontDescriptionRun05.familyDefined = true;
4786 fontDescriptionRun05.weightDefined = false;
4787 fontDescriptionRun05.widthDefined = false;
4788 fontDescriptionRun05.slantDefined = false;
4789 fontDescriptionRun05.sizeDefined = false;
4791 FontDescriptionRun fontDescriptionRun06;
4792 fontDescriptionRun06.characterRun.characterIndex = 58u;
4793 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4794 fontDescriptionRun06.familyLength = fontArabic.size();
4795 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4796 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4797 fontDescriptionRun06.familyDefined = true;
4798 fontDescriptionRun06.weightDefined = false;
4799 fontDescriptionRun06.widthDefined = false;
4800 fontDescriptionRun06.slantDefined = false;
4801 fontDescriptionRun06.sizeDefined = false;
4803 Vector<FontDescriptionRun> fontDescriptionRuns;
4804 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4805 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4806 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4807 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4808 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4809 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4811 struct LineRun line01 =
4823 struct LineRun line02 =
4835 Vector<LineRun> lines;
4836 lines.PushBack(line01);
4837 lines.PushBack(line02);
4911 Size textArea(100.f, 50.f);
4912 Size layoutSize(100.f, 40.f);
4914 LayoutTextData data =
4916 "Layout multi-line RTL text with ellipsis.",
4917 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4920 fontDescriptionRuns.Begin(),
4926 Layout::Engine::MULTI_LINE_BOX,
4930 DevelText::EllipsisPosition::END,
4933 if(!LayoutTextTest(data))
4935 tet_result(TET_FAIL);
4938 tet_result(TET_PASS);
4942 int UtcDaliTextLayoutEllipsis05(void)
4944 ToolkitTestApplication application;
4945 tet_infoline(" UtcDaliTextLayoutEllipsis05");
4947 const std::string fontLatin("TizenSans");
4949 // Set a known font description
4950 FontDescriptionRun fontDescriptionRun01;
4951 fontDescriptionRun01.characterRun.characterIndex = 0u;
4952 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4953 fontDescriptionRun01.familyLength = fontLatin.size();
4954 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4955 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4956 fontDescriptionRun01.familyDefined = true;
4957 fontDescriptionRun01.weightDefined = false;
4958 fontDescriptionRun01.widthDefined = false;
4959 fontDescriptionRun01.slantDefined = false;
4960 fontDescriptionRun01.sizeDefined = false;
4962 Vector<FontDescriptionRun> fontDescriptionRuns;
4963 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4965 struct LineRun line01 =
4977 Vector<LineRun> lines;
4978 lines.PushBack(line01);
4984 Size textArea(100.f, 19.f);
4985 Size layoutSize(100.f, 20.f);
4987 LayoutTextData data =
4989 "Not enough height.",
4993 fontDescriptionRuns.Begin(),
4999 Layout::Engine::MULTI_LINE_BOX,
5003 DevelText::EllipsisPosition::END,
5006 if(!LayoutTextTest(data))
5008 tet_result(TET_FAIL);
5011 tet_result(TET_PASS);
5015 int UtcDaliTextAlign01(void)
5017 ToolkitTestApplication application;
5018 tet_infoline(" UtcDaliTextAlign01");
5020 // Calculate text alignment.
5022 const std::string fontLatin("TizenSans");
5023 const std::string fontHebrew("TizenSansHebrew");
5024 const std::string fontArabic("TizenSansArabic");
5026 // Set a known font description
5027 FontDescriptionRun fontDescriptionRun01;
5028 fontDescriptionRun01.characterRun.characterIndex = 0u;
5029 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5030 fontDescriptionRun01.familyLength = fontLatin.size();
5031 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5032 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5033 fontDescriptionRun01.familyDefined = true;
5034 fontDescriptionRun01.weightDefined = false;
5035 fontDescriptionRun01.widthDefined = false;
5036 fontDescriptionRun01.slantDefined = false;
5037 fontDescriptionRun01.sizeDefined = false;
5039 FontDescriptionRun fontDescriptionRun02;
5040 fontDescriptionRun02.characterRun.characterIndex = 12u;
5041 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5042 fontDescriptionRun02.familyLength = fontHebrew.size();
5043 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5044 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5045 fontDescriptionRun02.familyDefined = true;
5046 fontDescriptionRun02.weightDefined = false;
5047 fontDescriptionRun02.widthDefined = false;
5048 fontDescriptionRun02.slantDefined = false;
5049 fontDescriptionRun02.sizeDefined = false;
5051 FontDescriptionRun fontDescriptionRun03;
5052 fontDescriptionRun03.characterRun.characterIndex = 22u;
5053 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5054 fontDescriptionRun03.familyLength = fontArabic.size();
5055 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5056 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5057 fontDescriptionRun03.familyDefined = true;
5058 fontDescriptionRun03.weightDefined = false;
5059 fontDescriptionRun03.widthDefined = false;
5060 fontDescriptionRun03.slantDefined = false;
5061 fontDescriptionRun03.sizeDefined = false;
5063 FontDescriptionRun fontDescriptionRun04;
5064 fontDescriptionRun04.characterRun.characterIndex = 36u;
5065 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5066 fontDescriptionRun04.familyLength = fontLatin.size();
5067 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5068 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5069 fontDescriptionRun04.familyDefined = true;
5070 fontDescriptionRun04.weightDefined = false;
5071 fontDescriptionRun04.widthDefined = false;
5072 fontDescriptionRun04.slantDefined = false;
5073 fontDescriptionRun04.sizeDefined = false;
5075 FontDescriptionRun fontDescriptionRun05;
5076 fontDescriptionRun05.characterRun.characterIndex = 48u;
5077 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5078 fontDescriptionRun05.familyLength = fontLatin.size();
5079 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5080 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5081 fontDescriptionRun05.familyDefined = true;
5082 fontDescriptionRun05.weightDefined = false;
5083 fontDescriptionRun05.widthDefined = false;
5084 fontDescriptionRun05.slantDefined = false;
5085 fontDescriptionRun05.sizeDefined = false;
5087 FontDescriptionRun fontDescriptionRun06;
5088 fontDescriptionRun06.characterRun.characterIndex = 60u;
5089 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5090 fontDescriptionRun06.familyLength = fontArabic.size();
5091 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5092 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5093 fontDescriptionRun06.familyDefined = true;
5094 fontDescriptionRun06.weightDefined = false;
5095 fontDescriptionRun06.widthDefined = false;
5096 fontDescriptionRun06.slantDefined = false;
5097 fontDescriptionRun06.sizeDefined = false;
5099 Vector<FontDescriptionRun> fontDescriptionRuns;
5100 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5101 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5102 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5103 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5104 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5105 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5107 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5109 Size textArea(100.f, 300.f);
5112 "Begin alignment for the first paragraph.",
5113 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5116 fontDescriptionRuns.Begin(),
5117 Text::HorizontalAlignment::BEGIN,
5118 Text::VerticalAlignment::TOP,
5123 Dali::LayoutDirection::LEFT_TO_RIGHT,
5126 if(!AlignTest(data))
5128 tet_result(TET_FAIL);
5131 tet_result(TET_PASS);
5135 int UtcDaliTextAlign02(void)
5137 ToolkitTestApplication application;
5138 tet_infoline(" UtcDaliTextAlign02");
5140 // Calculate text alignment.
5142 const std::string fontLatin("TizenSans");
5143 const std::string fontHebrew("TizenSansHebrew");
5144 const std::string fontArabic("TizenSansArabic");
5146 // Set a known font description
5147 FontDescriptionRun fontDescriptionRun01;
5148 fontDescriptionRun01.characterRun.characterIndex = 0u;
5149 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5150 fontDescriptionRun01.familyLength = fontLatin.size();
5151 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5152 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5153 fontDescriptionRun01.familyDefined = true;
5154 fontDescriptionRun01.weightDefined = false;
5155 fontDescriptionRun01.widthDefined = false;
5156 fontDescriptionRun01.slantDefined = false;
5157 fontDescriptionRun01.sizeDefined = false;
5159 FontDescriptionRun fontDescriptionRun02;
5160 fontDescriptionRun02.characterRun.characterIndex = 12u;
5161 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5162 fontDescriptionRun02.familyLength = fontHebrew.size();
5163 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5164 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5165 fontDescriptionRun02.familyDefined = true;
5166 fontDescriptionRun02.weightDefined = false;
5167 fontDescriptionRun02.widthDefined = false;
5168 fontDescriptionRun02.slantDefined = false;
5169 fontDescriptionRun02.sizeDefined = false;
5171 FontDescriptionRun fontDescriptionRun03;
5172 fontDescriptionRun03.characterRun.characterIndex = 22u;
5173 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5174 fontDescriptionRun03.familyLength = fontArabic.size();
5175 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5176 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5177 fontDescriptionRun03.familyDefined = true;
5178 fontDescriptionRun03.weightDefined = false;
5179 fontDescriptionRun03.widthDefined = false;
5180 fontDescriptionRun03.slantDefined = false;
5181 fontDescriptionRun03.sizeDefined = false;
5183 FontDescriptionRun fontDescriptionRun04;
5184 fontDescriptionRun04.characterRun.characterIndex = 36u;
5185 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5186 fontDescriptionRun04.familyLength = fontLatin.size();
5187 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5188 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5189 fontDescriptionRun04.familyDefined = true;
5190 fontDescriptionRun04.weightDefined = false;
5191 fontDescriptionRun04.widthDefined = false;
5192 fontDescriptionRun04.slantDefined = false;
5193 fontDescriptionRun04.sizeDefined = false;
5195 FontDescriptionRun fontDescriptionRun05;
5196 fontDescriptionRun05.characterRun.characterIndex = 48u;
5197 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5198 fontDescriptionRun05.familyLength = fontLatin.size();
5199 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5200 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5201 fontDescriptionRun05.familyDefined = true;
5202 fontDescriptionRun05.weightDefined = false;
5203 fontDescriptionRun05.widthDefined = false;
5204 fontDescriptionRun05.slantDefined = false;
5205 fontDescriptionRun05.sizeDefined = false;
5207 FontDescriptionRun fontDescriptionRun06;
5208 fontDescriptionRun06.characterRun.characterIndex = 60u;
5209 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5210 fontDescriptionRun06.familyLength = fontArabic.size();
5211 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5212 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5213 fontDescriptionRun06.familyDefined = true;
5214 fontDescriptionRun06.weightDefined = false;
5215 fontDescriptionRun06.widthDefined = false;
5216 fontDescriptionRun06.slantDefined = false;
5217 fontDescriptionRun06.sizeDefined = false;
5219 Vector<FontDescriptionRun> fontDescriptionRuns;
5220 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5221 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5222 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5223 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5224 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5225 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5227 float positions[] = {0.f, 0.f, 33.f, 19.f, 0.f, 0.f};
5229 Size textArea(100.f, 300.f);
5232 "Begin alignment for the mid paragraph.",
5233 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5236 fontDescriptionRuns.Begin(),
5237 Text::HorizontalAlignment::BEGIN,
5238 Text::VerticalAlignment::TOP,
5243 Dali::LayoutDirection::LEFT_TO_RIGHT,
5246 if(!AlignTest(data))
5248 tet_result(TET_FAIL);
5251 tet_result(TET_PASS);
5255 int UtcDaliTextAlign03(void)
5257 ToolkitTestApplication application;
5258 tet_infoline(" UtcDaliTextAlign03");
5260 // Calculate text alignment.
5262 const std::string fontLatin("TizenSans");
5263 const std::string fontHebrew("TizenSansHebrew");
5264 const std::string fontArabic("TizenSansArabic");
5266 // Set a known font description
5267 FontDescriptionRun fontDescriptionRun01;
5268 fontDescriptionRun01.characterRun.characterIndex = 0u;
5269 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5270 fontDescriptionRun01.familyLength = fontLatin.size();
5271 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5272 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5273 fontDescriptionRun01.familyDefined = true;
5274 fontDescriptionRun01.weightDefined = false;
5275 fontDescriptionRun01.widthDefined = false;
5276 fontDescriptionRun01.slantDefined = false;
5277 fontDescriptionRun01.sizeDefined = false;
5279 FontDescriptionRun fontDescriptionRun02;
5280 fontDescriptionRun02.characterRun.characterIndex = 12u;
5281 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5282 fontDescriptionRun02.familyLength = fontHebrew.size();
5283 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5284 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5285 fontDescriptionRun02.familyDefined = true;
5286 fontDescriptionRun02.weightDefined = false;
5287 fontDescriptionRun02.widthDefined = false;
5288 fontDescriptionRun02.slantDefined = false;
5289 fontDescriptionRun02.sizeDefined = false;
5291 FontDescriptionRun fontDescriptionRun03;
5292 fontDescriptionRun03.characterRun.characterIndex = 22u;
5293 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5294 fontDescriptionRun03.familyLength = fontArabic.size();
5295 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5296 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5297 fontDescriptionRun03.familyDefined = true;
5298 fontDescriptionRun03.weightDefined = false;
5299 fontDescriptionRun03.widthDefined = false;
5300 fontDescriptionRun03.slantDefined = false;
5301 fontDescriptionRun03.sizeDefined = false;
5303 FontDescriptionRun fontDescriptionRun04;
5304 fontDescriptionRun04.characterRun.characterIndex = 36u;
5305 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5306 fontDescriptionRun04.familyLength = fontLatin.size();
5307 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5308 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5309 fontDescriptionRun04.familyDefined = true;
5310 fontDescriptionRun04.weightDefined = false;
5311 fontDescriptionRun04.widthDefined = false;
5312 fontDescriptionRun04.slantDefined = false;
5313 fontDescriptionRun04.sizeDefined = false;
5315 FontDescriptionRun fontDescriptionRun05;
5316 fontDescriptionRun05.characterRun.characterIndex = 48u;
5317 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5318 fontDescriptionRun05.familyLength = fontLatin.size();
5319 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5320 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5321 fontDescriptionRun05.familyDefined = true;
5322 fontDescriptionRun05.weightDefined = false;
5323 fontDescriptionRun05.widthDefined = false;
5324 fontDescriptionRun05.slantDefined = false;
5325 fontDescriptionRun05.sizeDefined = false;
5327 FontDescriptionRun fontDescriptionRun06;
5328 fontDescriptionRun06.characterRun.characterIndex = 60u;
5329 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5330 fontDescriptionRun06.familyLength = fontArabic.size();
5331 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5332 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5333 fontDescriptionRun06.familyDefined = true;
5334 fontDescriptionRun06.weightDefined = false;
5335 fontDescriptionRun06.widthDefined = false;
5336 fontDescriptionRun06.slantDefined = false;
5337 fontDescriptionRun06.sizeDefined = false;
5339 Vector<FontDescriptionRun> fontDescriptionRuns;
5340 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5341 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5342 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5343 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5344 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5345 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5347 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5349 Size textArea(100.f, 300.f);
5352 "Begin alignment for the last paragraph.",
5353 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5356 fontDescriptionRuns.Begin(),
5357 Text::HorizontalAlignment::BEGIN,
5358 Text::VerticalAlignment::TOP,
5363 Dali::LayoutDirection::LEFT_TO_RIGHT,
5366 if(!AlignTest(data))
5368 tet_result(TET_FAIL);
5371 tet_result(TET_PASS);
5375 int UtcDaliTextAlign04(void)
5377 ToolkitTestApplication application;
5378 tet_infoline(" UtcDaliTextAlign04");
5380 // Calculate text alignment.
5382 const std::string fontLatin("TizenSans");
5383 const std::string fontHebrew("TizenSansHebrew");
5384 const std::string fontArabic("TizenSansArabic");
5386 // Set a known font description
5387 FontDescriptionRun fontDescriptionRun01;
5388 fontDescriptionRun01.characterRun.characterIndex = 0u;
5389 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5390 fontDescriptionRun01.familyLength = fontLatin.size();
5391 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5392 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5393 fontDescriptionRun01.familyDefined = true;
5394 fontDescriptionRun01.weightDefined = false;
5395 fontDescriptionRun01.widthDefined = false;
5396 fontDescriptionRun01.slantDefined = false;
5397 fontDescriptionRun01.sizeDefined = false;
5399 FontDescriptionRun fontDescriptionRun02;
5400 fontDescriptionRun02.characterRun.characterIndex = 12u;
5401 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5402 fontDescriptionRun02.familyLength = fontHebrew.size();
5403 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5404 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5405 fontDescriptionRun02.familyDefined = true;
5406 fontDescriptionRun02.weightDefined = false;
5407 fontDescriptionRun02.widthDefined = false;
5408 fontDescriptionRun02.slantDefined = false;
5409 fontDescriptionRun02.sizeDefined = false;
5411 FontDescriptionRun fontDescriptionRun03;
5412 fontDescriptionRun03.characterRun.characterIndex = 22u;
5413 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5414 fontDescriptionRun03.familyLength = fontArabic.size();
5415 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5416 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5417 fontDescriptionRun03.familyDefined = true;
5418 fontDescriptionRun03.weightDefined = false;
5419 fontDescriptionRun03.widthDefined = false;
5420 fontDescriptionRun03.slantDefined = false;
5421 fontDescriptionRun03.sizeDefined = false;
5423 FontDescriptionRun fontDescriptionRun04;
5424 fontDescriptionRun04.characterRun.characterIndex = 36u;
5425 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5426 fontDescriptionRun04.familyLength = fontLatin.size();
5427 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5428 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5429 fontDescriptionRun04.familyDefined = true;
5430 fontDescriptionRun04.weightDefined = false;
5431 fontDescriptionRun04.widthDefined = false;
5432 fontDescriptionRun04.slantDefined = false;
5433 fontDescriptionRun04.sizeDefined = false;
5435 FontDescriptionRun fontDescriptionRun05;
5436 fontDescriptionRun05.characterRun.characterIndex = 48u;
5437 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5438 fontDescriptionRun05.familyLength = fontLatin.size();
5439 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5440 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5441 fontDescriptionRun05.familyDefined = true;
5442 fontDescriptionRun05.weightDefined = false;
5443 fontDescriptionRun05.widthDefined = false;
5444 fontDescriptionRun05.slantDefined = false;
5445 fontDescriptionRun05.sizeDefined = false;
5447 FontDescriptionRun fontDescriptionRun06;
5448 fontDescriptionRun06.characterRun.characterIndex = 60u;
5449 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5450 fontDescriptionRun06.familyLength = fontArabic.size();
5451 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5452 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5453 fontDescriptionRun06.familyDefined = true;
5454 fontDescriptionRun06.weightDefined = false;
5455 fontDescriptionRun06.widthDefined = false;
5456 fontDescriptionRun06.slantDefined = false;
5457 fontDescriptionRun06.sizeDefined = false;
5459 Vector<FontDescriptionRun> fontDescriptionRuns;
5460 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5461 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5462 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5463 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5464 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5465 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5467 float positions[] = {9.f, 15.f, 0.f, 0.f, 0.f, 0.f};
5469 Size textArea(100.f, 300.f);
5472 "Center alignment for the first paragraph.",
5473 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5476 fontDescriptionRuns.Begin(),
5477 Text::HorizontalAlignment::CENTER,
5478 Text::VerticalAlignment::TOP,
5483 Dali::LayoutDirection::LEFT_TO_RIGHT,
5486 if(!AlignTest(data))
5488 tet_result(TET_FAIL);
5491 tet_result(TET_PASS);
5495 int UtcDaliTextAlign05(void)
5497 ToolkitTestApplication application;
5498 tet_infoline(" UtcDaliTextAlign05");
5500 // Calculate text alignment.
5502 const std::string fontLatin("TizenSans");
5503 const std::string fontHebrew("TizenSansHebrew");
5504 const std::string fontArabic("TizenSansArabic");
5506 // Set a known font description
5507 FontDescriptionRun fontDescriptionRun01;
5508 fontDescriptionRun01.characterRun.characterIndex = 0u;
5509 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5510 fontDescriptionRun01.familyLength = fontLatin.size();
5511 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5512 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5513 fontDescriptionRun01.familyDefined = true;
5514 fontDescriptionRun01.weightDefined = false;
5515 fontDescriptionRun01.widthDefined = false;
5516 fontDescriptionRun01.slantDefined = false;
5517 fontDescriptionRun01.sizeDefined = false;
5519 FontDescriptionRun fontDescriptionRun02;
5520 fontDescriptionRun02.characterRun.characterIndex = 12u;
5521 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5522 fontDescriptionRun02.familyLength = fontHebrew.size();
5523 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5524 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5525 fontDescriptionRun02.familyDefined = true;
5526 fontDescriptionRun02.weightDefined = false;
5527 fontDescriptionRun02.widthDefined = false;
5528 fontDescriptionRun02.slantDefined = false;
5529 fontDescriptionRun02.sizeDefined = false;
5531 FontDescriptionRun fontDescriptionRun03;
5532 fontDescriptionRun03.characterRun.characterIndex = 22u;
5533 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5534 fontDescriptionRun03.familyLength = fontArabic.size();
5535 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5536 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5537 fontDescriptionRun03.familyDefined = true;
5538 fontDescriptionRun03.weightDefined = false;
5539 fontDescriptionRun03.widthDefined = false;
5540 fontDescriptionRun03.slantDefined = false;
5541 fontDescriptionRun03.sizeDefined = false;
5543 FontDescriptionRun fontDescriptionRun04;
5544 fontDescriptionRun04.characterRun.characterIndex = 36u;
5545 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5546 fontDescriptionRun04.familyLength = fontLatin.size();
5547 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5548 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5549 fontDescriptionRun04.familyDefined = true;
5550 fontDescriptionRun04.weightDefined = false;
5551 fontDescriptionRun04.widthDefined = false;
5552 fontDescriptionRun04.slantDefined = false;
5553 fontDescriptionRun04.sizeDefined = false;
5555 FontDescriptionRun fontDescriptionRun05;
5556 fontDescriptionRun05.characterRun.characterIndex = 48u;
5557 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5558 fontDescriptionRun05.familyLength = fontLatin.size();
5559 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5560 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5561 fontDescriptionRun05.familyDefined = true;
5562 fontDescriptionRun05.weightDefined = false;
5563 fontDescriptionRun05.widthDefined = false;
5564 fontDescriptionRun05.slantDefined = false;
5565 fontDescriptionRun05.sizeDefined = false;
5567 FontDescriptionRun fontDescriptionRun06;
5568 fontDescriptionRun06.characterRun.characterIndex = 60u;
5569 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5570 fontDescriptionRun06.familyLength = fontArabic.size();
5571 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5572 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5573 fontDescriptionRun06.familyDefined = true;
5574 fontDescriptionRun06.weightDefined = false;
5575 fontDescriptionRun06.widthDefined = false;
5576 fontDescriptionRun06.slantDefined = false;
5577 fontDescriptionRun06.sizeDefined = false;
5579 Vector<FontDescriptionRun> fontDescriptionRuns;
5580 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5581 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5582 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5583 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5584 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5585 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5587 float positions[] = {0.f, 0.f, 14.f, 9.f, 0.f, 0.f};
5589 Size textArea(100.f, 300.f);
5592 "Center alignment for the mid paragraph.",
5593 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5596 fontDescriptionRuns.Begin(),
5597 Text::HorizontalAlignment::CENTER,
5598 Text::VerticalAlignment::TOP,
5603 Dali::LayoutDirection::LEFT_TO_RIGHT,
5606 if(!AlignTest(data))
5608 tet_result(TET_FAIL);
5611 tet_result(TET_PASS);
5615 int UtcDaliTextAlign06(void)
5617 ToolkitTestApplication application;
5618 tet_infoline(" UtcDaliTextAlign06");
5620 // Calculate text alignment.
5622 const std::string fontLatin("TizenSans");
5623 const std::string fontHebrew("TizenSansHebrew");
5624 const std::string fontArabic("TizenSansArabic");
5626 // Set a known font description
5627 FontDescriptionRun fontDescriptionRun01;
5628 fontDescriptionRun01.characterRun.characterIndex = 0u;
5629 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5630 fontDescriptionRun01.familyLength = fontLatin.size();
5631 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5632 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5633 fontDescriptionRun01.familyDefined = true;
5634 fontDescriptionRun01.weightDefined = false;
5635 fontDescriptionRun01.widthDefined = false;
5636 fontDescriptionRun01.slantDefined = false;
5637 fontDescriptionRun01.sizeDefined = false;
5639 FontDescriptionRun fontDescriptionRun02;
5640 fontDescriptionRun02.characterRun.characterIndex = 12u;
5641 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5642 fontDescriptionRun02.familyLength = fontHebrew.size();
5643 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5644 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5645 fontDescriptionRun02.familyDefined = true;
5646 fontDescriptionRun02.weightDefined = false;
5647 fontDescriptionRun02.widthDefined = false;
5648 fontDescriptionRun02.slantDefined = false;
5649 fontDescriptionRun02.sizeDefined = false;
5651 FontDescriptionRun fontDescriptionRun03;
5652 fontDescriptionRun03.characterRun.characterIndex = 22u;
5653 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5654 fontDescriptionRun03.familyLength = fontArabic.size();
5655 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5656 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5657 fontDescriptionRun03.familyDefined = true;
5658 fontDescriptionRun03.weightDefined = false;
5659 fontDescriptionRun03.widthDefined = false;
5660 fontDescriptionRun03.slantDefined = false;
5661 fontDescriptionRun03.sizeDefined = false;
5663 FontDescriptionRun fontDescriptionRun04;
5664 fontDescriptionRun04.characterRun.characterIndex = 36u;
5665 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5666 fontDescriptionRun04.familyLength = fontLatin.size();
5667 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5668 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5669 fontDescriptionRun04.familyDefined = true;
5670 fontDescriptionRun04.weightDefined = false;
5671 fontDescriptionRun04.widthDefined = false;
5672 fontDescriptionRun04.slantDefined = false;
5673 fontDescriptionRun04.sizeDefined = false;
5675 FontDescriptionRun fontDescriptionRun05;
5676 fontDescriptionRun05.characterRun.characterIndex = 48u;
5677 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5678 fontDescriptionRun05.familyLength = fontLatin.size();
5679 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5680 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5681 fontDescriptionRun05.familyDefined = true;
5682 fontDescriptionRun05.weightDefined = false;
5683 fontDescriptionRun05.widthDefined = false;
5684 fontDescriptionRun05.slantDefined = false;
5685 fontDescriptionRun05.sizeDefined = false;
5687 FontDescriptionRun fontDescriptionRun06;
5688 fontDescriptionRun06.characterRun.characterIndex = 60u;
5689 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5690 fontDescriptionRun06.familyLength = fontArabic.size();
5691 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5692 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5693 fontDescriptionRun06.familyDefined = true;
5694 fontDescriptionRun06.weightDefined = false;
5695 fontDescriptionRun06.widthDefined = false;
5696 fontDescriptionRun06.slantDefined = false;
5697 fontDescriptionRun06.sizeDefined = false;
5699 Vector<FontDescriptionRun> fontDescriptionRuns;
5700 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5701 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5702 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5703 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5704 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5705 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5707 float positions[] = {0.f, 0.f, 0.f, 0.f, 9.f, 16.f};
5709 Size textArea(100.f, 300.f);
5712 "Center alignment for the last paragraph.",
5713 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5716 fontDescriptionRuns.Begin(),
5717 Text::HorizontalAlignment::CENTER,
5718 Text::VerticalAlignment::TOP,
5723 Dali::LayoutDirection::LEFT_TO_RIGHT,
5726 if(!AlignTest(data))
5728 tet_result(TET_FAIL);
5731 tet_result(TET_PASS);
5735 int UtcDaliTextAlign07(void)
5737 ToolkitTestApplication application;
5738 tet_infoline(" UtcDaliTextAlign07");
5740 // Calculate text alignment.
5742 const std::string fontLatin("TizenSans");
5743 const std::string fontHebrew("TizenSansHebrew");
5744 const std::string fontArabic("TizenSansArabic");
5746 // Set a known font description
5747 FontDescriptionRun fontDescriptionRun01;
5748 fontDescriptionRun01.characterRun.characterIndex = 0u;
5749 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5750 fontDescriptionRun01.familyLength = fontLatin.size();
5751 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5752 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5753 fontDescriptionRun01.familyDefined = true;
5754 fontDescriptionRun01.weightDefined = false;
5755 fontDescriptionRun01.widthDefined = false;
5756 fontDescriptionRun01.slantDefined = false;
5757 fontDescriptionRun01.sizeDefined = false;
5759 FontDescriptionRun fontDescriptionRun02;
5760 fontDescriptionRun02.characterRun.characterIndex = 12u;
5761 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5762 fontDescriptionRun02.familyLength = fontHebrew.size();
5763 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5764 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5765 fontDescriptionRun02.familyDefined = true;
5766 fontDescriptionRun02.weightDefined = false;
5767 fontDescriptionRun02.widthDefined = false;
5768 fontDescriptionRun02.slantDefined = false;
5769 fontDescriptionRun02.sizeDefined = false;
5771 FontDescriptionRun fontDescriptionRun03;
5772 fontDescriptionRun03.characterRun.characterIndex = 22u;
5773 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5774 fontDescriptionRun03.familyLength = fontArabic.size();
5775 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5776 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5777 fontDescriptionRun03.familyDefined = true;
5778 fontDescriptionRun03.weightDefined = false;
5779 fontDescriptionRun03.widthDefined = false;
5780 fontDescriptionRun03.slantDefined = false;
5781 fontDescriptionRun03.sizeDefined = false;
5783 FontDescriptionRun fontDescriptionRun04;
5784 fontDescriptionRun04.characterRun.characterIndex = 36u;
5785 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5786 fontDescriptionRun04.familyLength = fontLatin.size();
5787 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5788 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5789 fontDescriptionRun04.familyDefined = true;
5790 fontDescriptionRun04.weightDefined = false;
5791 fontDescriptionRun04.widthDefined = false;
5792 fontDescriptionRun04.slantDefined = false;
5793 fontDescriptionRun04.sizeDefined = false;
5795 FontDescriptionRun fontDescriptionRun05;
5796 fontDescriptionRun05.characterRun.characterIndex = 48u;
5797 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5798 fontDescriptionRun05.familyLength = fontLatin.size();
5799 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5800 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5801 fontDescriptionRun05.familyDefined = true;
5802 fontDescriptionRun05.weightDefined = false;
5803 fontDescriptionRun05.widthDefined = false;
5804 fontDescriptionRun05.slantDefined = false;
5805 fontDescriptionRun05.sizeDefined = false;
5807 FontDescriptionRun fontDescriptionRun06;
5808 fontDescriptionRun06.characterRun.characterIndex = 60u;
5809 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5810 fontDescriptionRun06.familyLength = fontArabic.size();
5811 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5812 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5813 fontDescriptionRun06.familyDefined = true;
5814 fontDescriptionRun06.weightDefined = false;
5815 fontDescriptionRun06.widthDefined = false;
5816 fontDescriptionRun06.slantDefined = false;
5817 fontDescriptionRun06.sizeDefined = false;
5819 Vector<FontDescriptionRun> fontDescriptionRuns;
5820 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5821 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5822 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5823 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5824 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5825 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5827 float positions[] = {19.f, 30.f, 0.f, 0.f, 0.f, 0.f};
5829 Size textArea(100.f, 300.f);
5832 "End alignment for the first paragraph.",
5833 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5836 fontDescriptionRuns.Begin(),
5837 Text::HorizontalAlignment::END,
5838 Text::VerticalAlignment::TOP,
5843 Dali::LayoutDirection::LEFT_TO_RIGHT,
5846 if(!AlignTest(data))
5848 tet_result(TET_FAIL);
5851 tet_result(TET_PASS);
5855 int UtcDaliTextAlign08(void)
5857 ToolkitTestApplication application;
5858 tet_infoline(" UtcDaliTextAlign08");
5860 // Calculate text alignment.
5862 const std::string fontLatin("TizenSans");
5863 const std::string fontHebrew("TizenSansHebrew");
5864 const std::string fontArabic("TizenSansArabic");
5866 // Set a known font description
5867 FontDescriptionRun fontDescriptionRun01;
5868 fontDescriptionRun01.characterRun.characterIndex = 0u;
5869 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5870 fontDescriptionRun01.familyLength = fontLatin.size();
5871 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5872 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5873 fontDescriptionRun01.familyDefined = true;
5874 fontDescriptionRun01.weightDefined = false;
5875 fontDescriptionRun01.widthDefined = false;
5876 fontDescriptionRun01.slantDefined = false;
5877 fontDescriptionRun01.sizeDefined = false;
5879 FontDescriptionRun fontDescriptionRun02;
5880 fontDescriptionRun02.characterRun.characterIndex = 12u;
5881 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5882 fontDescriptionRun02.familyLength = fontHebrew.size();
5883 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5884 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5885 fontDescriptionRun02.familyDefined = true;
5886 fontDescriptionRun02.weightDefined = false;
5887 fontDescriptionRun02.widthDefined = false;
5888 fontDescriptionRun02.slantDefined = false;
5889 fontDescriptionRun02.sizeDefined = false;
5891 FontDescriptionRun fontDescriptionRun03;
5892 fontDescriptionRun03.characterRun.characterIndex = 22u;
5893 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5894 fontDescriptionRun03.familyLength = fontArabic.size();
5895 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5896 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5897 fontDescriptionRun03.familyDefined = true;
5898 fontDescriptionRun03.weightDefined = false;
5899 fontDescriptionRun03.widthDefined = false;
5900 fontDescriptionRun03.slantDefined = false;
5901 fontDescriptionRun03.sizeDefined = false;
5903 FontDescriptionRun fontDescriptionRun04;
5904 fontDescriptionRun04.characterRun.characterIndex = 36u;
5905 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5906 fontDescriptionRun04.familyLength = fontLatin.size();
5907 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5908 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5909 fontDescriptionRun04.familyDefined = true;
5910 fontDescriptionRun04.weightDefined = false;
5911 fontDescriptionRun04.widthDefined = false;
5912 fontDescriptionRun04.slantDefined = false;
5913 fontDescriptionRun04.sizeDefined = false;
5915 FontDescriptionRun fontDescriptionRun05;
5916 fontDescriptionRun05.characterRun.characterIndex = 48u;
5917 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5918 fontDescriptionRun05.familyLength = fontLatin.size();
5919 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5920 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5921 fontDescriptionRun05.familyDefined = true;
5922 fontDescriptionRun05.weightDefined = false;
5923 fontDescriptionRun05.widthDefined = false;
5924 fontDescriptionRun05.slantDefined = false;
5925 fontDescriptionRun05.sizeDefined = false;
5927 FontDescriptionRun fontDescriptionRun06;
5928 fontDescriptionRun06.characterRun.characterIndex = 60u;
5929 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5930 fontDescriptionRun06.familyLength = fontArabic.size();
5931 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5932 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5933 fontDescriptionRun06.familyDefined = true;
5934 fontDescriptionRun06.weightDefined = false;
5935 fontDescriptionRun06.widthDefined = false;
5936 fontDescriptionRun06.slantDefined = false;
5937 fontDescriptionRun06.sizeDefined = false;
5939 Vector<FontDescriptionRun> fontDescriptionRuns;
5940 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5941 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5942 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5943 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5944 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5945 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5947 float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f};
5949 Size textArea(100.f, 300.f);
5952 "End alignment for the mid paragraph.",
5953 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5956 fontDescriptionRuns.Begin(),
5957 Text::HorizontalAlignment::END,
5958 Text::VerticalAlignment::TOP,
5963 Dali::LayoutDirection::LEFT_TO_RIGHT,
5966 if(!AlignTest(data))
5968 tet_result(TET_FAIL);
5971 tet_result(TET_PASS);
5975 int UtcDaliTextAlign09(void)
5977 ToolkitTestApplication application;
5978 tet_infoline(" UtcDaliTextAlign09");
5980 // Calculate text alignment.
5982 const std::string fontLatin("TizenSans");
5983 const std::string fontHebrew("TizenSansHebrew");
5984 const std::string fontArabic("TizenSansArabic");
5986 // Set a known font description
5987 FontDescriptionRun fontDescriptionRun01;
5988 fontDescriptionRun01.characterRun.characterIndex = 0u;
5989 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5990 fontDescriptionRun01.familyLength = fontLatin.size();
5991 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5992 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5993 fontDescriptionRun01.familyDefined = true;
5994 fontDescriptionRun01.weightDefined = false;
5995 fontDescriptionRun01.widthDefined = false;
5996 fontDescriptionRun01.slantDefined = false;
5997 fontDescriptionRun01.sizeDefined = false;
5999 FontDescriptionRun fontDescriptionRun02;
6000 fontDescriptionRun02.characterRun.characterIndex = 12u;
6001 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6002 fontDescriptionRun02.familyLength = fontHebrew.size();
6003 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6004 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6005 fontDescriptionRun02.familyDefined = true;
6006 fontDescriptionRun02.weightDefined = false;
6007 fontDescriptionRun02.widthDefined = false;
6008 fontDescriptionRun02.slantDefined = false;
6009 fontDescriptionRun02.sizeDefined = false;
6011 FontDescriptionRun fontDescriptionRun03;
6012 fontDescriptionRun03.characterRun.characterIndex = 22u;
6013 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6014 fontDescriptionRun03.familyLength = fontArabic.size();
6015 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6016 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6017 fontDescriptionRun03.familyDefined = true;
6018 fontDescriptionRun03.weightDefined = false;
6019 fontDescriptionRun03.widthDefined = false;
6020 fontDescriptionRun03.slantDefined = false;
6021 fontDescriptionRun03.sizeDefined = false;
6023 FontDescriptionRun fontDescriptionRun04;
6024 fontDescriptionRun04.characterRun.characterIndex = 36u;
6025 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6026 fontDescriptionRun04.familyLength = fontLatin.size();
6027 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6028 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6029 fontDescriptionRun04.familyDefined = true;
6030 fontDescriptionRun04.weightDefined = false;
6031 fontDescriptionRun04.widthDefined = false;
6032 fontDescriptionRun04.slantDefined = false;
6033 fontDescriptionRun04.sizeDefined = false;
6035 FontDescriptionRun fontDescriptionRun05;
6036 fontDescriptionRun05.characterRun.characterIndex = 48u;
6037 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6038 fontDescriptionRun05.familyLength = fontLatin.size();
6039 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6040 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6041 fontDescriptionRun05.familyDefined = true;
6042 fontDescriptionRun05.weightDefined = false;
6043 fontDescriptionRun05.widthDefined = false;
6044 fontDescriptionRun05.slantDefined = false;
6045 fontDescriptionRun05.sizeDefined = false;
6047 FontDescriptionRun fontDescriptionRun06;
6048 fontDescriptionRun06.characterRun.characterIndex = 60u;
6049 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6050 fontDescriptionRun06.familyLength = fontArabic.size();
6051 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6052 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6053 fontDescriptionRun06.familyDefined = true;
6054 fontDescriptionRun06.weightDefined = false;
6055 fontDescriptionRun06.widthDefined = false;
6056 fontDescriptionRun06.slantDefined = false;
6057 fontDescriptionRun06.sizeDefined = false;
6059 Vector<FontDescriptionRun> fontDescriptionRuns;
6060 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6061 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6062 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6063 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6064 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6065 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6067 float positions[] = {0.f, 0.f, 0.f, 0.f, 19.f, 33.f};
6069 Size textArea(100.f, 300.f);
6072 "End alignment for the last paragraph.",
6073 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6076 fontDescriptionRuns.Begin(),
6077 Text::HorizontalAlignment::END,
6078 Text::VerticalAlignment::TOP,
6083 Dali::LayoutDirection::LEFT_TO_RIGHT,
6086 if(!AlignTest(data))
6088 tet_result(TET_FAIL);
6091 tet_result(TET_PASS);
6095 int UtcDaliTextAlign10(void)
6097 ToolkitTestApplication application;
6098 tet_infoline(" UtcDaliTextAlign10");
6100 // Calculate text alignment.
6102 const std::string fontLatin("TizenSans");
6103 const std::string fontHebrew("TizenSansHebrew");
6104 const std::string fontArabic("TizenSansArabic");
6106 // Set a known font description
6107 FontDescriptionRun fontDescriptionRun01;
6108 fontDescriptionRun01.characterRun.characterIndex = 0u;
6109 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6110 fontDescriptionRun01.familyLength = fontLatin.size();
6111 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6112 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6113 fontDescriptionRun01.familyDefined = true;
6114 fontDescriptionRun01.weightDefined = false;
6115 fontDescriptionRun01.widthDefined = false;
6116 fontDescriptionRun01.slantDefined = false;
6117 fontDescriptionRun01.sizeDefined = false;
6119 FontDescriptionRun fontDescriptionRun02;
6120 fontDescriptionRun02.characterRun.characterIndex = 12u;
6121 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6122 fontDescriptionRun02.familyLength = fontHebrew.size();
6123 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6124 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6125 fontDescriptionRun02.familyDefined = true;
6126 fontDescriptionRun02.weightDefined = false;
6127 fontDescriptionRun02.widthDefined = false;
6128 fontDescriptionRun02.slantDefined = false;
6129 fontDescriptionRun02.sizeDefined = false;
6131 FontDescriptionRun fontDescriptionRun03;
6132 fontDescriptionRun03.characterRun.characterIndex = 22u;
6133 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6134 fontDescriptionRun03.familyLength = fontArabic.size();
6135 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6136 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6137 fontDescriptionRun03.familyDefined = true;
6138 fontDescriptionRun03.weightDefined = false;
6139 fontDescriptionRun03.widthDefined = false;
6140 fontDescriptionRun03.slantDefined = false;
6141 fontDescriptionRun03.sizeDefined = false;
6143 FontDescriptionRun fontDescriptionRun04;
6144 fontDescriptionRun04.characterRun.characterIndex = 36u;
6145 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6146 fontDescriptionRun04.familyLength = fontLatin.size();
6147 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6148 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6149 fontDescriptionRun04.familyDefined = true;
6150 fontDescriptionRun04.weightDefined = false;
6151 fontDescriptionRun04.widthDefined = false;
6152 fontDescriptionRun04.slantDefined = false;
6153 fontDescriptionRun04.sizeDefined = false;
6155 FontDescriptionRun fontDescriptionRun05;
6156 fontDescriptionRun05.characterRun.characterIndex = 48u;
6157 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6158 fontDescriptionRun05.familyLength = fontLatin.size();
6159 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6160 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6161 fontDescriptionRun05.familyDefined = true;
6162 fontDescriptionRun05.weightDefined = false;
6163 fontDescriptionRun05.widthDefined = false;
6164 fontDescriptionRun05.slantDefined = false;
6165 fontDescriptionRun05.sizeDefined = false;
6167 FontDescriptionRun fontDescriptionRun06;
6168 fontDescriptionRun06.characterRun.characterIndex = 60u;
6169 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6170 fontDescriptionRun06.familyLength = fontArabic.size();
6171 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6172 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6173 fontDescriptionRun06.familyDefined = true;
6174 fontDescriptionRun06.weightDefined = false;
6175 fontDescriptionRun06.widthDefined = false;
6176 fontDescriptionRun06.slantDefined = false;
6177 fontDescriptionRun06.sizeDefined = false;
6179 Vector<FontDescriptionRun> fontDescriptionRuns;
6180 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6181 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6182 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6183 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6184 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6185 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6187 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6189 Size textArea(100.f, 300.f);
6192 "Begin alignment for the first paragraph.",
6193 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6196 fontDescriptionRuns.Begin(),
6197 Text::HorizontalAlignment::END,
6198 Text::VerticalAlignment::TOP,
6203 Dali::LayoutDirection::RIGHT_TO_LEFT,
6206 if(!AlignTest(data))
6208 tet_result(TET_FAIL);
6211 tet_result(TET_PASS);
6215 int UtcDaliTextAlign11(void)
6217 ToolkitTestApplication application;
6218 tet_infoline(" UtcDaliTextAlign11");
6220 // Calculate text alignment.
6222 const std::string fontLatin("TizenSans");
6223 const std::string fontHebrew("TizenSansHebrew");
6224 const std::string fontArabic("TizenSansArabic");
6226 // Set a known font description
6227 FontDescriptionRun fontDescriptionRun01;
6228 fontDescriptionRun01.characterRun.characterIndex = 0u;
6229 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6230 fontDescriptionRun01.familyLength = fontLatin.size();
6231 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6232 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6233 fontDescriptionRun01.familyDefined = true;
6234 fontDescriptionRun01.weightDefined = false;
6235 fontDescriptionRun01.widthDefined = false;
6236 fontDescriptionRun01.slantDefined = false;
6237 fontDescriptionRun01.sizeDefined = false;
6239 FontDescriptionRun fontDescriptionRun02;
6240 fontDescriptionRun02.characterRun.characterIndex = 12u;
6241 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6242 fontDescriptionRun02.familyLength = fontHebrew.size();
6243 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6244 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6245 fontDescriptionRun02.familyDefined = true;
6246 fontDescriptionRun02.weightDefined = false;
6247 fontDescriptionRun02.widthDefined = false;
6248 fontDescriptionRun02.slantDefined = false;
6249 fontDescriptionRun02.sizeDefined = false;
6251 FontDescriptionRun fontDescriptionRun03;
6252 fontDescriptionRun03.characterRun.characterIndex = 22u;
6253 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6254 fontDescriptionRun03.familyLength = fontArabic.size();
6255 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6256 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6257 fontDescriptionRun03.familyDefined = true;
6258 fontDescriptionRun03.weightDefined = false;
6259 fontDescriptionRun03.widthDefined = false;
6260 fontDescriptionRun03.slantDefined = false;
6261 fontDescriptionRun03.sizeDefined = false;
6263 FontDescriptionRun fontDescriptionRun04;
6264 fontDescriptionRun04.characterRun.characterIndex = 36u;
6265 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6266 fontDescriptionRun04.familyLength = fontLatin.size();
6267 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6268 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6269 fontDescriptionRun04.familyDefined = true;
6270 fontDescriptionRun04.weightDefined = false;
6271 fontDescriptionRun04.widthDefined = false;
6272 fontDescriptionRun04.slantDefined = false;
6273 fontDescriptionRun04.sizeDefined = false;
6275 FontDescriptionRun fontDescriptionRun05;
6276 fontDescriptionRun05.characterRun.characterIndex = 48u;
6277 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6278 fontDescriptionRun05.familyLength = fontLatin.size();
6279 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6280 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6281 fontDescriptionRun05.familyDefined = true;
6282 fontDescriptionRun05.weightDefined = false;
6283 fontDescriptionRun05.widthDefined = false;
6284 fontDescriptionRun05.slantDefined = false;
6285 fontDescriptionRun05.sizeDefined = false;
6287 FontDescriptionRun fontDescriptionRun06;
6288 fontDescriptionRun06.characterRun.characterIndex = 60u;
6289 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6290 fontDescriptionRun06.familyLength = fontArabic.size();
6291 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6292 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6293 fontDescriptionRun06.familyDefined = true;
6294 fontDescriptionRun06.weightDefined = false;
6295 fontDescriptionRun06.widthDefined = false;
6296 fontDescriptionRun06.slantDefined = false;
6297 fontDescriptionRun06.sizeDefined = false;
6299 Vector<FontDescriptionRun> fontDescriptionRuns;
6300 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6301 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6302 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6303 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6304 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6305 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6307 float positions[] = {19.f, 30.f, 33.f, 0.f, 0.f, 0.f};
6309 Size textArea(100.f, 300.f);
6312 "End alignment for the last paragraph.",
6313 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6316 fontDescriptionRuns.Begin(),
6317 Text::HorizontalAlignment::END,
6318 Text::VerticalAlignment::TOP,
6323 Dali::LayoutDirection::LEFT_TO_RIGHT,
6326 if(!AlignTest(data))
6328 tet_result(TET_FAIL);
6331 tet_result(TET_PASS);
6335 int UtcDaliTextAlign12(void)
6337 ToolkitTestApplication application;
6338 tet_infoline(" UtcDaliTextAlign12");
6340 // Calculate text alignment.
6342 const std::string fontLatin("TizenSans");
6343 const std::string fontHebrew("TizenSansHebrew");
6344 const std::string fontArabic("TizenSansArabic");
6346 // Set a known font description
6347 FontDescriptionRun fontDescriptionRun01;
6348 fontDescriptionRun01.characterRun.characterIndex = 0u;
6349 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6350 fontDescriptionRun01.familyLength = fontLatin.size();
6351 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6352 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6353 fontDescriptionRun01.familyDefined = true;
6354 fontDescriptionRun01.weightDefined = false;
6355 fontDescriptionRun01.widthDefined = false;
6356 fontDescriptionRun01.slantDefined = false;
6357 fontDescriptionRun01.sizeDefined = false;
6359 FontDescriptionRun fontDescriptionRun02;
6360 fontDescriptionRun02.characterRun.characterIndex = 12u;
6361 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6362 fontDescriptionRun02.familyLength = fontHebrew.size();
6363 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6364 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6365 fontDescriptionRun02.familyDefined = true;
6366 fontDescriptionRun02.weightDefined = false;
6367 fontDescriptionRun02.widthDefined = false;
6368 fontDescriptionRun02.slantDefined = false;
6369 fontDescriptionRun02.sizeDefined = false;
6371 FontDescriptionRun fontDescriptionRun03;
6372 fontDescriptionRun03.characterRun.characterIndex = 22u;
6373 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6374 fontDescriptionRun03.familyLength = fontArabic.size();
6375 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6376 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6377 fontDescriptionRun03.familyDefined = true;
6378 fontDescriptionRun03.weightDefined = false;
6379 fontDescriptionRun03.widthDefined = false;
6380 fontDescriptionRun03.slantDefined = false;
6381 fontDescriptionRun03.sizeDefined = false;
6383 FontDescriptionRun fontDescriptionRun04;
6384 fontDescriptionRun04.characterRun.characterIndex = 36u;
6385 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6386 fontDescriptionRun04.familyLength = fontLatin.size();
6387 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6388 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6389 fontDescriptionRun04.familyDefined = true;
6390 fontDescriptionRun04.weightDefined = false;
6391 fontDescriptionRun04.widthDefined = false;
6392 fontDescriptionRun04.slantDefined = false;
6393 fontDescriptionRun04.sizeDefined = false;
6395 FontDescriptionRun fontDescriptionRun05;
6396 fontDescriptionRun05.characterRun.characterIndex = 48u;
6397 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6398 fontDescriptionRun05.familyLength = fontLatin.size();
6399 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6400 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6401 fontDescriptionRun05.familyDefined = true;
6402 fontDescriptionRun05.weightDefined = false;
6403 fontDescriptionRun05.widthDefined = false;
6404 fontDescriptionRun05.slantDefined = false;
6405 fontDescriptionRun05.sizeDefined = false;
6407 FontDescriptionRun fontDescriptionRun06;
6408 fontDescriptionRun06.characterRun.characterIndex = 60u;
6409 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6410 fontDescriptionRun06.familyLength = fontArabic.size();
6411 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6412 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6413 fontDescriptionRun06.familyDefined = true;
6414 fontDescriptionRun06.weightDefined = false;
6415 fontDescriptionRun06.widthDefined = false;
6416 fontDescriptionRun06.slantDefined = false;
6417 fontDescriptionRun06.sizeDefined = false;
6419 Vector<FontDescriptionRun> fontDescriptionRuns;
6420 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6421 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6422 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6423 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6424 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6425 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6427 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6429 Size textArea(100.f, 300.f);
6432 "Begin alignment for the first paragraph.",
6433 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6436 fontDescriptionRuns.Begin(),
6437 Text::HorizontalAlignment::BEGIN,
6438 Text::VerticalAlignment::TOP,
6443 Dali::LayoutDirection::LEFT_TO_RIGHT,
6446 if(!AlignTest(data))
6448 tet_result(TET_FAIL);
6451 tet_result(TET_PASS);
6455 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
6457 ToolkitTestApplication application;
6458 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
6460 Layout::Engine engine;
6461 DALI_TEST_EQUALS(0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6463 engine.SetDefaultLineSpacing(10.f);
6464 DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6466 tet_result(TET_PASS);
6470 int UtcDaliTextLayoutGetGlyphMetrics(void)
6472 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
6474 // Test retrieving metrics from group of characters
6476 const std::string fontFamily("TizenSansHindi");
6478 // Set a known font description
6479 FontDescriptionRun fontDescriptionRun01;
6480 fontDescriptionRun01.characterRun.characterIndex = 0u;
6481 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
6482 fontDescriptionRun01.familyLength = fontFamily.size();
6483 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6484 memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
6485 fontDescriptionRun01.familyDefined = true;
6486 fontDescriptionRun01.weightDefined = false;
6487 fontDescriptionRun01.widthDefined = false;
6488 fontDescriptionRun01.slantDefined = false;
6489 fontDescriptionRun01.sizeDefined = false;
6491 // Set a known font description
6492 FontDescriptionRun fontDescriptionRun02;
6493 fontDescriptionRun02.characterRun.characterIndex = 0u;
6494 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
6495 fontDescriptionRun02.familyLength = fontFamily.size();
6496 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6497 memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
6498 fontDescriptionRun02.familyDefined = true;
6499 fontDescriptionRun02.weightDefined = false;
6500 fontDescriptionRun02.widthDefined = false;
6501 fontDescriptionRun02.slantDefined = false;
6502 fontDescriptionRun02.sizeDefined = false;
6504 // Set a known font description
6505 FontDescriptionRun fontDescriptionRun03;
6506 fontDescriptionRun03.characterRun.characterIndex = 0u;
6507 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
6508 fontDescriptionRun03.familyLength = fontFamily.size();
6509 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6510 memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
6511 fontDescriptionRun03.familyDefined = true;
6512 fontDescriptionRun03.weightDefined = false;
6513 fontDescriptionRun03.widthDefined = false;
6514 fontDescriptionRun03.slantDefined = false;
6515 fontDescriptionRun03.sizeDefined = false;
6517 Vector<FontDescriptionRun> fontDescriptionRuns01;
6518 fontDescriptionRuns01.PushBack(fontDescriptionRun01);
6520 Vector<FontDescriptionRun> fontDescriptionRuns02;
6521 fontDescriptionRuns02.PushBack(fontDescriptionRun02);
6523 Vector<FontDescriptionRun> fontDescriptionRuns03;
6524 fontDescriptionRuns03.PushBack(fontDescriptionRun03);
6527 Size textArea(100.f, 100.f);
6529 // Group: second glyph doesn't exceed the width of the first glyph
6530 float positions01[] = {0.f, -11.f};
6532 struct LineRun line01 =
6544 Vector<LineRun> lines01;
6545 lines01.PushBack(line01);
6547 Size layoutSize01 = Vector2(11.f, 20.f);
6549 // Group: second glyph doesn't exceed the width of the first glyph
6550 float positions02[] = {
6557 struct LineRun line02 =
6569 Vector<LineRun> lines02;
6570 lines02.PushBack(line02);
6572 Size layoutSize02 = Vector2(16.f, 20.f);
6574 // Group: second glyph doesn't exceed the width of the first glyph
6575 float positions03[] = {0.f, -11.f, 2.f, -15.f};
6577 struct LineRun line03 =
6589 Vector<LineRun> lines03;
6590 lines03.PushBack(line03);
6592 Size layoutSize03 = Vector2(11.f, 20.f);
6594 /////////////////////////////
6596 struct LayoutTextData data[] =
6602 fontDescriptionRuns01.Begin(),
6608 Layout::Engine::SINGLE_LINE_BOX,
6612 DevelText::EllipsisPosition::END,
6614 {"Group: second glyph exceeds the width of the first glyph",
6618 fontDescriptionRuns02.Begin(),
6624 Layout::Engine::SINGLE_LINE_BOX,
6628 DevelText::EllipsisPosition::END,
6630 {"Group: second glyph doesn't exceed the width of the first glyph",
6634 fontDescriptionRuns03.Begin(),
6640 Layout::Engine::SINGLE_LINE_BOX,
6644 DevelText::EllipsisPosition::END,
6646 const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData);
6648 for(unsigned int index = 0u; index < numberOfTests; ++index)
6650 ToolkitTestApplication application;
6651 if(!LayoutTextTest(data[index]))
6653 tet_result(TET_FAIL);
6657 tet_result(TET_PASS);