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 bool isHiddenInputEnabled = false;
186 const bool updated = engine.LayoutText(layoutParameters,
190 isAutoScrollMaxTextureExceeded,
191 isHiddenInputEnabled,
192 data.ellipsisPosition);
194 // 4) Compare the results.
196 if(updated != data.updated)
198 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
202 if(layoutSize != data.layoutSize)
204 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
208 for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index)
210 const Vector2& position = *(glyphPositions.Begin() + index);
212 if(fabsf(std::round(position.x) - *(data.positions + 2u * index)) > Math::MACHINE_EPSILON_1000)
214 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl;
217 if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000)
219 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl;
224 if(lines.Count() != data.numberOfLines)
226 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
230 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
232 const LineRun& line = *(lines.Begin() + index);
233 const LineRun& expectedLine = *(data.lines + index);
235 if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex)
237 std::cout << " Different line info for line : " << index << std::endl;
239 std::cout << " expected" << std::endl;
243 if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs)
245 std::cout << " Different line info for line : " << index << std::endl;
247 std::cout << " expected" << std::endl;
252 if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
254 std::cout << " Different line info for line : " << index << std::endl;
256 std::cout << " expected" << std::endl;
260 if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
262 std::cout << " Different line info for line : " << index << std::endl;
264 std::cout << " expected" << std::endl;
269 if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1)
271 std::cout << " Different line info for line : " << index << std::endl;
273 std::cout << " expected" << std::endl;
278 if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1)
280 std::cout << " Different line info for line : " << index << std::endl;
282 std::cout << " expected" << std::endl;
287 if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1)
289 std::cout << " Different line info for line : " << index << std::endl;
291 std::cout << " expected" << std::endl;
296 if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1)
298 std::cout << " Different line info for line : " << index << std::endl;
300 std::cout << " expected" << std::endl;
305 if(line.ellipsis != expectedLine.ellipsis)
307 std::cout << " Different line info for line : " << index << std::endl;
309 std::cout << " expected" << std::endl;
313 // Do not compare the alignment offset as it's not calculated in the layout.
314 // Do not compare the line direction as it's not set in the layout.
320 //////////////////////////////////////////////////////////
324 std::string description;
327 unsigned int numberOfFonts;
328 FontDescriptionRun* fontDescriptions;
329 Text::HorizontalAlignment::Type horizontalAlignment;
330 Text::VerticalAlignment::Type verticalAlignment;
331 unsigned int startIndex;
332 unsigned int numberOfCharacters;
333 unsigned int numberOfLines;
335 Dali::LayoutDirection::Type layoutDirection;
336 bool matchSystemLanguageDirection;
339 bool AlignTest(const AlignData& data)
342 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
343 fontClient.SetDpi(96u, 96u);
345 char* pathNamePtr = get_current_dir_name();
346 const std::string pathName(pathNamePtr);
349 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
350 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
351 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
353 // 1) Create the model.
358 Vector<FontDescriptionRun> fontDescriptionRuns;
359 if(0u != data.numberOfFonts)
361 fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
362 data.fontDescriptions,
363 data.fontDescriptions + data.numberOfFonts);
366 LayoutOptions options;
367 options.align = false;
368 CreateTextModel(data.text,
378 Toolkit::DevelText::EllipsisPosition::END,
380 0.0f // characterSpacing
383 LogicalModelPtr logicalModel = textModel->mLogicalModel;
384 VisualModelPtr visualModel = textModel->mVisualModel;
386 // Call the Align method.
387 Layout::Engine engine;
388 engine.SetMetrics(metrics);
390 float alignmentOffset = 0.f;
391 engine.Align(data.textArea,
393 data.numberOfCharacters,
394 data.horizontalAlignment,
397 data.layoutDirection,
398 data.matchSystemLanguageDirection);
401 if(data.numberOfLines != visualModel->mLines.Count())
403 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
407 const LineRun* const linesBuffer = visualModel->mLines.Begin();
408 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
410 const LineRun& line = *(linesBuffer + index);
412 if(line.alignmentOffset != *(data.lineOffsets + index))
414 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl;
423 //////////////////////////////////////////////////////////
425 // UtcDaliTextLayoutSetGetLayout
426 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
427 // UtcDaliTextLayoutSetGetHorizontalAlignment
428 // UtcDaliTextLayoutSetGetVerticalAlignment
429 // UtcDaliTextLayoutSetGetCursorWidth
430 // UtcDaliTextLayoutNoText
431 // UtcDaliTextLayoutSmallTextArea01
432 // UtcDaliTextLayoutSmallTextArea02
433 // UtcDaliTextLayoutMultilineText01
434 // UtcDaliTextLayoutMultilineText02
435 // UtcDaliTextLayoutMultilineText03
436 // UtcDaliTextLayoutMultilineText04
437 // UtcDaliTextLayoutMultilineText05
438 // UtcDaliTextLayoutMultilineText06
439 // UtcDaliTextUpdateLayout01
440 // UtcDaliTextUpdateLayout02
441 // UtcDaliTextUpdateLayout03
442 // UtcDaliTextLayoutEllipsis01
443 // UtcDaliTextLayoutEllipsis02
444 // UtcDaliTextLayoutEllipsis03
445 // UtcDaliTextLayoutEllipsis04
446 // UtcDaliTextLayoutEllipsis04
447 // UtcDaliTextReorderLayout01
448 // UtcDaliTextReorderLayout02
449 // UtcDaliTextReorderLayout03
450 // UtcDaliTextReorderLayout04
451 // UtcDaliTextAlign01
452 // UtcDaliTextAlign02
453 // UtcDaliTextAlign03
454 // UtcDaliTextAlign04
455 // UtcDaliTextAlign05
456 // UtcDaliTextAlign06
457 // UtcDaliTextAlign07
458 // UtcDaliTextAlign08
459 // UtcDaliTextAlign09
461 //////////////////////////////////////////////////////////
463 int UtcDaliTextLayoutSetGetLayout(void)
465 ToolkitTestApplication application;
466 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
468 Layout::Engine engine;
470 DALI_TEST_CHECK(Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout());
472 engine.SetLayout(Layout::Engine::MULTI_LINE_BOX);
473 DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout());
475 tet_result(TET_PASS);
479 int UtcDaliTextLayoutSetGetCursorWidth(void)
481 ToolkitTestApplication application;
484 Layout::Engine engine;
486 DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION);
488 engine.SetCursorWidth(2);
489 DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION);
491 tet_result(TET_PASS);
495 int UtcDaliTextLayoutNoText(void)
497 ToolkitTestApplication application;
498 tet_infoline(" UtcDaliTextLayoutNoText");
500 Size textArea(100.f, 60.f);
501 Size layoutSize = Vector2::ZERO;
502 LayoutTextData data =
514 Layout::Engine::MULTI_LINE_BOX,
518 DevelText::EllipsisPosition::END,
521 if(!LayoutTextTest(data))
523 tet_result(TET_FAIL);
526 tet_result(TET_PASS);
530 int UtcDaliTextLayoutSmallTextArea01(void)
532 ToolkitTestApplication application;
533 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
535 // Won't layout the text in multi-line if the width is too small.
537 const std::string fontFamily("TizenSans");
539 // Set a known font description
540 FontDescriptionRun fontDescriptionRun;
541 fontDescriptionRun.characterRun.characterIndex = 0u;
542 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
543 fontDescriptionRun.familyLength = fontFamily.size();
544 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
545 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
546 fontDescriptionRun.familyDefined = true;
547 fontDescriptionRun.weightDefined = false;
548 fontDescriptionRun.widthDefined = false;
549 fontDescriptionRun.slantDefined = false;
550 fontDescriptionRun.sizeDefined = false;
552 Vector<FontDescriptionRun> fontDescriptionRuns;
553 fontDescriptionRuns.PushBack(fontDescriptionRun);
554 Size textArea(1.f, 1.f);
555 Size layoutSize = Vector2::ZERO;
556 LayoutTextData data =
558 "Layout text in a small area",
562 fontDescriptionRuns.Begin(),
568 Layout::Engine::MULTI_LINE_BOX,
572 DevelText::EllipsisPosition::END,
575 if(!LayoutTextTest(data))
577 tet_result(TET_FAIL);
580 tet_result(TET_PASS);
584 int UtcDaliTextLayoutSmallTextArea02(void)
586 ToolkitTestApplication application;
587 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
589 // Will layout the text in single line as it can be scrolled.
591 const std::string fontFamily("TizenSans");
593 // Set a known font description
594 FontDescriptionRun fontDescriptionRun;
595 fontDescriptionRun.characterRun.characterIndex = 0u;
596 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
597 fontDescriptionRun.familyLength = fontFamily.size();
598 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
599 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
600 fontDescriptionRun.familyDefined = true;
601 fontDescriptionRun.weightDefined = false;
602 fontDescriptionRun.widthDefined = false;
603 fontDescriptionRun.slantDefined = false;
604 fontDescriptionRun.sizeDefined = false;
606 Vector<FontDescriptionRun> fontDescriptionRuns;
607 fontDescriptionRuns.PushBack(fontDescriptionRun);
608 Size textArea(1.f, 1.f);
609 Size layoutSize(79.f, 20.f);
610 float positions[] = {0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f};
611 struct LineRun line =
623 Vector<LineRun> lines;
624 lines.PushBack(line);
626 LayoutTextData data =
628 "Layout text in a small area",
632 fontDescriptionRuns.Begin(),
638 Layout::Engine::SINGLE_LINE_BOX,
642 DevelText::EllipsisPosition::END,
645 if(!LayoutTextTest(data))
647 tet_result(TET_FAIL);
650 tet_result(TET_PASS);
654 int UtcDaliTextLayoutMultilineText01(void)
656 ToolkitTestApplication application;
657 tet_infoline(" UtcDaliTextLayoutMultilineText01");
659 // Layout some lines of left to right text.
661 const std::string fontFamily("TizenSans");
663 // Set a known font description
664 FontDescriptionRun fontDescriptionRun1;
665 fontDescriptionRun1.characterRun.characterIndex = 0u;
666 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
667 fontDescriptionRun1.familyLength = fontFamily.size();
668 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
669 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
670 fontDescriptionRun1.familyDefined = true;
671 fontDescriptionRun1.weightDefined = false;
672 fontDescriptionRun1.widthDefined = false;
673 fontDescriptionRun1.slantDefined = false;
674 fontDescriptionRun1.sizeDefined = false;
676 FontDescriptionRun fontDescriptionRun2;
677 fontDescriptionRun2.characterRun.characterIndex = 18u;
678 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
679 fontDescriptionRun2.familyLength = fontFamily.size();
680 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
681 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
682 fontDescriptionRun2.familyDefined = true;
683 fontDescriptionRun2.weightDefined = false;
684 fontDescriptionRun2.widthDefined = false;
685 fontDescriptionRun2.slantDefined = false;
686 fontDescriptionRun2.sizeDefined = false;
688 Vector<FontDescriptionRun> fontDescriptionRuns;
689 fontDescriptionRuns.PushBack(fontDescriptionRun1);
690 fontDescriptionRuns.PushBack(fontDescriptionRun2);
691 Size textArea(100.f, 300.f);
692 Size layoutSize(96.f, 97.f);
695 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -2.f, 44.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, 14.f, -12.f, 25.f, -9.f, 36.f, -9.f, 41.f, -9.f, 52.f, -9.f, 61.f, -11.f, 67.f, -0.f, 0.f, -12.f, 4.f, -12.f, 8.f, -9.f, 17.f, -9.f, 27.f, -9.f, 35.f, -0.f, 40.f, -9.f, 50.f, -12.f, 56.f, -0.f, 61.f, -11.f, 67.f, -9.f, 77.f, -9.f, 86.f, -11.f, 93.f, -2.f
698 struct LineRun line0 =
710 struct LineRun line1 =
722 struct LineRun line2 =
734 struct LineRun line3 =
746 struct LineRun line4 =
758 Vector<LineRun> lines;
759 lines.PushBack(line0);
760 lines.PushBack(line1);
761 lines.PushBack(line2);
762 lines.PushBack(line3);
763 lines.PushBack(line4);
765 LayoutTextData data =
767 "Layout simple multi-line text",
768 "Hello world demo.\n"
769 "Layout different lines of text.",
772 fontDescriptionRuns.Begin(),
778 Layout::Engine::MULTI_LINE_BOX,
782 DevelText::EllipsisPosition::END,
785 if(!LayoutTextTest(data))
787 tet_result(TET_FAIL);
790 tet_result(TET_PASS);
794 int UtcDaliTextLayoutMultilineText02(void)
796 ToolkitTestApplication application;
797 tet_infoline(" UtcDaliTextLayoutMultilineText02");
799 // Layout some lines of bidirectional text.
801 const std::string fontFamily1("TizenSans");
803 // Set a known font description
804 FontDescriptionRun fontDescriptionRun1;
805 fontDescriptionRun1.characterRun.characterIndex = 0u;
806 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
807 fontDescriptionRun1.familyLength = fontFamily1.size();
808 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
809 memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength);
810 fontDescriptionRun1.familyDefined = true;
811 fontDescriptionRun1.weightDefined = false;
812 fontDescriptionRun1.widthDefined = false;
813 fontDescriptionRun1.slantDefined = false;
814 fontDescriptionRun1.sizeDefined = false;
816 const std::string fontFamily2("TizenSansHebrew");
818 // Set a known font description
819 FontDescriptionRun fontDescriptionRun2;
820 fontDescriptionRun2.characterRun.characterIndex = 17u;
821 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
822 fontDescriptionRun2.familyLength = fontFamily2.size();
823 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
824 memcpy(fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength);
825 fontDescriptionRun2.familyDefined = true;
826 fontDescriptionRun2.weightDefined = false;
827 fontDescriptionRun2.widthDefined = false;
828 fontDescriptionRun2.slantDefined = false;
829 fontDescriptionRun2.sizeDefined = false;
831 const std::string fontFamily3("TizenSans");
833 // Set a known font description
834 FontDescriptionRun fontDescriptionRun3;
835 fontDescriptionRun3.characterRun.characterIndex = 26u;
836 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
837 fontDescriptionRun3.familyLength = fontFamily3.size();
838 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
839 memcpy(fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength);
840 fontDescriptionRun3.familyDefined = true;
841 fontDescriptionRun3.weightDefined = false;
842 fontDescriptionRun3.widthDefined = false;
843 fontDescriptionRun3.slantDefined = false;
844 fontDescriptionRun3.sizeDefined = false;
846 const std::string fontFamily4("TizenSansHebrew");
848 // Set a known font description
849 FontDescriptionRun fontDescriptionRun4;
850 fontDescriptionRun4.characterRun.characterIndex = 28u;
851 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
852 fontDescriptionRun4.familyLength = fontFamily4.size();
853 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
854 memcpy(fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength);
855 fontDescriptionRun4.familyDefined = true;
856 fontDescriptionRun4.weightDefined = false;
857 fontDescriptionRun4.widthDefined = false;
858 fontDescriptionRun4.slantDefined = false;
859 fontDescriptionRun4.sizeDefined = false;
861 const std::string fontFamily5("TizenSans");
863 // Set a known font description
864 FontDescriptionRun fontDescriptionRun5;
865 fontDescriptionRun5.characterRun.characterIndex = 38u;
866 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
867 fontDescriptionRun5.familyLength = fontFamily5.size();
868 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
869 memcpy(fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength);
870 fontDescriptionRun5.familyDefined = true;
871 fontDescriptionRun5.weightDefined = false;
872 fontDescriptionRun5.widthDefined = false;
873 fontDescriptionRun5.slantDefined = false;
874 fontDescriptionRun5.sizeDefined = false;
876 Vector<FontDescriptionRun> fontDescriptionRuns;
877 fontDescriptionRuns.PushBack(fontDescriptionRun1);
878 fontDescriptionRuns.PushBack(fontDescriptionRun2);
879 fontDescriptionRuns.PushBack(fontDescriptionRun3);
880 fontDescriptionRuns.PushBack(fontDescriptionRun4);
881 fontDescriptionRuns.PushBack(fontDescriptionRun5);
882 Size textArea(100.f, 300.f);
883 Size layoutSize(79.f, 120.f);
886 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 4.f, -13.f, 13.f, -9.f, 22.f, -9.f, 35.f, -9.f, 0.f, -2.f
888 struct LineRun line0 =
900 struct LineRun line1 =
912 struct LineRun line2 =
924 struct LineRun line3 =
936 struct LineRun line4 =
948 struct LineRun line5 =
960 Vector<LineRun> lines;
961 lines.PushBack(line0);
962 lines.PushBack(line1);
963 lines.PushBack(line2);
964 lines.PushBack(line3);
965 lines.PushBack(line4);
966 lines.PushBack(line5);
968 LayoutTextData data =
970 "Layout bidirectional text.",
971 "Hello world demo שלום עולם.\n"
972 "שלום עולם hello world demo.",
975 fontDescriptionRuns.Begin(),
981 Layout::Engine::MULTI_LINE_BOX,
985 DevelText::EllipsisPosition::END,
988 if(!LayoutTextTest(data))
990 tet_result(TET_FAIL);
993 tet_result(TET_PASS);
997 int UtcDaliTextLayoutMultilineText03(void)
999 ToolkitTestApplication application;
1000 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1002 // Layout a long word which doesn't fit in the width of the text area.
1004 const std::string fontFamily("TizenSans");
1006 // Set a known font description
1007 FontDescriptionRun fontDescriptionRun;
1008 fontDescriptionRun.characterRun.characterIndex = 0u;
1009 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1010 fontDescriptionRun.familyLength = fontFamily.size();
1011 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1012 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1013 fontDescriptionRun.familyDefined = true;
1014 fontDescriptionRun.weightDefined = false;
1015 fontDescriptionRun.widthDefined = false;
1016 fontDescriptionRun.slantDefined = false;
1017 fontDescriptionRun.sizeDefined = false;
1019 Vector<FontDescriptionRun> fontDescriptionRuns;
1020 fontDescriptionRuns.PushBack(fontDescriptionRun);
1021 Size textArea(100.f, 300.f);
1022 Size layoutSize(96.f, 60.f);
1025 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -9.f, 47.f, -9.f, 57.f, -9.f, 63.f, -13.f, 66.f, -13.f, 75.f, -13.f, 84.f, -9.f, 0.f, -9.f, 13.f, -9.f, 23.f, -13.f, 31.f, -9.f, 40.f, -13.f, 44.f, -13.f, 47.f, -9.f, 56.f, -9.f, 68.f, -9.f, 78.f, -9.f, 84.f, -13.f, 87.f, -13.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -2.f
1027 struct LineRun line0 =
1039 struct LineRun line1 =
1051 struct LineRun line2 =
1063 Vector<LineRun> lines;
1064 lines.PushBack(line0);
1065 lines.PushBack(line1);
1066 lines.PushBack(line2);
1068 LayoutTextData data =
1070 "Layout a long word which doesn't fit in the width of the text area.",
1071 "Helloworlddemohelloworlddemo.",
1074 fontDescriptionRuns.Begin(),
1080 Layout::Engine::MULTI_LINE_BOX,
1084 DevelText::EllipsisPosition::END,
1087 if(!LayoutTextTest(data))
1089 tet_result(TET_FAIL);
1092 tet_result(TET_PASS);
1096 int UtcDaliTextLayoutMultilineText04(void)
1098 ToolkitTestApplication application;
1099 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1101 // Layout simple text ending with a \n. It has to add a void line at the end.
1103 const std::string fontFamily("TizenSans");
1105 // Set a known font description
1106 FontDescriptionRun fontDescriptionRun;
1107 fontDescriptionRun.characterRun.characterIndex = 0u;
1108 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1109 fontDescriptionRun.familyLength = fontFamily.size();
1110 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1111 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1112 fontDescriptionRun.familyDefined = true;
1113 fontDescriptionRun.weightDefined = false;
1114 fontDescriptionRun.widthDefined = false;
1115 fontDescriptionRun.slantDefined = false;
1116 fontDescriptionRun.sizeDefined = false;
1118 Vector<FontDescriptionRun> fontDescriptionRuns;
1119 fontDescriptionRuns.PushBack(fontDescriptionRun);
1120 Size textArea(100.f, 300.f);
1121 Size layoutSize(82.f, 40.f);
1124 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -2.f, 83.f, -12.f};
1125 struct LineRun line0 =
1136 struct LineRun line1 =
1148 Vector<LineRun> lines;
1149 lines.PushBack(line0);
1150 lines.PushBack(line1);
1152 LayoutTextData data =
1154 "Layout simple text ending with a \n.",
1158 fontDescriptionRuns.Begin(),
1164 Layout::Engine::MULTI_LINE_BOX,
1168 DevelText::EllipsisPosition::END,
1171 if(!LayoutTextTest(data))
1173 tet_result(TET_FAIL);
1176 tet_result(TET_PASS);
1180 int UtcDaliTextLayoutMultilineText05(void)
1182 ToolkitTestApplication application;
1183 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1185 // Layout simple text with one character with a different font size.
1187 const std::string fontFamily("TizenSans");
1189 // Set a known font description
1190 FontDescriptionRun fontDescriptionRun1;
1191 fontDescriptionRun1.characterRun.characterIndex = 0u;
1192 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1193 fontDescriptionRun1.familyLength = fontFamily.size();
1194 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1195 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
1196 fontDescriptionRun1.familyDefined = true;
1197 fontDescriptionRun1.weightDefined = false;
1198 fontDescriptionRun1.widthDefined = false;
1199 fontDescriptionRun1.slantDefined = false;
1200 fontDescriptionRun1.sizeDefined = false;
1202 FontDescriptionRun fontDescriptionRun2;
1203 fontDescriptionRun2.characterRun.characterIndex = 6u;
1204 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1205 fontDescriptionRun2.familyLength = fontFamily.size();
1206 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1207 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
1208 fontDescriptionRun2.size = 1280u;
1209 fontDescriptionRun2.familyDefined = true;
1210 fontDescriptionRun2.weightDefined = false;
1211 fontDescriptionRun2.widthDefined = false;
1212 fontDescriptionRun2.slantDefined = false;
1213 fontDescriptionRun2.sizeDefined = true;
1215 FontDescriptionRun fontDescriptionRun3;
1216 fontDescriptionRun3.characterRun.characterIndex = 7u;
1217 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1218 fontDescriptionRun3.familyLength = fontFamily.size();
1219 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1220 memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength);
1221 fontDescriptionRun3.familyDefined = true;
1222 fontDescriptionRun3.weightDefined = false;
1223 fontDescriptionRun3.widthDefined = false;
1224 fontDescriptionRun3.slantDefined = false;
1225 fontDescriptionRun3.sizeDefined = false;
1227 Vector<FontDescriptionRun> fontDescriptionRuns;
1228 fontDescriptionRuns.PushBack(fontDescriptionRun1);
1229 fontDescriptionRuns.PushBack(fontDescriptionRun2);
1230 fontDescriptionRuns.PushBack(fontDescriptionRun3);
1231 Size textArea(100.f, 300.f);
1232 Size layoutSize(87.f, 53.f);
1235 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -14.f, 59.f, -9.f, 69.f, -9.f, 75.f, -13.f, 78.f, -13.f, 87.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -2.f
1237 struct LineRun line0 =
1249 struct LineRun line1 =
1261 Vector<LineRun> lines;
1262 lines.PushBack(line0);
1263 lines.PushBack(line1);
1265 LayoutTextData data =
1267 "Layout simple text with one character with a different font size.",
1268 "Hello world demo.",
1271 fontDescriptionRuns.Begin(),
1277 Layout::Engine::MULTI_LINE_BOX,
1281 DevelText::EllipsisPosition::END,
1284 if(!LayoutTextTest(data))
1286 tet_result(TET_FAIL);
1289 tet_result(TET_PASS);
1293 int UtcDaliTextLayoutMultilineText06(void)
1295 ToolkitTestApplication application;
1296 tet_infoline(" UtcDaliTextLayoutMultilineText06");
1298 const std::string fontFamily("TizenSansHebrew");
1300 // Set a known font description
1301 FontDescriptionRun fontDescriptionRun;
1302 fontDescriptionRun.characterRun.characterIndex = 0u;
1303 fontDescriptionRun.characterRun.numberOfCharacters = 10u;
1304 fontDescriptionRun.familyLength = fontFamily.size();
1305 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1306 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1307 fontDescriptionRun.familyDefined = true;
1308 fontDescriptionRun.weightDefined = false;
1309 fontDescriptionRun.widthDefined = false;
1310 fontDescriptionRun.slantDefined = false;
1311 fontDescriptionRun.sizeDefined = false;
1313 Vector<FontDescriptionRun> fontDescriptionRuns;
1314 fontDescriptionRuns.PushBack(fontDescriptionRun);
1316 Size textArea(64.f, 100.f);
1317 Size layoutSize(33.f, 40.f);
1320 27.f, -13.f, 18.f, -10.f, 8.f, -10.f, 4.f, -10.f, 0.f, -0.f, 22.f, -10.f, 16.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f};
1321 struct LineRun line0 =
1333 struct LineRun line1 =
1345 Vector<LineRun> lines;
1346 lines.PushBack(line0);
1347 lines.PushBack(line1);
1349 LayoutTextData data =
1351 "Layout right to left text that doesn't fit in the text area after reordering.",
1352 "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
1355 fontDescriptionRuns.Begin(),
1361 Layout::Engine::MULTI_LINE_BOX,
1365 DevelText::EllipsisPosition::END,
1368 if(!LayoutTextTest(data))
1370 tet_result(TET_FAIL);
1373 tet_result(TET_PASS);
1377 int UtcDaliTextLayoutMultilineText07(void)
1379 ToolkitTestApplication application;
1380 tet_infoline(" UtcDaliTextLayoutMultilineText07");
1382 const std::string fontFamily("TizenSansHebrew");
1384 // Set a known font description
1385 FontDescriptionRun fontDescriptionRun;
1386 fontDescriptionRun.characterRun.characterIndex = 0u;
1387 fontDescriptionRun.characterRun.numberOfCharacters = 9u;
1388 fontDescriptionRun.familyLength = fontFamily.size();
1389 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1390 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1391 fontDescriptionRun.familyDefined = true;
1392 fontDescriptionRun.weightDefined = false;
1393 fontDescriptionRun.widthDefined = false;
1394 fontDescriptionRun.slantDefined = false;
1395 fontDescriptionRun.sizeDefined = false;
1397 Vector<FontDescriptionRun> fontDescriptionRuns;
1398 fontDescriptionRuns.PushBack(fontDescriptionRun);
1400 Size textArea(26.f, 100.f);
1401 Size layoutSize(23.f, 60.f);
1404 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};
1405 struct LineRun line0 =
1417 struct LineRun line1 =
1429 struct LineRun line2 =
1441 Vector<LineRun> lines;
1442 lines.PushBack(line0);
1443 lines.PushBack(line1);
1444 lines.PushBack(line2);
1446 LayoutTextData data =
1448 "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.",
1449 "שנורולכאן", // 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.
1452 fontDescriptionRuns.Begin(),
1458 Layout::Engine::MULTI_LINE_BOX,
1462 DevelText::EllipsisPosition::END,
1465 if(!LayoutTextTest(data))
1467 tet_result(TET_FAIL);
1470 tet_result(TET_PASS);
1474 int UtcDaliTextUpdateLayout01(void)
1476 ToolkitTestApplication application;
1477 tet_infoline(" UtcDaliTextUpdateLayout01");
1479 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1481 const std::string fontLatin("TizenSans");
1482 const std::string fontHebrew("TizenSansHebrew");
1483 const std::string fontArabic("TizenSansArabic");
1485 // Set a known font description
1486 FontDescriptionRun fontDescriptionRun01;
1487 fontDescriptionRun01.characterRun.characterIndex = 0u;
1488 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1489 fontDescriptionRun01.familyLength = fontLatin.size();
1490 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1491 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
1492 fontDescriptionRun01.familyDefined = true;
1493 fontDescriptionRun01.weightDefined = false;
1494 fontDescriptionRun01.widthDefined = false;
1495 fontDescriptionRun01.slantDefined = false;
1496 fontDescriptionRun01.sizeDefined = false;
1498 // Set a known font description
1499 FontDescriptionRun fontDescriptionRun02;
1500 fontDescriptionRun02.characterRun.characterIndex = 17u;
1501 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1502 fontDescriptionRun02.familyLength = fontHebrew.size();
1503 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1504 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
1505 fontDescriptionRun02.familyDefined = true;
1506 fontDescriptionRun02.weightDefined = false;
1507 fontDescriptionRun02.widthDefined = false;
1508 fontDescriptionRun02.slantDefined = false;
1509 fontDescriptionRun02.sizeDefined = false;
1511 // Set a known font description
1512 FontDescriptionRun fontDescriptionRun03;
1513 fontDescriptionRun03.characterRun.characterIndex = 26u;
1514 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1515 fontDescriptionRun03.familyLength = fontLatin.size();
1516 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1517 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
1518 fontDescriptionRun03.familyDefined = true;
1519 fontDescriptionRun03.weightDefined = false;
1520 fontDescriptionRun03.widthDefined = false;
1521 fontDescriptionRun03.slantDefined = false;
1522 fontDescriptionRun03.sizeDefined = false;
1524 // Set a known font description
1525 FontDescriptionRun fontDescriptionRun04;
1526 fontDescriptionRun04.characterRun.characterIndex = 28u;
1527 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1528 fontDescriptionRun04.familyLength = fontArabic.size();
1529 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1530 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
1531 fontDescriptionRun04.familyDefined = true;
1532 fontDescriptionRun04.weightDefined = false;
1533 fontDescriptionRun04.widthDefined = false;
1534 fontDescriptionRun04.slantDefined = false;
1535 fontDescriptionRun04.sizeDefined = false;
1537 // Set a known font description
1538 FontDescriptionRun fontDescriptionRun05;
1539 fontDescriptionRun05.characterRun.characterIndex = 42u;
1540 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1541 fontDescriptionRun05.familyLength = fontLatin.size();
1542 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1543 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
1544 fontDescriptionRun05.familyDefined = true;
1545 fontDescriptionRun05.weightDefined = false;
1546 fontDescriptionRun05.widthDefined = false;
1547 fontDescriptionRun05.slantDefined = false;
1548 fontDescriptionRun05.sizeDefined = false;
1550 // Set a known font description
1551 FontDescriptionRun fontDescriptionRun06;
1552 fontDescriptionRun06.characterRun.characterIndex = 54u;
1553 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1554 fontDescriptionRun06.familyLength = fontHebrew.size();
1555 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1556 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
1557 fontDescriptionRun06.familyDefined = true;
1558 fontDescriptionRun06.weightDefined = false;
1559 fontDescriptionRun06.widthDefined = false;
1560 fontDescriptionRun06.slantDefined = false;
1561 fontDescriptionRun06.sizeDefined = false;
1563 // Set a known font description
1564 FontDescriptionRun fontDescriptionRun07;
1565 fontDescriptionRun07.characterRun.characterIndex = 64u;
1566 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1567 fontDescriptionRun07.familyLength = fontHebrew.size();
1568 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1569 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
1570 fontDescriptionRun07.familyDefined = true;
1571 fontDescriptionRun07.weightDefined = false;
1572 fontDescriptionRun07.widthDefined = false;
1573 fontDescriptionRun07.slantDefined = false;
1574 fontDescriptionRun07.sizeDefined = false;
1576 // Set a known font description
1577 FontDescriptionRun fontDescriptionRun08;
1578 fontDescriptionRun08.characterRun.characterIndex = 74u;
1579 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1580 fontDescriptionRun08.familyLength = fontLatin.size();
1581 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1582 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
1583 fontDescriptionRun08.familyDefined = true;
1584 fontDescriptionRun08.weightDefined = false;
1585 fontDescriptionRun08.widthDefined = false;
1586 fontDescriptionRun08.slantDefined = false;
1587 fontDescriptionRun08.sizeDefined = false;
1589 // Set a known font description
1590 FontDescriptionRun fontDescriptionRun09;
1591 fontDescriptionRun09.characterRun.characterIndex = 92u;
1592 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1593 fontDescriptionRun09.familyLength = fontLatin.size();
1594 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1595 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
1596 fontDescriptionRun09.familyDefined = true;
1597 fontDescriptionRun09.weightDefined = false;
1598 fontDescriptionRun09.widthDefined = false;
1599 fontDescriptionRun09.slantDefined = false;
1600 fontDescriptionRun09.sizeDefined = false;
1602 // Set a known font description
1603 FontDescriptionRun fontDescriptionRun10;
1604 fontDescriptionRun10.characterRun.characterIndex = 104u;
1605 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1606 fontDescriptionRun10.familyLength = fontArabic.size();
1607 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1608 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
1609 fontDescriptionRun10.familyDefined = true;
1610 fontDescriptionRun10.weightDefined = false;
1611 fontDescriptionRun10.widthDefined = false;
1612 fontDescriptionRun10.slantDefined = false;
1613 fontDescriptionRun10.sizeDefined = false;
1615 // Set a known font description
1616 FontDescriptionRun fontDescriptionRun11;
1617 fontDescriptionRun11.characterRun.characterIndex = 118u;
1618 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1619 fontDescriptionRun11.familyLength = fontHebrew.size();
1620 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1621 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
1622 fontDescriptionRun11.familyDefined = true;
1623 fontDescriptionRun11.weightDefined = false;
1624 fontDescriptionRun11.widthDefined = false;
1625 fontDescriptionRun11.slantDefined = false;
1626 fontDescriptionRun11.sizeDefined = false;
1628 // Set a known font description
1629 FontDescriptionRun fontDescriptionRun12;
1630 fontDescriptionRun12.characterRun.characterIndex = 128u;
1631 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1632 fontDescriptionRun12.familyLength = fontLatin.size();
1633 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1634 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
1635 fontDescriptionRun12.familyDefined = true;
1636 fontDescriptionRun12.weightDefined = false;
1637 fontDescriptionRun12.widthDefined = false;
1638 fontDescriptionRun12.slantDefined = false;
1639 fontDescriptionRun12.sizeDefined = false;
1641 // Set a known font description
1642 FontDescriptionRun fontDescriptionRun13;
1643 fontDescriptionRun13.characterRun.characterIndex = 145u;
1644 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1645 fontDescriptionRun13.familyLength = fontHebrew.size();
1646 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1647 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
1648 fontDescriptionRun13.familyDefined = true;
1649 fontDescriptionRun13.weightDefined = false;
1650 fontDescriptionRun13.widthDefined = false;
1651 fontDescriptionRun13.slantDefined = false;
1652 fontDescriptionRun13.sizeDefined = false;
1654 // Set a known font description
1655 FontDescriptionRun fontDescriptionRun14;
1656 fontDescriptionRun14.characterRun.characterIndex = 154u;
1657 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1658 fontDescriptionRun14.familyLength = fontLatin.size();
1659 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1660 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
1661 fontDescriptionRun14.familyDefined = true;
1662 fontDescriptionRun14.weightDefined = false;
1663 fontDescriptionRun14.widthDefined = false;
1664 fontDescriptionRun14.slantDefined = false;
1665 fontDescriptionRun14.sizeDefined = false;
1667 // Set a known font description
1668 FontDescriptionRun fontDescriptionRun15;
1669 fontDescriptionRun15.characterRun.characterIndex = 156u;
1670 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1671 fontDescriptionRun15.familyLength = fontHebrew.size();
1672 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1673 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
1674 fontDescriptionRun15.familyDefined = true;
1675 fontDescriptionRun15.weightDefined = false;
1676 fontDescriptionRun15.widthDefined = false;
1677 fontDescriptionRun15.slantDefined = false;
1678 fontDescriptionRun15.sizeDefined = false;
1680 // Set a known font description
1681 FontDescriptionRun fontDescriptionRun16;
1682 fontDescriptionRun16.characterRun.characterIndex = 166u;
1683 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1684 fontDescriptionRun16.familyLength = fontLatin.size();
1685 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1686 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
1687 fontDescriptionRun16.familyDefined = true;
1688 fontDescriptionRun16.weightDefined = false;
1689 fontDescriptionRun16.widthDefined = false;
1690 fontDescriptionRun16.slantDefined = false;
1691 fontDescriptionRun16.sizeDefined = false;
1693 // Set a known font description
1694 FontDescriptionRun fontDescriptionRun17;
1695 fontDescriptionRun17.characterRun.characterIndex = 178u;
1696 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1697 fontDescriptionRun17.familyLength = fontArabic.size();
1698 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1699 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
1700 fontDescriptionRun17.familyDefined = true;
1701 fontDescriptionRun17.weightDefined = false;
1702 fontDescriptionRun17.widthDefined = false;
1703 fontDescriptionRun17.slantDefined = false;
1704 fontDescriptionRun17.sizeDefined = false;
1706 Vector<FontDescriptionRun> fontDescriptionRuns;
1707 fontDescriptionRuns.PushBack(fontDescriptionRun01);
1708 fontDescriptionRuns.PushBack(fontDescriptionRun02);
1709 fontDescriptionRuns.PushBack(fontDescriptionRun03);
1710 fontDescriptionRuns.PushBack(fontDescriptionRun04);
1711 fontDescriptionRuns.PushBack(fontDescriptionRun05);
1712 fontDescriptionRuns.PushBack(fontDescriptionRun06);
1713 fontDescriptionRuns.PushBack(fontDescriptionRun07);
1714 fontDescriptionRuns.PushBack(fontDescriptionRun08);
1715 fontDescriptionRuns.PushBack(fontDescriptionRun09);
1716 fontDescriptionRuns.PushBack(fontDescriptionRun10);
1717 fontDescriptionRuns.PushBack(fontDescriptionRun11);
1718 fontDescriptionRuns.PushBack(fontDescriptionRun12);
1719 fontDescriptionRuns.PushBack(fontDescriptionRun13);
1720 fontDescriptionRuns.PushBack(fontDescriptionRun14);
1721 fontDescriptionRuns.PushBack(fontDescriptionRun15);
1722 fontDescriptionRuns.PushBack(fontDescriptionRun16);
1723 fontDescriptionRuns.PushBack(fontDescriptionRun17);
1724 Size textArea(100.f, 300.f);
1725 Size layoutSize(99.f, 380.f);
1728 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 94.f, -8.f, 89.f, -6.f, 81.f, -8.f, 77.f, -7.f, 76.f, -11.f, 71.f, -0.f, 66.f, -7.f, 65.f, -11.f, 59.f, -11.f, 53.f, -8.f, 52.f, -11.f, 46.f, -11.f, 41.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 4.f, -13.f, 13.f, -9.f, 22.f, -9.f, 35.f, -9.f, 0.f, -2.f, 0.f, -12.f, 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 91.f, -8.f, 86.f, -6.f, 78.f, -8.f, 74.f, -7.f, 73.f, -11.f, 68.f, -0.f, 63.f, -7.f, 62.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 98.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 53.f, -8.f, 48.f, -6.f, 40.f, -8.f, 36.f, -7.f, 35.f, -11.f, 30.f, -0.f, 25.f, -7.f, 24.f, -11.f, 18.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f
1730 struct LineRun line01 =
1742 struct LineRun line02 =
1754 struct LineRun line03 =
1766 struct LineRun line04 =
1778 struct LineRun line05 =
1790 struct LineRun line06 =
1802 struct LineRun line07 =
1814 struct LineRun line08 =
1826 struct LineRun line09 =
1838 struct LineRun line10 =
1850 struct LineRun line11 =
1862 struct LineRun line12 =
1874 struct LineRun line13 =
1886 struct LineRun line14 =
1898 struct LineRun line15 =
1910 struct LineRun line16 =
1922 struct LineRun line17 =
1934 struct LineRun line18 =
1946 struct LineRun line19 =
1958 Vector<LineRun> lines;
1959 lines.PushBack(line01);
1960 lines.PushBack(line02);
1961 lines.PushBack(line03);
1962 lines.PushBack(line04);
1963 lines.PushBack(line05);
1964 lines.PushBack(line06);
1965 lines.PushBack(line07);
1966 lines.PushBack(line08);
1967 lines.PushBack(line09);
1968 lines.PushBack(line10);
1969 lines.PushBack(line11);
1970 lines.PushBack(line12);
1971 lines.PushBack(line13);
1972 lines.PushBack(line14);
1973 lines.PushBack(line15);
1974 lines.PushBack(line16);
1975 lines.PushBack(line17);
1976 lines.PushBack(line18);
1977 lines.PushBack(line19);
1979 LayoutTextData data =
1981 "Layout bidirectional text.",
1982 "Hello world demo שלום עולם.\n"
1983 "مرحبا بالعالم hello world שלום עולם\n"
1984 "שלום עולם hello world demo.\n"
1985 "hello world مرحبا بالعالم שלום עולם\n"
1986 "Hello world demo שלום עולם.\n"
1987 "שלום עולם hello world مرحبا بالعالم\n",
1990 fontDescriptionRuns.Begin(),
1996 Layout::Engine::MULTI_LINE_BOX,
2000 DevelText::EllipsisPosition::END,
2003 if(!LayoutTextTest(data))
2005 tet_result(TET_FAIL);
2008 tet_result(TET_PASS);
2012 int UtcDaliTextUpdateLayout02(void)
2014 ToolkitTestApplication application;
2015 tet_infoline(" UtcDaliTextUpdateLayout02");
2017 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2019 const std::string fontLatin("TizenSans");
2020 const std::string fontHebrew("TizenSansHebrew");
2021 const std::string fontArabic("TizenSansArabic");
2023 // Set a known font description
2024 FontDescriptionRun fontDescriptionRun01;
2025 fontDescriptionRun01.characterRun.characterIndex = 0u;
2026 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2027 fontDescriptionRun01.familyLength = fontLatin.size();
2028 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2029 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
2030 fontDescriptionRun01.familyDefined = true;
2031 fontDescriptionRun01.weightDefined = false;
2032 fontDescriptionRun01.widthDefined = false;
2033 fontDescriptionRun01.slantDefined = false;
2034 fontDescriptionRun01.sizeDefined = false;
2036 // Set a known font description
2037 FontDescriptionRun fontDescriptionRun02;
2038 fontDescriptionRun02.characterRun.characterIndex = 17u;
2039 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2040 fontDescriptionRun02.familyLength = fontHebrew.size();
2041 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2042 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
2043 fontDescriptionRun02.familyDefined = true;
2044 fontDescriptionRun02.weightDefined = false;
2045 fontDescriptionRun02.widthDefined = false;
2046 fontDescriptionRun02.slantDefined = false;
2047 fontDescriptionRun02.sizeDefined = false;
2049 // Set a known font description
2050 FontDescriptionRun fontDescriptionRun03;
2051 fontDescriptionRun03.characterRun.characterIndex = 26u;
2052 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2053 fontDescriptionRun03.familyLength = fontLatin.size();
2054 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2055 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
2056 fontDescriptionRun03.familyDefined = true;
2057 fontDescriptionRun03.weightDefined = false;
2058 fontDescriptionRun03.widthDefined = false;
2059 fontDescriptionRun03.slantDefined = false;
2060 fontDescriptionRun03.sizeDefined = false;
2062 // Set a known font description
2063 FontDescriptionRun fontDescriptionRun04;
2064 fontDescriptionRun04.characterRun.characterIndex = 28u;
2065 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2066 fontDescriptionRun04.familyLength = fontArabic.size();
2067 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2068 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
2069 fontDescriptionRun04.familyDefined = true;
2070 fontDescriptionRun04.weightDefined = false;
2071 fontDescriptionRun04.widthDefined = false;
2072 fontDescriptionRun04.slantDefined = false;
2073 fontDescriptionRun04.sizeDefined = false;
2075 // Set a known font description
2076 FontDescriptionRun fontDescriptionRun05;
2077 fontDescriptionRun05.characterRun.characterIndex = 42u;
2078 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2079 fontDescriptionRun05.familyLength = fontLatin.size();
2080 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2081 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
2082 fontDescriptionRun05.familyDefined = true;
2083 fontDescriptionRun05.weightDefined = false;
2084 fontDescriptionRun05.widthDefined = false;
2085 fontDescriptionRun05.slantDefined = false;
2086 fontDescriptionRun05.sizeDefined = false;
2088 // Set a known font description
2089 FontDescriptionRun fontDescriptionRun06;
2090 fontDescriptionRun06.characterRun.characterIndex = 54u;
2091 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2092 fontDescriptionRun06.familyLength = fontHebrew.size();
2093 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2094 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
2095 fontDescriptionRun06.familyDefined = true;
2096 fontDescriptionRun06.weightDefined = false;
2097 fontDescriptionRun06.widthDefined = false;
2098 fontDescriptionRun06.slantDefined = false;
2099 fontDescriptionRun06.sizeDefined = false;
2101 // Set a known font description
2102 FontDescriptionRun fontDescriptionRun07;
2103 fontDescriptionRun07.characterRun.characterIndex = 64u;
2104 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2105 fontDescriptionRun07.familyLength = fontHebrew.size();
2106 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2107 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
2108 fontDescriptionRun07.familyDefined = true;
2109 fontDescriptionRun07.weightDefined = false;
2110 fontDescriptionRun07.widthDefined = false;
2111 fontDescriptionRun07.slantDefined = false;
2112 fontDescriptionRun07.sizeDefined = false;
2114 // Set a known font description
2115 FontDescriptionRun fontDescriptionRun08;
2116 fontDescriptionRun08.characterRun.characterIndex = 74u;
2117 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2118 fontDescriptionRun08.familyLength = fontLatin.size();
2119 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2120 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
2121 fontDescriptionRun08.familyDefined = true;
2122 fontDescriptionRun08.weightDefined = false;
2123 fontDescriptionRun08.widthDefined = false;
2124 fontDescriptionRun08.slantDefined = false;
2125 fontDescriptionRun08.sizeDefined = false;
2127 // Set a known font description
2128 FontDescriptionRun fontDescriptionRun09;
2129 fontDescriptionRun09.characterRun.characterIndex = 92u;
2130 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2131 fontDescriptionRun09.familyLength = fontLatin.size();
2132 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2133 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
2134 fontDescriptionRun09.familyDefined = true;
2135 fontDescriptionRun09.weightDefined = false;
2136 fontDescriptionRun09.widthDefined = false;
2137 fontDescriptionRun09.slantDefined = false;
2138 fontDescriptionRun09.sizeDefined = false;
2140 // Set a known font description
2141 FontDescriptionRun fontDescriptionRun10;
2142 fontDescriptionRun10.characterRun.characterIndex = 104u;
2143 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2144 fontDescriptionRun10.familyLength = fontArabic.size();
2145 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2146 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
2147 fontDescriptionRun10.familyDefined = true;
2148 fontDescriptionRun10.weightDefined = false;
2149 fontDescriptionRun10.widthDefined = false;
2150 fontDescriptionRun10.slantDefined = false;
2151 fontDescriptionRun10.sizeDefined = false;
2153 // Set a known font description
2154 FontDescriptionRun fontDescriptionRun11;
2155 fontDescriptionRun11.characterRun.characterIndex = 118u;
2156 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2157 fontDescriptionRun11.familyLength = fontHebrew.size();
2158 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2159 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
2160 fontDescriptionRun11.familyDefined = true;
2161 fontDescriptionRun11.weightDefined = false;
2162 fontDescriptionRun11.widthDefined = false;
2163 fontDescriptionRun11.slantDefined = false;
2164 fontDescriptionRun11.sizeDefined = false;
2166 // Set a known font description
2167 FontDescriptionRun fontDescriptionRun12;
2168 fontDescriptionRun12.characterRun.characterIndex = 128u;
2169 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2170 fontDescriptionRun12.familyLength = fontLatin.size();
2171 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2172 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
2173 fontDescriptionRun12.familyDefined = true;
2174 fontDescriptionRun12.weightDefined = false;
2175 fontDescriptionRun12.widthDefined = false;
2176 fontDescriptionRun12.slantDefined = false;
2177 fontDescriptionRun12.sizeDefined = false;
2179 // Set a known font description
2180 FontDescriptionRun fontDescriptionRun13;
2181 fontDescriptionRun13.characterRun.characterIndex = 145u;
2182 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2183 fontDescriptionRun13.familyLength = fontHebrew.size();
2184 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2185 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
2186 fontDescriptionRun13.familyDefined = true;
2187 fontDescriptionRun13.weightDefined = false;
2188 fontDescriptionRun13.widthDefined = false;
2189 fontDescriptionRun13.slantDefined = false;
2190 fontDescriptionRun13.sizeDefined = false;
2192 // Set a known font description
2193 FontDescriptionRun fontDescriptionRun14;
2194 fontDescriptionRun14.characterRun.characterIndex = 154u;
2195 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2196 fontDescriptionRun14.familyLength = fontLatin.size();
2197 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2198 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
2199 fontDescriptionRun14.familyDefined = true;
2200 fontDescriptionRun14.weightDefined = false;
2201 fontDescriptionRun14.widthDefined = false;
2202 fontDescriptionRun14.slantDefined = false;
2203 fontDescriptionRun14.sizeDefined = false;
2205 // Set a known font description
2206 FontDescriptionRun fontDescriptionRun15;
2207 fontDescriptionRun15.characterRun.characterIndex = 156u;
2208 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2209 fontDescriptionRun15.familyLength = fontHebrew.size();
2210 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2211 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
2212 fontDescriptionRun15.familyDefined = true;
2213 fontDescriptionRun15.weightDefined = false;
2214 fontDescriptionRun15.widthDefined = false;
2215 fontDescriptionRun15.slantDefined = false;
2216 fontDescriptionRun15.sizeDefined = false;
2218 // Set a known font description
2219 FontDescriptionRun fontDescriptionRun16;
2220 fontDescriptionRun16.characterRun.characterIndex = 166u;
2221 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2222 fontDescriptionRun16.familyLength = fontLatin.size();
2223 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2224 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
2225 fontDescriptionRun16.familyDefined = true;
2226 fontDescriptionRun16.weightDefined = false;
2227 fontDescriptionRun16.widthDefined = false;
2228 fontDescriptionRun16.slantDefined = false;
2229 fontDescriptionRun16.sizeDefined = false;
2231 // Set a known font description
2232 FontDescriptionRun fontDescriptionRun17;
2233 fontDescriptionRun17.characterRun.characterIndex = 178u;
2234 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2235 fontDescriptionRun17.familyLength = fontArabic.size();
2236 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2237 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
2238 fontDescriptionRun17.familyDefined = true;
2239 fontDescriptionRun17.weightDefined = false;
2240 fontDescriptionRun17.widthDefined = false;
2241 fontDescriptionRun17.slantDefined = false;
2242 fontDescriptionRun17.sizeDefined = false;
2244 Vector<FontDescriptionRun> fontDescriptionRuns;
2245 fontDescriptionRuns.PushBack(fontDescriptionRun01);
2246 fontDescriptionRuns.PushBack(fontDescriptionRun02);
2247 fontDescriptionRuns.PushBack(fontDescriptionRun03);
2248 fontDescriptionRuns.PushBack(fontDescriptionRun04);
2249 fontDescriptionRuns.PushBack(fontDescriptionRun05);
2250 fontDescriptionRuns.PushBack(fontDescriptionRun06);
2251 fontDescriptionRuns.PushBack(fontDescriptionRun07);
2252 fontDescriptionRuns.PushBack(fontDescriptionRun08);
2253 fontDescriptionRuns.PushBack(fontDescriptionRun09);
2254 fontDescriptionRuns.PushBack(fontDescriptionRun10);
2255 fontDescriptionRuns.PushBack(fontDescriptionRun11);
2256 fontDescriptionRuns.PushBack(fontDescriptionRun12);
2257 fontDescriptionRuns.PushBack(fontDescriptionRun13);
2258 fontDescriptionRuns.PushBack(fontDescriptionRun14);
2259 fontDescriptionRuns.PushBack(fontDescriptionRun15);
2260 fontDescriptionRuns.PushBack(fontDescriptionRun16);
2261 fontDescriptionRuns.PushBack(fontDescriptionRun17);
2262 Size textArea(100.f, 300.f);
2263 Size layoutSize(99.f, 380.f);
2266 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 94.f, -8.f, 89.f, -6.f, 81.f, -8.f, 77.f, -7.f, 76.f, -11.f, 71.f, -0.f, 66.f, -7.f, 65.f, -11.f, 59.f, -11.f, 53.f, -8.f, 52.f, -11.f, 46.f, -11.f, 41.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 4.f, -13.f, 13.f, -9.f, 22.f, -9.f, 35.f, -9.f, 0.f, -2.f, 0.f, -12.f, 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 91.f, -8.f, 86.f, -6.f, 78.f, -8.f, 74.f, -7.f, 73.f, -11.f, 68.f, -0.f, 63.f, -7.f, 62.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 98.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 53.f, -8.f, 48.f, -6.f, 40.f, -8.f, 36.f, -7.f, 35.f, -11.f, 30.f, -0.f, 25.f, -7.f, 24.f, -11.f, 18.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f
2268 struct LineRun line01 =
2280 struct LineRun line02 =
2292 struct LineRun line03 =
2304 struct LineRun line04 =
2316 struct LineRun line05 =
2328 struct LineRun line06 =
2340 struct LineRun line07 =
2352 struct LineRun line08 =
2364 struct LineRun line09 =
2376 struct LineRun line10 =
2388 struct LineRun line11 =
2400 struct LineRun line12 =
2412 struct LineRun line13 =
2424 struct LineRun line14 =
2436 struct LineRun line15 =
2448 struct LineRun line16 =
2460 struct LineRun line17 =
2472 struct LineRun line18 =
2484 struct LineRun line19 =
2496 Vector<LineRun> lines;
2497 lines.PushBack(line01);
2498 lines.PushBack(line02);
2499 lines.PushBack(line03);
2500 lines.PushBack(line04);
2501 lines.PushBack(line05);
2502 lines.PushBack(line06);
2503 lines.PushBack(line07);
2504 lines.PushBack(line08);
2505 lines.PushBack(line09);
2506 lines.PushBack(line10);
2507 lines.PushBack(line11);
2508 lines.PushBack(line12);
2509 lines.PushBack(line13);
2510 lines.PushBack(line14);
2511 lines.PushBack(line15);
2512 lines.PushBack(line16);
2513 lines.PushBack(line17);
2514 lines.PushBack(line18);
2515 lines.PushBack(line19);
2517 LayoutTextData data =
2519 "Layout bidirectional text.",
2520 "Hello world demo שלום עולם.\n"
2521 "مرحبا بالعالم hello world שלום עולם\n"
2522 "שלום עולם hello world demo.\n"
2523 "hello world مرحبا بالعالم שלום עולם\n"
2524 "Hello world demo שלום עולם.\n"
2525 "שלום עולם hello world مرحبا بالعالم\n",
2528 fontDescriptionRuns.Begin(),
2534 Layout::Engine::MULTI_LINE_BOX,
2538 DevelText::EllipsisPosition::END,
2541 if(!LayoutTextTest(data))
2543 tet_result(TET_FAIL);
2546 tet_result(TET_PASS);
2550 int UtcDaliTextUpdateLayout03(void)
2552 ToolkitTestApplication application;
2553 tet_infoline(" UtcDaliTextUpdateLayout03");
2555 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2557 const std::string fontLatin("TizenSans");
2558 const std::string fontHebrew("TizenSansHebrew");
2559 const std::string fontArabic("TizenSansArabic");
2561 // Set a known font description
2562 FontDescriptionRun fontDescriptionRun01;
2563 fontDescriptionRun01.characterRun.characterIndex = 0u;
2564 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2565 fontDescriptionRun01.familyLength = fontLatin.size();
2566 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2567 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
2568 fontDescriptionRun01.familyDefined = true;
2569 fontDescriptionRun01.weightDefined = false;
2570 fontDescriptionRun01.widthDefined = false;
2571 fontDescriptionRun01.slantDefined = false;
2572 fontDescriptionRun01.sizeDefined = false;
2574 // Set a known font description
2575 FontDescriptionRun fontDescriptionRun02;
2576 fontDescriptionRun02.characterRun.characterIndex = 17u;
2577 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2578 fontDescriptionRun02.familyLength = fontHebrew.size();
2579 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2580 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
2581 fontDescriptionRun02.familyDefined = true;
2582 fontDescriptionRun02.weightDefined = false;
2583 fontDescriptionRun02.widthDefined = false;
2584 fontDescriptionRun02.slantDefined = false;
2585 fontDescriptionRun02.sizeDefined = false;
2587 // Set a known font description
2588 FontDescriptionRun fontDescriptionRun03;
2589 fontDescriptionRun03.characterRun.characterIndex = 26u;
2590 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2591 fontDescriptionRun03.familyLength = fontLatin.size();
2592 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2593 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
2594 fontDescriptionRun03.familyDefined = true;
2595 fontDescriptionRun03.weightDefined = false;
2596 fontDescriptionRun03.widthDefined = false;
2597 fontDescriptionRun03.slantDefined = false;
2598 fontDescriptionRun03.sizeDefined = false;
2600 // Set a known font description
2601 FontDescriptionRun fontDescriptionRun04;
2602 fontDescriptionRun04.characterRun.characterIndex = 28u;
2603 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2604 fontDescriptionRun04.familyLength = fontArabic.size();
2605 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2606 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
2607 fontDescriptionRun04.familyDefined = true;
2608 fontDescriptionRun04.weightDefined = false;
2609 fontDescriptionRun04.widthDefined = false;
2610 fontDescriptionRun04.slantDefined = false;
2611 fontDescriptionRun04.sizeDefined = false;
2613 // Set a known font description
2614 FontDescriptionRun fontDescriptionRun05;
2615 fontDescriptionRun05.characterRun.characterIndex = 42u;
2616 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2617 fontDescriptionRun05.familyLength = fontLatin.size();
2618 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2619 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
2620 fontDescriptionRun05.familyDefined = true;
2621 fontDescriptionRun05.weightDefined = false;
2622 fontDescriptionRun05.widthDefined = false;
2623 fontDescriptionRun05.slantDefined = false;
2624 fontDescriptionRun05.sizeDefined = false;
2626 // Set a known font description
2627 FontDescriptionRun fontDescriptionRun06;
2628 fontDescriptionRun06.characterRun.characterIndex = 54u;
2629 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2630 fontDescriptionRun06.familyLength = fontHebrew.size();
2631 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2632 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
2633 fontDescriptionRun06.familyDefined = true;
2634 fontDescriptionRun06.weightDefined = false;
2635 fontDescriptionRun06.widthDefined = false;
2636 fontDescriptionRun06.slantDefined = false;
2637 fontDescriptionRun06.sizeDefined = false;
2639 // Set a known font description
2640 FontDescriptionRun fontDescriptionRun07;
2641 fontDescriptionRun07.characterRun.characterIndex = 64u;
2642 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2643 fontDescriptionRun07.familyLength = fontHebrew.size();
2644 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2645 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
2646 fontDescriptionRun07.familyDefined = true;
2647 fontDescriptionRun07.weightDefined = false;
2648 fontDescriptionRun07.widthDefined = false;
2649 fontDescriptionRun07.slantDefined = false;
2650 fontDescriptionRun07.sizeDefined = false;
2652 // Set a known font description
2653 FontDescriptionRun fontDescriptionRun08;
2654 fontDescriptionRun08.characterRun.characterIndex = 74u;
2655 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2656 fontDescriptionRun08.familyLength = fontLatin.size();
2657 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2658 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
2659 fontDescriptionRun08.familyDefined = true;
2660 fontDescriptionRun08.weightDefined = false;
2661 fontDescriptionRun08.widthDefined = false;
2662 fontDescriptionRun08.slantDefined = false;
2663 fontDescriptionRun08.sizeDefined = false;
2665 // Set a known font description
2666 FontDescriptionRun fontDescriptionRun09;
2667 fontDescriptionRun09.characterRun.characterIndex = 92u;
2668 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2669 fontDescriptionRun09.familyLength = fontLatin.size();
2670 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2671 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
2672 fontDescriptionRun09.familyDefined = true;
2673 fontDescriptionRun09.weightDefined = false;
2674 fontDescriptionRun09.widthDefined = false;
2675 fontDescriptionRun09.slantDefined = false;
2676 fontDescriptionRun09.sizeDefined = false;
2678 // Set a known font description
2679 FontDescriptionRun fontDescriptionRun10;
2680 fontDescriptionRun10.characterRun.characterIndex = 104u;
2681 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2682 fontDescriptionRun10.familyLength = fontArabic.size();
2683 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2684 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
2685 fontDescriptionRun10.familyDefined = true;
2686 fontDescriptionRun10.weightDefined = false;
2687 fontDescriptionRun10.widthDefined = false;
2688 fontDescriptionRun10.slantDefined = false;
2689 fontDescriptionRun10.sizeDefined = false;
2691 // Set a known font description
2692 FontDescriptionRun fontDescriptionRun11;
2693 fontDescriptionRun11.characterRun.characterIndex = 118u;
2694 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2695 fontDescriptionRun11.familyLength = fontHebrew.size();
2696 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2697 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
2698 fontDescriptionRun11.familyDefined = true;
2699 fontDescriptionRun11.weightDefined = false;
2700 fontDescriptionRun11.widthDefined = false;
2701 fontDescriptionRun11.slantDefined = false;
2702 fontDescriptionRun11.sizeDefined = false;
2704 // Set a known font description
2705 FontDescriptionRun fontDescriptionRun12;
2706 fontDescriptionRun12.characterRun.characterIndex = 128u;
2707 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2708 fontDescriptionRun12.familyLength = fontLatin.size();
2709 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2710 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
2711 fontDescriptionRun12.familyDefined = true;
2712 fontDescriptionRun12.weightDefined = false;
2713 fontDescriptionRun12.widthDefined = false;
2714 fontDescriptionRun12.slantDefined = false;
2715 fontDescriptionRun12.sizeDefined = false;
2717 // Set a known font description
2718 FontDescriptionRun fontDescriptionRun13;
2719 fontDescriptionRun13.characterRun.characterIndex = 145u;
2720 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2721 fontDescriptionRun13.familyLength = fontHebrew.size();
2722 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2723 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
2724 fontDescriptionRun13.familyDefined = true;
2725 fontDescriptionRun13.weightDefined = false;
2726 fontDescriptionRun13.widthDefined = false;
2727 fontDescriptionRun13.slantDefined = false;
2728 fontDescriptionRun13.sizeDefined = false;
2730 // Set a known font description
2731 FontDescriptionRun fontDescriptionRun14;
2732 fontDescriptionRun14.characterRun.characterIndex = 154u;
2733 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2734 fontDescriptionRun14.familyLength = fontLatin.size();
2735 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2736 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
2737 fontDescriptionRun14.familyDefined = true;
2738 fontDescriptionRun14.weightDefined = false;
2739 fontDescriptionRun14.widthDefined = false;
2740 fontDescriptionRun14.slantDefined = false;
2741 fontDescriptionRun14.sizeDefined = false;
2743 // Set a known font description
2744 FontDescriptionRun fontDescriptionRun15;
2745 fontDescriptionRun15.characterRun.characterIndex = 156u;
2746 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2747 fontDescriptionRun15.familyLength = fontHebrew.size();
2748 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2749 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
2750 fontDescriptionRun15.familyDefined = true;
2751 fontDescriptionRun15.weightDefined = false;
2752 fontDescriptionRun15.widthDefined = false;
2753 fontDescriptionRun15.slantDefined = false;
2754 fontDescriptionRun15.sizeDefined = false;
2756 // Set a known font description
2757 FontDescriptionRun fontDescriptionRun16;
2758 fontDescriptionRun16.characterRun.characterIndex = 166u;
2759 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2760 fontDescriptionRun16.familyLength = fontLatin.size();
2761 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2762 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
2763 fontDescriptionRun16.familyDefined = true;
2764 fontDescriptionRun16.weightDefined = false;
2765 fontDescriptionRun16.widthDefined = false;
2766 fontDescriptionRun16.slantDefined = false;
2767 fontDescriptionRun16.sizeDefined = false;
2769 // Set a known font description
2770 FontDescriptionRun fontDescriptionRun17;
2771 fontDescriptionRun17.characterRun.characterIndex = 178u;
2772 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2773 fontDescriptionRun17.familyLength = fontArabic.size();
2774 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2775 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
2776 fontDescriptionRun17.familyDefined = true;
2777 fontDescriptionRun17.weightDefined = false;
2778 fontDescriptionRun17.widthDefined = false;
2779 fontDescriptionRun17.slantDefined = false;
2780 fontDescriptionRun17.sizeDefined = false;
2782 Vector<FontDescriptionRun> fontDescriptionRuns;
2783 fontDescriptionRuns.PushBack(fontDescriptionRun01);
2784 fontDescriptionRuns.PushBack(fontDescriptionRun02);
2785 fontDescriptionRuns.PushBack(fontDescriptionRun03);
2786 fontDescriptionRuns.PushBack(fontDescriptionRun04);
2787 fontDescriptionRuns.PushBack(fontDescriptionRun05);
2788 fontDescriptionRuns.PushBack(fontDescriptionRun06);
2789 fontDescriptionRuns.PushBack(fontDescriptionRun07);
2790 fontDescriptionRuns.PushBack(fontDescriptionRun08);
2791 fontDescriptionRuns.PushBack(fontDescriptionRun09);
2792 fontDescriptionRuns.PushBack(fontDescriptionRun10);
2793 fontDescriptionRuns.PushBack(fontDescriptionRun11);
2794 fontDescriptionRuns.PushBack(fontDescriptionRun12);
2795 fontDescriptionRuns.PushBack(fontDescriptionRun13);
2796 fontDescriptionRuns.PushBack(fontDescriptionRun14);
2797 fontDescriptionRuns.PushBack(fontDescriptionRun15);
2798 fontDescriptionRuns.PushBack(fontDescriptionRun16);
2799 fontDescriptionRuns.PushBack(fontDescriptionRun17);
2800 Size textArea(100.f, 300.f);
2801 Size layoutSize(99.f, 380.f);
2804 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 94.f, -8.f, 89.f, -6.f, 81.f, -8.f, 77.f, -7.f, 76.f, -11.f, 71.f, -0.f, 66.f, -7.f, 65.f, -11.f, 59.f, -11.f, 53.f, -8.f, 52.f, -11.f, 46.f, -11.f, 41.f, -8.f, 37.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 0.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 4.f, -13.f, 13.f, -9.f, 22.f, -9.f, 35.f, -9.f, 0.f, -2.f, 0.f, -12.f, 0.f, -13.f, 8.f, -9.f, 17.f, -13.f, 21.f, -13.f, 24.f, -9.f, 33.f, -0.f, 37.f, -9.f, 49.f, -9.f, 59.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -0.f, 91.f, -8.f, 86.f, -6.f, 78.f, -8.f, 74.f, -7.f, 73.f, -11.f, 68.f, -0.f, 63.f, -7.f, 62.f, -11.f, 56.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 98.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 67.f, -10.f, 58.f, -13.f, 54.f, -10.f, 44.f, -10.f, 78.f, -0.f, 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 21.f, -13.f, 25.f, -13.f, 28.f, -9.f, 37.f, -0.f, 41.f, -9.f, 53.f, -9.f, 63.f, -9.f, 69.f, -13.f, 72.f, -13.f, 0.f, -0.f, 53.f, -8.f, 48.f, -6.f, 40.f, -8.f, 36.f, -7.f, 35.f, -11.f, 30.f, -0.f, 25.f, -7.f, 24.f, -11.f, 18.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f
2807 struct LineRun line01 =
2819 struct LineRun line02 =
2831 struct LineRun line03 =
2843 struct LineRun line04 =
2855 struct LineRun line05 =
2867 struct LineRun line06 =
2879 struct LineRun line07 =
2891 struct LineRun line08 =
2903 struct LineRun line09 =
2915 struct LineRun line10 =
2927 struct LineRun line11 =
2939 struct LineRun line12 =
2951 struct LineRun line13 =
2963 struct LineRun line14 =
2975 struct LineRun line15 =
2987 struct LineRun line16 =
2999 struct LineRun line17 =
3011 struct LineRun line18 =
3023 struct LineRun line19 =
3035 Vector<LineRun> lines;
3036 lines.PushBack(line01);
3037 lines.PushBack(line02);
3038 lines.PushBack(line03);
3039 lines.PushBack(line04);
3040 lines.PushBack(line05);
3041 lines.PushBack(line06);
3042 lines.PushBack(line07);
3043 lines.PushBack(line08);
3044 lines.PushBack(line09);
3045 lines.PushBack(line10);
3046 lines.PushBack(line11);
3047 lines.PushBack(line12);
3048 lines.PushBack(line13);
3049 lines.PushBack(line14);
3050 lines.PushBack(line15);
3051 lines.PushBack(line16);
3052 lines.PushBack(line17);
3053 lines.PushBack(line18);
3054 lines.PushBack(line19);
3056 LayoutTextData data =
3058 "Layout bidirectional text.",
3059 "Hello world demo שלום עולם.\n"
3060 "مرحبا بالعالم hello world שלום עולם\n"
3061 "שלום עולם hello world demo.\n"
3062 "hello world مرحبا بالعالم שלום עולם\n"
3063 "Hello world demo שלום עולם.\n"
3064 "שלום עולם hello world مرحبا بالعالم\n",
3067 fontDescriptionRuns.Begin(),
3073 Layout::Engine::MULTI_LINE_BOX,
3077 DevelText::EllipsisPosition::END,
3080 if(!LayoutTextTest(data))
3082 tet_result(TET_FAIL);
3085 tet_result(TET_PASS);
3089 int UtcDaliTextLayoutEllipsis01(void)
3091 ToolkitTestApplication application;
3092 tet_infoline(" UtcDaliTextLayoutEllipsis01");
3094 // Layout single-line LTR text with ellipsis.
3096 const std::string fontLatin("TizenSans");
3098 // Set a known font description
3099 FontDescriptionRun fontDescriptionRun01;
3100 fontDescriptionRun01.characterRun.characterIndex = 0u;
3101 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3102 fontDescriptionRun01.familyLength = fontLatin.size();
3103 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3104 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3105 fontDescriptionRun01.familyDefined = true;
3106 fontDescriptionRun01.weightDefined = false;
3107 fontDescriptionRun01.widthDefined = false;
3108 fontDescriptionRun01.slantDefined = false;
3109 fontDescriptionRun01.sizeDefined = false;
3111 Vector<FontDescriptionRun> fontDescriptionRuns;
3112 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3114 struct LineRun line01 =
3126 Vector<LineRun> lines;
3127 lines.PushBack(line01);
3159 Size textArea(100.f, 50.f);
3160 Size layoutSize(100.f, 20.f);
3162 LayoutTextData data =
3164 "Layout single-line LTR text with ellipsis.",
3165 "Hello world demo hello world demo hello world demo.",
3168 fontDescriptionRuns.Begin(),
3174 Layout::Engine::SINGLE_LINE_BOX,
3178 DevelText::EllipsisPosition::END,
3181 if(!LayoutTextTest(data))
3183 tet_result(TET_FAIL);
3186 tet_result(TET_PASS);
3190 int UtcDaliTextLayoutEllipsis02(void)
3192 ToolkitTestApplication application;
3193 tet_infoline(" UtcDaliTextLayoutEllipsis02");
3195 // Layout multi-line LTR text with ellipsis.
3197 const std::string fontLatin("TizenSans");
3199 // Set a known font description
3200 FontDescriptionRun fontDescriptionRun01;
3201 fontDescriptionRun01.characterRun.characterIndex = 0u;
3202 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3203 fontDescriptionRun01.familyLength = fontLatin.size();
3204 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3205 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3206 fontDescriptionRun01.familyDefined = true;
3207 fontDescriptionRun01.weightDefined = false;
3208 fontDescriptionRun01.widthDefined = false;
3209 fontDescriptionRun01.slantDefined = false;
3210 fontDescriptionRun01.sizeDefined = false;
3212 Vector<FontDescriptionRun> fontDescriptionRuns;
3213 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3215 struct LineRun line01 =
3227 struct LineRun line02 =
3239 Vector<LineRun> lines;
3240 lines.PushBack(line01);
3241 lines.PushBack(line02);
3245 0.f, -12.f, 10.f, -9.f, 19.f, -13.f, 23.f, -13.f, 26.f, -9.f, 35.f, -0.f, 39.f, -9.f, 51.f, -9.f, 61.f, -9.f, 67.f, -13.f, 70.f, -13.f, 79.f, -0.f, 0.f, -13.f, 9.f, -9.f, 18.f, -9.f, 31.f, -9.f, 40.f, -0.f, 45.f, -13.f, 53.f, -9.f, 62.f, -13.f, 66.f, -13.f, 69.f, -9.f, 78.f, -0.f, 82.f, -9.f
3248 Size textArea(100.f, 50.f);
3249 Size layoutSize(100.f, 40.f);
3251 LayoutTextData data =
3253 "Layout multi-line LTR text with ellipsis.",
3254 "Hello world demo hello world demo hello world demo.",
3257 fontDescriptionRuns.Begin(),
3263 Layout::Engine::MULTI_LINE_BOX,
3267 DevelText::EllipsisPosition::END,
3270 if(!LayoutTextTest(data))
3272 tet_result(TET_FAIL);
3275 tet_result(TET_PASS);
3279 int UtcDaliTextLayoutEllipsis03(void)
3281 ToolkitTestApplication application;
3282 tet_infoline(" UtcDaliTextLayoutEllipsis03");
3284 // Layout single-line RTL text with ellipsis.
3286 const std::string fontHebrew("TizenSansHebrew");
3287 const std::string fontArabic("TizenSansArabic");
3289 // Set a known font description
3290 FontDescriptionRun fontDescriptionRun01;
3291 fontDescriptionRun01.characterRun.characterIndex = 0u;
3292 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3293 fontDescriptionRun01.familyLength = fontHebrew.size();
3294 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3295 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
3296 fontDescriptionRun01.familyDefined = true;
3297 fontDescriptionRun01.weightDefined = false;
3298 fontDescriptionRun01.widthDefined = false;
3299 fontDescriptionRun01.slantDefined = false;
3300 fontDescriptionRun01.sizeDefined = false;
3302 FontDescriptionRun fontDescriptionRun02;
3303 fontDescriptionRun02.characterRun.characterIndex = 10u;
3304 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3305 fontDescriptionRun02.familyLength = fontArabic.size();
3306 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3307 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
3308 fontDescriptionRun02.familyDefined = true;
3309 fontDescriptionRun02.weightDefined = false;
3310 fontDescriptionRun02.widthDefined = false;
3311 fontDescriptionRun02.slantDefined = false;
3312 fontDescriptionRun02.sizeDefined = false;
3314 FontDescriptionRun fontDescriptionRun03;
3315 fontDescriptionRun03.characterRun.characterIndex = 24u;
3316 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3317 fontDescriptionRun03.familyLength = fontHebrew.size();
3318 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3319 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
3320 fontDescriptionRun03.familyDefined = true;
3321 fontDescriptionRun03.weightDefined = false;
3322 fontDescriptionRun03.widthDefined = false;
3323 fontDescriptionRun03.slantDefined = false;
3324 fontDescriptionRun03.sizeDefined = false;
3326 FontDescriptionRun fontDescriptionRun04;
3327 fontDescriptionRun04.characterRun.characterIndex = 34u;
3328 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3329 fontDescriptionRun04.familyLength = fontArabic.size();
3330 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3331 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
3332 fontDescriptionRun04.familyDefined = true;
3333 fontDescriptionRun04.weightDefined = false;
3334 fontDescriptionRun04.widthDefined = false;
3335 fontDescriptionRun04.slantDefined = false;
3336 fontDescriptionRun04.sizeDefined = false;
3338 FontDescriptionRun fontDescriptionRun05;
3339 fontDescriptionRun05.characterRun.characterIndex = 48u;
3340 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3341 fontDescriptionRun05.familyLength = fontHebrew.size();
3342 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3343 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
3344 fontDescriptionRun05.familyDefined = true;
3345 fontDescriptionRun05.weightDefined = false;
3346 fontDescriptionRun05.widthDefined = false;
3347 fontDescriptionRun05.slantDefined = false;
3348 fontDescriptionRun05.sizeDefined = false;
3350 FontDescriptionRun fontDescriptionRun06;
3351 fontDescriptionRun06.characterRun.characterIndex = 58u;
3352 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3353 fontDescriptionRun06.familyLength = fontArabic.size();
3354 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3355 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
3356 fontDescriptionRun06.familyDefined = true;
3357 fontDescriptionRun06.weightDefined = false;
3358 fontDescriptionRun06.widthDefined = false;
3359 fontDescriptionRun06.slantDefined = false;
3360 fontDescriptionRun06.sizeDefined = false;
3362 Vector<FontDescriptionRun> fontDescriptionRuns;
3363 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3364 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3365 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3366 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3367 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3368 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3370 struct LineRun line01 =
3382 Vector<LineRun> lines;
3383 lines.PushBack(line01);
3421 Size textArea(100.f, 50.f);
3422 Size layoutSize(100.f, 20.f);
3424 LayoutTextData data =
3426 "Layout single-line RTL text with ellipsis.",
3427 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3430 fontDescriptionRuns.Begin(),
3436 Layout::Engine::SINGLE_LINE_BOX,
3440 DevelText::EllipsisPosition::END,
3443 if(!LayoutTextTest(data))
3445 tet_result(TET_FAIL);
3448 tet_result(TET_PASS);
3452 int UtcDaliTextLayoutEllipsis04(void)
3454 ToolkitTestApplication application;
3455 tet_infoline(" UtcDaliTextLayoutEllipsis04");
3457 // Layout multi-line RTL text with ellipsis.
3459 const std::string fontHebrew("TizenSansHebrew");
3460 const std::string fontArabic("TizenSansArabic");
3462 // Set a known font description
3463 FontDescriptionRun fontDescriptionRun01;
3464 fontDescriptionRun01.characterRun.characterIndex = 0u;
3465 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
3466 fontDescriptionRun01.familyLength = fontHebrew.size();
3467 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3468 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
3469 fontDescriptionRun01.familyDefined = true;
3470 fontDescriptionRun01.weightDefined = false;
3471 fontDescriptionRun01.widthDefined = false;
3472 fontDescriptionRun01.slantDefined = false;
3473 fontDescriptionRun01.sizeDefined = false;
3475 FontDescriptionRun fontDescriptionRun02;
3476 fontDescriptionRun02.characterRun.characterIndex = 10u;
3477 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
3478 fontDescriptionRun02.familyLength = fontArabic.size();
3479 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3480 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
3481 fontDescriptionRun02.familyDefined = true;
3482 fontDescriptionRun02.weightDefined = false;
3483 fontDescriptionRun02.widthDefined = false;
3484 fontDescriptionRun02.slantDefined = false;
3485 fontDescriptionRun02.sizeDefined = false;
3487 FontDescriptionRun fontDescriptionRun03;
3488 fontDescriptionRun03.characterRun.characterIndex = 24u;
3489 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
3490 fontDescriptionRun03.familyLength = fontHebrew.size();
3491 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3492 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
3493 fontDescriptionRun03.familyDefined = true;
3494 fontDescriptionRun03.weightDefined = false;
3495 fontDescriptionRun03.widthDefined = false;
3496 fontDescriptionRun03.slantDefined = false;
3497 fontDescriptionRun03.sizeDefined = false;
3499 FontDescriptionRun fontDescriptionRun04;
3500 fontDescriptionRun04.characterRun.characterIndex = 34u;
3501 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3502 fontDescriptionRun04.familyLength = fontArabic.size();
3503 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3504 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
3505 fontDescriptionRun04.familyDefined = true;
3506 fontDescriptionRun04.weightDefined = false;
3507 fontDescriptionRun04.widthDefined = false;
3508 fontDescriptionRun04.slantDefined = false;
3509 fontDescriptionRun04.sizeDefined = false;
3511 FontDescriptionRun fontDescriptionRun05;
3512 fontDescriptionRun05.characterRun.characterIndex = 48u;
3513 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
3514 fontDescriptionRun05.familyLength = fontHebrew.size();
3515 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3516 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
3517 fontDescriptionRun05.familyDefined = true;
3518 fontDescriptionRun05.weightDefined = false;
3519 fontDescriptionRun05.widthDefined = false;
3520 fontDescriptionRun05.slantDefined = false;
3521 fontDescriptionRun05.sizeDefined = false;
3523 FontDescriptionRun fontDescriptionRun06;
3524 fontDescriptionRun06.characterRun.characterIndex = 58u;
3525 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
3526 fontDescriptionRun06.familyLength = fontArabic.size();
3527 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3528 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
3529 fontDescriptionRun06.familyDefined = true;
3530 fontDescriptionRun06.weightDefined = false;
3531 fontDescriptionRun06.widthDefined = false;
3532 fontDescriptionRun06.slantDefined = false;
3533 fontDescriptionRun06.sizeDefined = false;
3535 Vector<FontDescriptionRun> fontDescriptionRuns;
3536 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3537 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3538 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3539 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3540 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3541 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3543 struct LineRun line01 =
3555 struct LineRun line02 =
3567 Vector<LineRun> lines;
3568 lines.PushBack(line01);
3569 lines.PushBack(line02);
3573 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 40.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 95.f, -8.f, 90.f, -6.f, 82.f, -8.f, 78.f, -7.f, 77.f, -11.f, 72.f, -0.f, 67.f, -7.f, 66.f, -11.f, 60.f, -11.f, 54.f, -8.f, 53.f, -11.f, 47.f, -11.f, 42.f, -8.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 91.f, -10.f, 87.f, -10.f, 78.f, -13.f, 68.f, -10.f, 64.f, -0.f
3576 Size textArea(100.f, 50.f);
3577 Size layoutSize(100.f, 40.f);
3579 LayoutTextData data =
3581 "Layout multi-line RTL text with ellipsis.",
3582 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
3585 fontDescriptionRuns.Begin(),
3591 Layout::Engine::MULTI_LINE_BOX,
3595 DevelText::EllipsisPosition::END,
3598 if(!LayoutTextTest(data))
3600 tet_result(TET_FAIL);
3603 tet_result(TET_PASS);
3607 int UtcDaliTextLayoutEllipsis05(void)
3609 ToolkitTestApplication application;
3610 tet_infoline(" UtcDaliTextLayoutEllipsis05");
3612 const std::string fontLatin("TizenSans");
3614 // Set a known font description
3615 FontDescriptionRun fontDescriptionRun01;
3616 fontDescriptionRun01.characterRun.characterIndex = 0u;
3617 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
3618 fontDescriptionRun01.familyLength = fontLatin.size();
3619 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3620 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3621 fontDescriptionRun01.familyDefined = true;
3622 fontDescriptionRun01.weightDefined = false;
3623 fontDescriptionRun01.widthDefined = false;
3624 fontDescriptionRun01.slantDefined = false;
3625 fontDescriptionRun01.sizeDefined = false;
3627 Vector<FontDescriptionRun> fontDescriptionRuns;
3628 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3630 struct LineRun line01 =
3642 Vector<LineRun> lines;
3643 lines.PushBack(line01);
3649 Size textArea(100.f, 19.f);
3650 Size layoutSize(100.f, 20.f);
3652 LayoutTextData data =
3654 "Not enough height.",
3658 fontDescriptionRuns.Begin(),
3664 Layout::Engine::MULTI_LINE_BOX,
3668 DevelText::EllipsisPosition::END,
3671 if(!LayoutTextTest(data))
3673 tet_result(TET_FAIL);
3676 tet_result(TET_PASS);
3680 int UtcDaliTextAlign01(void)
3682 ToolkitTestApplication application;
3683 tet_infoline(" UtcDaliTextAlign01");
3685 // Calculate text alignment.
3687 const std::string fontLatin("TizenSans");
3688 const std::string fontHebrew("TizenSansHebrew");
3689 const std::string fontArabic("TizenSansArabic");
3691 // Set a known font description
3692 FontDescriptionRun fontDescriptionRun01;
3693 fontDescriptionRun01.characterRun.characterIndex = 0u;
3694 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
3695 fontDescriptionRun01.familyLength = fontLatin.size();
3696 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3697 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3698 fontDescriptionRun01.familyDefined = true;
3699 fontDescriptionRun01.weightDefined = false;
3700 fontDescriptionRun01.widthDefined = false;
3701 fontDescriptionRun01.slantDefined = false;
3702 fontDescriptionRun01.sizeDefined = false;
3704 FontDescriptionRun fontDescriptionRun02;
3705 fontDescriptionRun02.characterRun.characterIndex = 12u;
3706 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
3707 fontDescriptionRun02.familyLength = fontHebrew.size();
3708 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3709 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3710 fontDescriptionRun02.familyDefined = true;
3711 fontDescriptionRun02.weightDefined = false;
3712 fontDescriptionRun02.widthDefined = false;
3713 fontDescriptionRun02.slantDefined = false;
3714 fontDescriptionRun02.sizeDefined = false;
3716 FontDescriptionRun fontDescriptionRun03;
3717 fontDescriptionRun03.characterRun.characterIndex = 22u;
3718 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3719 fontDescriptionRun03.familyLength = fontArabic.size();
3720 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3721 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
3722 fontDescriptionRun03.familyDefined = true;
3723 fontDescriptionRun03.weightDefined = false;
3724 fontDescriptionRun03.widthDefined = false;
3725 fontDescriptionRun03.slantDefined = false;
3726 fontDescriptionRun03.sizeDefined = false;
3728 FontDescriptionRun fontDescriptionRun04;
3729 fontDescriptionRun04.characterRun.characterIndex = 36u;
3730 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
3731 fontDescriptionRun04.familyLength = fontLatin.size();
3732 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3733 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
3734 fontDescriptionRun04.familyDefined = true;
3735 fontDescriptionRun04.weightDefined = false;
3736 fontDescriptionRun04.widthDefined = false;
3737 fontDescriptionRun04.slantDefined = false;
3738 fontDescriptionRun04.sizeDefined = false;
3740 FontDescriptionRun fontDescriptionRun05;
3741 fontDescriptionRun05.characterRun.characterIndex = 48u;
3742 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3743 fontDescriptionRun05.familyLength = fontLatin.size();
3744 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3745 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3746 fontDescriptionRun05.familyDefined = true;
3747 fontDescriptionRun05.weightDefined = false;
3748 fontDescriptionRun05.widthDefined = false;
3749 fontDescriptionRun05.slantDefined = false;
3750 fontDescriptionRun05.sizeDefined = false;
3752 FontDescriptionRun fontDescriptionRun06;
3753 fontDescriptionRun06.characterRun.characterIndex = 60u;
3754 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
3755 fontDescriptionRun06.familyLength = fontArabic.size();
3756 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3757 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
3758 fontDescriptionRun06.familyDefined = true;
3759 fontDescriptionRun06.weightDefined = false;
3760 fontDescriptionRun06.widthDefined = false;
3761 fontDescriptionRun06.slantDefined = false;
3762 fontDescriptionRun06.sizeDefined = false;
3764 Vector<FontDescriptionRun> fontDescriptionRuns;
3765 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3766 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3767 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3768 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3769 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3770 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3772 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
3774 Size textArea(100.f, 300.f);
3777 "Begin alignment for the first paragraph.",
3778 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
3781 fontDescriptionRuns.Begin(),
3782 Text::HorizontalAlignment::BEGIN,
3783 Text::VerticalAlignment::TOP,
3788 Dali::LayoutDirection::LEFT_TO_RIGHT,
3791 if(!AlignTest(data))
3793 tet_result(TET_FAIL);
3796 tet_result(TET_PASS);
3800 int UtcDaliTextAlign02(void)
3802 ToolkitTestApplication application;
3803 tet_infoline(" UtcDaliTextAlign02");
3805 // Calculate text alignment.
3807 const std::string fontLatin("TizenSans");
3808 const std::string fontHebrew("TizenSansHebrew");
3809 const std::string fontArabic("TizenSansArabic");
3811 // Set a known font description
3812 FontDescriptionRun fontDescriptionRun01;
3813 fontDescriptionRun01.characterRun.characterIndex = 0u;
3814 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
3815 fontDescriptionRun01.familyLength = fontLatin.size();
3816 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3817 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3818 fontDescriptionRun01.familyDefined = true;
3819 fontDescriptionRun01.weightDefined = false;
3820 fontDescriptionRun01.widthDefined = false;
3821 fontDescriptionRun01.slantDefined = false;
3822 fontDescriptionRun01.sizeDefined = false;
3824 FontDescriptionRun fontDescriptionRun02;
3825 fontDescriptionRun02.characterRun.characterIndex = 12u;
3826 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
3827 fontDescriptionRun02.familyLength = fontHebrew.size();
3828 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3829 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3830 fontDescriptionRun02.familyDefined = true;
3831 fontDescriptionRun02.weightDefined = false;
3832 fontDescriptionRun02.widthDefined = false;
3833 fontDescriptionRun02.slantDefined = false;
3834 fontDescriptionRun02.sizeDefined = false;
3836 FontDescriptionRun fontDescriptionRun03;
3837 fontDescriptionRun03.characterRun.characterIndex = 22u;
3838 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3839 fontDescriptionRun03.familyLength = fontArabic.size();
3840 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3841 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
3842 fontDescriptionRun03.familyDefined = true;
3843 fontDescriptionRun03.weightDefined = false;
3844 fontDescriptionRun03.widthDefined = false;
3845 fontDescriptionRun03.slantDefined = false;
3846 fontDescriptionRun03.sizeDefined = false;
3848 FontDescriptionRun fontDescriptionRun04;
3849 fontDescriptionRun04.characterRun.characterIndex = 36u;
3850 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
3851 fontDescriptionRun04.familyLength = fontLatin.size();
3852 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3853 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
3854 fontDescriptionRun04.familyDefined = true;
3855 fontDescriptionRun04.weightDefined = false;
3856 fontDescriptionRun04.widthDefined = false;
3857 fontDescriptionRun04.slantDefined = false;
3858 fontDescriptionRun04.sizeDefined = false;
3860 FontDescriptionRun fontDescriptionRun05;
3861 fontDescriptionRun05.characterRun.characterIndex = 48u;
3862 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3863 fontDescriptionRun05.familyLength = fontLatin.size();
3864 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3865 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3866 fontDescriptionRun05.familyDefined = true;
3867 fontDescriptionRun05.weightDefined = false;
3868 fontDescriptionRun05.widthDefined = false;
3869 fontDescriptionRun05.slantDefined = false;
3870 fontDescriptionRun05.sizeDefined = false;
3872 FontDescriptionRun fontDescriptionRun06;
3873 fontDescriptionRun06.characterRun.characterIndex = 60u;
3874 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
3875 fontDescriptionRun06.familyLength = fontArabic.size();
3876 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3877 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
3878 fontDescriptionRun06.familyDefined = true;
3879 fontDescriptionRun06.weightDefined = false;
3880 fontDescriptionRun06.widthDefined = false;
3881 fontDescriptionRun06.slantDefined = false;
3882 fontDescriptionRun06.sizeDefined = false;
3884 Vector<FontDescriptionRun> fontDescriptionRuns;
3885 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3886 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3887 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3888 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3889 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3890 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3892 float positions[] = {0.f, 0.f, 34.f, 21.f, 0.f, 0.f};
3894 Size textArea(100.f, 300.f);
3897 "Begin alignment for the mid paragraph.",
3898 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
3901 fontDescriptionRuns.Begin(),
3902 Text::HorizontalAlignment::BEGIN,
3903 Text::VerticalAlignment::TOP,
3908 Dali::LayoutDirection::LEFT_TO_RIGHT,
3911 if(!AlignTest(data))
3913 tet_result(TET_FAIL);
3916 tet_result(TET_PASS);
3920 int UtcDaliTextAlign03(void)
3922 ToolkitTestApplication application;
3923 tet_infoline(" UtcDaliTextAlign03");
3925 // Calculate text alignment.
3927 const std::string fontLatin("TizenSans");
3928 const std::string fontHebrew("TizenSansHebrew");
3929 const std::string fontArabic("TizenSansArabic");
3931 // Set a known font description
3932 FontDescriptionRun fontDescriptionRun01;
3933 fontDescriptionRun01.characterRun.characterIndex = 0u;
3934 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
3935 fontDescriptionRun01.familyLength = fontLatin.size();
3936 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3937 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3938 fontDescriptionRun01.familyDefined = true;
3939 fontDescriptionRun01.weightDefined = false;
3940 fontDescriptionRun01.widthDefined = false;
3941 fontDescriptionRun01.slantDefined = false;
3942 fontDescriptionRun01.sizeDefined = false;
3944 FontDescriptionRun fontDescriptionRun02;
3945 fontDescriptionRun02.characterRun.characterIndex = 12u;
3946 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
3947 fontDescriptionRun02.familyLength = fontHebrew.size();
3948 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3949 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3950 fontDescriptionRun02.familyDefined = true;
3951 fontDescriptionRun02.weightDefined = false;
3952 fontDescriptionRun02.widthDefined = false;
3953 fontDescriptionRun02.slantDefined = false;
3954 fontDescriptionRun02.sizeDefined = false;
3956 FontDescriptionRun fontDescriptionRun03;
3957 fontDescriptionRun03.characterRun.characterIndex = 22u;
3958 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
3959 fontDescriptionRun03.familyLength = fontArabic.size();
3960 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3961 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
3962 fontDescriptionRun03.familyDefined = true;
3963 fontDescriptionRun03.weightDefined = false;
3964 fontDescriptionRun03.widthDefined = false;
3965 fontDescriptionRun03.slantDefined = false;
3966 fontDescriptionRun03.sizeDefined = false;
3968 FontDescriptionRun fontDescriptionRun04;
3969 fontDescriptionRun04.characterRun.characterIndex = 36u;
3970 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
3971 fontDescriptionRun04.familyLength = fontLatin.size();
3972 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3973 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
3974 fontDescriptionRun04.familyDefined = true;
3975 fontDescriptionRun04.weightDefined = false;
3976 fontDescriptionRun04.widthDefined = false;
3977 fontDescriptionRun04.slantDefined = false;
3978 fontDescriptionRun04.sizeDefined = false;
3980 FontDescriptionRun fontDescriptionRun05;
3981 fontDescriptionRun05.characterRun.characterIndex = 48u;
3982 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3983 fontDescriptionRun05.familyLength = fontLatin.size();
3984 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3985 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3986 fontDescriptionRun05.familyDefined = true;
3987 fontDescriptionRun05.weightDefined = false;
3988 fontDescriptionRun05.widthDefined = false;
3989 fontDescriptionRun05.slantDefined = false;
3990 fontDescriptionRun05.sizeDefined = false;
3992 FontDescriptionRun fontDescriptionRun06;
3993 fontDescriptionRun06.characterRun.characterIndex = 60u;
3994 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
3995 fontDescriptionRun06.familyLength = fontArabic.size();
3996 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3997 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
3998 fontDescriptionRun06.familyDefined = true;
3999 fontDescriptionRun06.weightDefined = false;
4000 fontDescriptionRun06.widthDefined = false;
4001 fontDescriptionRun06.slantDefined = false;
4002 fontDescriptionRun06.sizeDefined = false;
4004 Vector<FontDescriptionRun> fontDescriptionRuns;
4005 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4006 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4007 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4008 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4009 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4010 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4012 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
4014 Size textArea(100.f, 300.f);
4017 "Begin alignment for the last paragraph.",
4018 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4021 fontDescriptionRuns.Begin(),
4022 Text::HorizontalAlignment::BEGIN,
4023 Text::VerticalAlignment::TOP,
4028 Dali::LayoutDirection::LEFT_TO_RIGHT,
4031 if(!AlignTest(data))
4033 tet_result(TET_FAIL);
4036 tet_result(TET_PASS);
4040 int UtcDaliTextAlign04(void)
4042 ToolkitTestApplication application;
4043 tet_infoline(" UtcDaliTextAlign04");
4045 // Calculate text alignment.
4047 const std::string fontLatin("TizenSans");
4048 const std::string fontHebrew("TizenSansHebrew");
4049 const std::string fontArabic("TizenSansArabic");
4051 // Set a known font description
4052 FontDescriptionRun fontDescriptionRun01;
4053 fontDescriptionRun01.characterRun.characterIndex = 0u;
4054 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4055 fontDescriptionRun01.familyLength = fontLatin.size();
4056 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4057 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4058 fontDescriptionRun01.familyDefined = true;
4059 fontDescriptionRun01.weightDefined = false;
4060 fontDescriptionRun01.widthDefined = false;
4061 fontDescriptionRun01.slantDefined = false;
4062 fontDescriptionRun01.sizeDefined = false;
4064 FontDescriptionRun fontDescriptionRun02;
4065 fontDescriptionRun02.characterRun.characterIndex = 12u;
4066 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4067 fontDescriptionRun02.familyLength = fontHebrew.size();
4068 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4069 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4070 fontDescriptionRun02.familyDefined = true;
4071 fontDescriptionRun02.weightDefined = false;
4072 fontDescriptionRun02.widthDefined = false;
4073 fontDescriptionRun02.slantDefined = false;
4074 fontDescriptionRun02.sizeDefined = false;
4076 FontDescriptionRun fontDescriptionRun03;
4077 fontDescriptionRun03.characterRun.characterIndex = 22u;
4078 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4079 fontDescriptionRun03.familyLength = fontArabic.size();
4080 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4081 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4082 fontDescriptionRun03.familyDefined = true;
4083 fontDescriptionRun03.weightDefined = false;
4084 fontDescriptionRun03.widthDefined = false;
4085 fontDescriptionRun03.slantDefined = false;
4086 fontDescriptionRun03.sizeDefined = false;
4088 FontDescriptionRun fontDescriptionRun04;
4089 fontDescriptionRun04.characterRun.characterIndex = 36u;
4090 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4091 fontDescriptionRun04.familyLength = fontLatin.size();
4092 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4093 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4094 fontDescriptionRun04.familyDefined = true;
4095 fontDescriptionRun04.weightDefined = false;
4096 fontDescriptionRun04.widthDefined = false;
4097 fontDescriptionRun04.slantDefined = false;
4098 fontDescriptionRun04.sizeDefined = false;
4100 FontDescriptionRun fontDescriptionRun05;
4101 fontDescriptionRun05.characterRun.characterIndex = 48u;
4102 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4103 fontDescriptionRun05.familyLength = fontLatin.size();
4104 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4105 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4106 fontDescriptionRun05.familyDefined = true;
4107 fontDescriptionRun05.weightDefined = false;
4108 fontDescriptionRun05.widthDefined = false;
4109 fontDescriptionRun05.slantDefined = false;
4110 fontDescriptionRun05.sizeDefined = false;
4112 FontDescriptionRun fontDescriptionRun06;
4113 fontDescriptionRun06.characterRun.characterIndex = 60u;
4114 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4115 fontDescriptionRun06.familyLength = fontArabic.size();
4116 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4117 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4118 fontDescriptionRun06.familyDefined = true;
4119 fontDescriptionRun06.weightDefined = false;
4120 fontDescriptionRun06.widthDefined = false;
4121 fontDescriptionRun06.slantDefined = false;
4122 fontDescriptionRun06.sizeDefined = false;
4124 Vector<FontDescriptionRun> fontDescriptionRuns;
4125 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4126 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4127 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4128 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4129 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4130 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4132 float positions[] = {10.f, 15.f, 0.f, 0.f, 0.f, 0.f};
4134 Size textArea(100.f, 300.f);
4137 "Center alignment for the first paragraph.",
4138 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4141 fontDescriptionRuns.Begin(),
4142 Text::HorizontalAlignment::CENTER,
4143 Text::VerticalAlignment::TOP,
4148 Dali::LayoutDirection::LEFT_TO_RIGHT,
4151 if(!AlignTest(data))
4153 tet_result(TET_FAIL);
4156 tet_result(TET_PASS);
4160 int UtcDaliTextAlign05(void)
4162 ToolkitTestApplication application;
4163 tet_infoline(" UtcDaliTextAlign05");
4165 // Calculate text alignment.
4167 const std::string fontLatin("TizenSans");
4168 const std::string fontHebrew("TizenSansHebrew");
4169 const std::string fontArabic("TizenSansArabic");
4171 // Set a known font description
4172 FontDescriptionRun fontDescriptionRun01;
4173 fontDescriptionRun01.characterRun.characterIndex = 0u;
4174 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4175 fontDescriptionRun01.familyLength = fontLatin.size();
4176 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4177 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4178 fontDescriptionRun01.familyDefined = true;
4179 fontDescriptionRun01.weightDefined = false;
4180 fontDescriptionRun01.widthDefined = false;
4181 fontDescriptionRun01.slantDefined = false;
4182 fontDescriptionRun01.sizeDefined = false;
4184 FontDescriptionRun fontDescriptionRun02;
4185 fontDescriptionRun02.characterRun.characterIndex = 12u;
4186 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4187 fontDescriptionRun02.familyLength = fontHebrew.size();
4188 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4189 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4190 fontDescriptionRun02.familyDefined = true;
4191 fontDescriptionRun02.weightDefined = false;
4192 fontDescriptionRun02.widthDefined = false;
4193 fontDescriptionRun02.slantDefined = false;
4194 fontDescriptionRun02.sizeDefined = false;
4196 FontDescriptionRun fontDescriptionRun03;
4197 fontDescriptionRun03.characterRun.characterIndex = 22u;
4198 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4199 fontDescriptionRun03.familyLength = fontArabic.size();
4200 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4201 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4202 fontDescriptionRun03.familyDefined = true;
4203 fontDescriptionRun03.weightDefined = false;
4204 fontDescriptionRun03.widthDefined = false;
4205 fontDescriptionRun03.slantDefined = false;
4206 fontDescriptionRun03.sizeDefined = false;
4208 FontDescriptionRun fontDescriptionRun04;
4209 fontDescriptionRun04.characterRun.characterIndex = 36u;
4210 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4211 fontDescriptionRun04.familyLength = fontLatin.size();
4212 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4213 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4214 fontDescriptionRun04.familyDefined = true;
4215 fontDescriptionRun04.weightDefined = false;
4216 fontDescriptionRun04.widthDefined = false;
4217 fontDescriptionRun04.slantDefined = false;
4218 fontDescriptionRun04.sizeDefined = false;
4220 FontDescriptionRun fontDescriptionRun05;
4221 fontDescriptionRun05.characterRun.characterIndex = 48u;
4222 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4223 fontDescriptionRun05.familyLength = fontLatin.size();
4224 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4225 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4226 fontDescriptionRun05.familyDefined = true;
4227 fontDescriptionRun05.weightDefined = false;
4228 fontDescriptionRun05.widthDefined = false;
4229 fontDescriptionRun05.slantDefined = false;
4230 fontDescriptionRun05.sizeDefined = false;
4232 FontDescriptionRun fontDescriptionRun06;
4233 fontDescriptionRun06.characterRun.characterIndex = 60u;
4234 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4235 fontDescriptionRun06.familyLength = fontArabic.size();
4236 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4237 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4238 fontDescriptionRun06.familyDefined = true;
4239 fontDescriptionRun06.weightDefined = false;
4240 fontDescriptionRun06.widthDefined = false;
4241 fontDescriptionRun06.slantDefined = false;
4242 fontDescriptionRun06.sizeDefined = false;
4244 Vector<FontDescriptionRun> fontDescriptionRuns;
4245 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4246 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4247 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4248 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4249 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4250 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4252 float positions[] = {0.f, 0.f, 15.f, 10.f, 0.f, 0.f};
4254 Size textArea(100.f, 300.f);
4257 "Center alignment for the mid paragraph.",
4258 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4261 fontDescriptionRuns.Begin(),
4262 Text::HorizontalAlignment::CENTER,
4263 Text::VerticalAlignment::TOP,
4268 Dali::LayoutDirection::LEFT_TO_RIGHT,
4271 if(!AlignTest(data))
4273 tet_result(TET_FAIL);
4276 tet_result(TET_PASS);
4280 int UtcDaliTextAlign06(void)
4282 ToolkitTestApplication application;
4283 tet_infoline(" UtcDaliTextAlign06");
4285 // Calculate text alignment.
4287 const std::string fontLatin("TizenSans");
4288 const std::string fontHebrew("TizenSansHebrew");
4289 const std::string fontArabic("TizenSansArabic");
4291 // Set a known font description
4292 FontDescriptionRun fontDescriptionRun01;
4293 fontDescriptionRun01.characterRun.characterIndex = 0u;
4294 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4295 fontDescriptionRun01.familyLength = fontLatin.size();
4296 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4297 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4298 fontDescriptionRun01.familyDefined = true;
4299 fontDescriptionRun01.weightDefined = false;
4300 fontDescriptionRun01.widthDefined = false;
4301 fontDescriptionRun01.slantDefined = false;
4302 fontDescriptionRun01.sizeDefined = false;
4304 FontDescriptionRun fontDescriptionRun02;
4305 fontDescriptionRun02.characterRun.characterIndex = 12u;
4306 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4307 fontDescriptionRun02.familyLength = fontHebrew.size();
4308 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4309 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4310 fontDescriptionRun02.familyDefined = true;
4311 fontDescriptionRun02.weightDefined = false;
4312 fontDescriptionRun02.widthDefined = false;
4313 fontDescriptionRun02.slantDefined = false;
4314 fontDescriptionRun02.sizeDefined = false;
4316 FontDescriptionRun fontDescriptionRun03;
4317 fontDescriptionRun03.characterRun.characterIndex = 22u;
4318 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4319 fontDescriptionRun03.familyLength = fontArabic.size();
4320 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4321 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4322 fontDescriptionRun03.familyDefined = true;
4323 fontDescriptionRun03.weightDefined = false;
4324 fontDescriptionRun03.widthDefined = false;
4325 fontDescriptionRun03.slantDefined = false;
4326 fontDescriptionRun03.sizeDefined = false;
4328 FontDescriptionRun fontDescriptionRun04;
4329 fontDescriptionRun04.characterRun.characterIndex = 36u;
4330 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4331 fontDescriptionRun04.familyLength = fontLatin.size();
4332 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4333 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4334 fontDescriptionRun04.familyDefined = true;
4335 fontDescriptionRun04.weightDefined = false;
4336 fontDescriptionRun04.widthDefined = false;
4337 fontDescriptionRun04.slantDefined = false;
4338 fontDescriptionRun04.sizeDefined = false;
4340 FontDescriptionRun fontDescriptionRun05;
4341 fontDescriptionRun05.characterRun.characterIndex = 48u;
4342 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4343 fontDescriptionRun05.familyLength = fontLatin.size();
4344 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4345 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4346 fontDescriptionRun05.familyDefined = true;
4347 fontDescriptionRun05.weightDefined = false;
4348 fontDescriptionRun05.widthDefined = false;
4349 fontDescriptionRun05.slantDefined = false;
4350 fontDescriptionRun05.sizeDefined = false;
4352 FontDescriptionRun fontDescriptionRun06;
4353 fontDescriptionRun06.characterRun.characterIndex = 60u;
4354 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4355 fontDescriptionRun06.familyLength = fontArabic.size();
4356 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4357 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4358 fontDescriptionRun06.familyDefined = true;
4359 fontDescriptionRun06.weightDefined = false;
4360 fontDescriptionRun06.widthDefined = false;
4361 fontDescriptionRun06.slantDefined = false;
4362 fontDescriptionRun06.sizeDefined = false;
4364 Vector<FontDescriptionRun> fontDescriptionRuns;
4365 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4366 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4367 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4368 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4369 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4370 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4372 float positions[] = {0.f, 0.f, 0.f, 0.f, 10.f, 17.f};
4374 Size textArea(100.f, 300.f);
4377 "Center alignment for the last paragraph.",
4378 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4381 fontDescriptionRuns.Begin(),
4382 Text::HorizontalAlignment::CENTER,
4383 Text::VerticalAlignment::TOP,
4388 Dali::LayoutDirection::LEFT_TO_RIGHT,
4391 if(!AlignTest(data))
4393 tet_result(TET_FAIL);
4396 tet_result(TET_PASS);
4400 int UtcDaliTextAlign07(void)
4402 ToolkitTestApplication application;
4403 tet_infoline(" UtcDaliTextAlign07");
4405 // Calculate text alignment.
4407 const std::string fontLatin("TizenSans");
4408 const std::string fontHebrew("TizenSansHebrew");
4409 const std::string fontArabic("TizenSansArabic");
4411 // Set a known font description
4412 FontDescriptionRun fontDescriptionRun01;
4413 fontDescriptionRun01.characterRun.characterIndex = 0u;
4414 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4415 fontDescriptionRun01.familyLength = fontLatin.size();
4416 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4417 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4418 fontDescriptionRun01.familyDefined = true;
4419 fontDescriptionRun01.weightDefined = false;
4420 fontDescriptionRun01.widthDefined = false;
4421 fontDescriptionRun01.slantDefined = false;
4422 fontDescriptionRun01.sizeDefined = false;
4424 FontDescriptionRun fontDescriptionRun02;
4425 fontDescriptionRun02.characterRun.characterIndex = 12u;
4426 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4427 fontDescriptionRun02.familyLength = fontHebrew.size();
4428 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4429 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4430 fontDescriptionRun02.familyDefined = true;
4431 fontDescriptionRun02.weightDefined = false;
4432 fontDescriptionRun02.widthDefined = false;
4433 fontDescriptionRun02.slantDefined = false;
4434 fontDescriptionRun02.sizeDefined = false;
4436 FontDescriptionRun fontDescriptionRun03;
4437 fontDescriptionRun03.characterRun.characterIndex = 22u;
4438 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4439 fontDescriptionRun03.familyLength = fontArabic.size();
4440 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4441 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4442 fontDescriptionRun03.familyDefined = true;
4443 fontDescriptionRun03.weightDefined = false;
4444 fontDescriptionRun03.widthDefined = false;
4445 fontDescriptionRun03.slantDefined = false;
4446 fontDescriptionRun03.sizeDefined = false;
4448 FontDescriptionRun fontDescriptionRun04;
4449 fontDescriptionRun04.characterRun.characterIndex = 36u;
4450 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4451 fontDescriptionRun04.familyLength = fontLatin.size();
4452 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4453 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4454 fontDescriptionRun04.familyDefined = true;
4455 fontDescriptionRun04.weightDefined = false;
4456 fontDescriptionRun04.widthDefined = false;
4457 fontDescriptionRun04.slantDefined = false;
4458 fontDescriptionRun04.sizeDefined = false;
4460 FontDescriptionRun fontDescriptionRun05;
4461 fontDescriptionRun05.characterRun.characterIndex = 48u;
4462 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4463 fontDescriptionRun05.familyLength = fontLatin.size();
4464 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4465 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4466 fontDescriptionRun05.familyDefined = true;
4467 fontDescriptionRun05.weightDefined = false;
4468 fontDescriptionRun05.widthDefined = false;
4469 fontDescriptionRun05.slantDefined = false;
4470 fontDescriptionRun05.sizeDefined = false;
4472 FontDescriptionRun fontDescriptionRun06;
4473 fontDescriptionRun06.characterRun.characterIndex = 60u;
4474 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4475 fontDescriptionRun06.familyLength = fontArabic.size();
4476 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4477 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4478 fontDescriptionRun06.familyDefined = true;
4479 fontDescriptionRun06.weightDefined = false;
4480 fontDescriptionRun06.widthDefined = false;
4481 fontDescriptionRun06.slantDefined = false;
4482 fontDescriptionRun06.sizeDefined = false;
4484 Vector<FontDescriptionRun> fontDescriptionRuns;
4485 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4486 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4487 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4488 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4489 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4490 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4492 float positions[] = {21.f, 30.f, 0.f, 0.f, 0.f, 0.f};
4494 Size textArea(100.f, 300.f);
4497 "End alignment for the first paragraph.",
4498 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4501 fontDescriptionRuns.Begin(),
4502 Text::HorizontalAlignment::END,
4503 Text::VerticalAlignment::TOP,
4508 Dali::LayoutDirection::LEFT_TO_RIGHT,
4511 if(!AlignTest(data))
4513 tet_result(TET_FAIL);
4516 tet_result(TET_PASS);
4520 int UtcDaliTextAlign08(void)
4522 ToolkitTestApplication application;
4523 tet_infoline(" UtcDaliTextAlign08");
4525 // Calculate text alignment.
4527 const std::string fontLatin("TizenSans");
4528 const std::string fontHebrew("TizenSansHebrew");
4529 const std::string fontArabic("TizenSansArabic");
4531 // Set a known font description
4532 FontDescriptionRun fontDescriptionRun01;
4533 fontDescriptionRun01.characterRun.characterIndex = 0u;
4534 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4535 fontDescriptionRun01.familyLength = fontLatin.size();
4536 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4537 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4538 fontDescriptionRun01.familyDefined = true;
4539 fontDescriptionRun01.weightDefined = false;
4540 fontDescriptionRun01.widthDefined = false;
4541 fontDescriptionRun01.slantDefined = false;
4542 fontDescriptionRun01.sizeDefined = false;
4544 FontDescriptionRun fontDescriptionRun02;
4545 fontDescriptionRun02.characterRun.characterIndex = 12u;
4546 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4547 fontDescriptionRun02.familyLength = fontHebrew.size();
4548 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4549 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4550 fontDescriptionRun02.familyDefined = true;
4551 fontDescriptionRun02.weightDefined = false;
4552 fontDescriptionRun02.widthDefined = false;
4553 fontDescriptionRun02.slantDefined = false;
4554 fontDescriptionRun02.sizeDefined = false;
4556 FontDescriptionRun fontDescriptionRun03;
4557 fontDescriptionRun03.characterRun.characterIndex = 22u;
4558 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4559 fontDescriptionRun03.familyLength = fontArabic.size();
4560 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4561 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4562 fontDescriptionRun03.familyDefined = true;
4563 fontDescriptionRun03.weightDefined = false;
4564 fontDescriptionRun03.widthDefined = false;
4565 fontDescriptionRun03.slantDefined = false;
4566 fontDescriptionRun03.sizeDefined = false;
4568 FontDescriptionRun fontDescriptionRun04;
4569 fontDescriptionRun04.characterRun.characterIndex = 36u;
4570 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4571 fontDescriptionRun04.familyLength = fontLatin.size();
4572 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4573 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4574 fontDescriptionRun04.familyDefined = true;
4575 fontDescriptionRun04.weightDefined = false;
4576 fontDescriptionRun04.widthDefined = false;
4577 fontDescriptionRun04.slantDefined = false;
4578 fontDescriptionRun04.sizeDefined = false;
4580 FontDescriptionRun fontDescriptionRun05;
4581 fontDescriptionRun05.characterRun.characterIndex = 48u;
4582 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4583 fontDescriptionRun05.familyLength = fontLatin.size();
4584 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4585 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4586 fontDescriptionRun05.familyDefined = true;
4587 fontDescriptionRun05.weightDefined = false;
4588 fontDescriptionRun05.widthDefined = false;
4589 fontDescriptionRun05.slantDefined = false;
4590 fontDescriptionRun05.sizeDefined = false;
4592 FontDescriptionRun fontDescriptionRun06;
4593 fontDescriptionRun06.characterRun.characterIndex = 60u;
4594 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4595 fontDescriptionRun06.familyLength = fontArabic.size();
4596 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4597 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4598 fontDescriptionRun06.familyDefined = true;
4599 fontDescriptionRun06.weightDefined = false;
4600 fontDescriptionRun06.widthDefined = false;
4601 fontDescriptionRun06.slantDefined = false;
4602 fontDescriptionRun06.sizeDefined = false;
4604 Vector<FontDescriptionRun> fontDescriptionRuns;
4605 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4606 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4607 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4608 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4609 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4610 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4612 float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f};
4614 Size textArea(100.f, 300.f);
4617 "End alignment for the mid paragraph.",
4618 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4621 fontDescriptionRuns.Begin(),
4622 Text::HorizontalAlignment::END,
4623 Text::VerticalAlignment::TOP,
4628 Dali::LayoutDirection::LEFT_TO_RIGHT,
4631 if(!AlignTest(data))
4633 tet_result(TET_FAIL);
4636 tet_result(TET_PASS);
4640 int UtcDaliTextAlign09(void)
4642 ToolkitTestApplication application;
4643 tet_infoline(" UtcDaliTextAlign09");
4645 // Calculate text alignment.
4647 const std::string fontLatin("TizenSans");
4648 const std::string fontHebrew("TizenSansHebrew");
4649 const std::string fontArabic("TizenSansArabic");
4651 // Set a known font description
4652 FontDescriptionRun fontDescriptionRun01;
4653 fontDescriptionRun01.characterRun.characterIndex = 0u;
4654 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4655 fontDescriptionRun01.familyLength = fontLatin.size();
4656 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4657 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4658 fontDescriptionRun01.familyDefined = true;
4659 fontDescriptionRun01.weightDefined = false;
4660 fontDescriptionRun01.widthDefined = false;
4661 fontDescriptionRun01.slantDefined = false;
4662 fontDescriptionRun01.sizeDefined = false;
4664 FontDescriptionRun fontDescriptionRun02;
4665 fontDescriptionRun02.characterRun.characterIndex = 12u;
4666 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4667 fontDescriptionRun02.familyLength = fontHebrew.size();
4668 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4669 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4670 fontDescriptionRun02.familyDefined = true;
4671 fontDescriptionRun02.weightDefined = false;
4672 fontDescriptionRun02.widthDefined = false;
4673 fontDescriptionRun02.slantDefined = false;
4674 fontDescriptionRun02.sizeDefined = false;
4676 FontDescriptionRun fontDescriptionRun03;
4677 fontDescriptionRun03.characterRun.characterIndex = 22u;
4678 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4679 fontDescriptionRun03.familyLength = fontArabic.size();
4680 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4681 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4682 fontDescriptionRun03.familyDefined = true;
4683 fontDescriptionRun03.weightDefined = false;
4684 fontDescriptionRun03.widthDefined = false;
4685 fontDescriptionRun03.slantDefined = false;
4686 fontDescriptionRun03.sizeDefined = false;
4688 FontDescriptionRun fontDescriptionRun04;
4689 fontDescriptionRun04.characterRun.characterIndex = 36u;
4690 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4691 fontDescriptionRun04.familyLength = fontLatin.size();
4692 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4693 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4694 fontDescriptionRun04.familyDefined = true;
4695 fontDescriptionRun04.weightDefined = false;
4696 fontDescriptionRun04.widthDefined = false;
4697 fontDescriptionRun04.slantDefined = false;
4698 fontDescriptionRun04.sizeDefined = false;
4700 FontDescriptionRun fontDescriptionRun05;
4701 fontDescriptionRun05.characterRun.characterIndex = 48u;
4702 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4703 fontDescriptionRun05.familyLength = fontLatin.size();
4704 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4705 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4706 fontDescriptionRun05.familyDefined = true;
4707 fontDescriptionRun05.weightDefined = false;
4708 fontDescriptionRun05.widthDefined = false;
4709 fontDescriptionRun05.slantDefined = false;
4710 fontDescriptionRun05.sizeDefined = false;
4712 FontDescriptionRun fontDescriptionRun06;
4713 fontDescriptionRun06.characterRun.characterIndex = 60u;
4714 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4715 fontDescriptionRun06.familyLength = fontArabic.size();
4716 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4717 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4718 fontDescriptionRun06.familyDefined = true;
4719 fontDescriptionRun06.weightDefined = false;
4720 fontDescriptionRun06.widthDefined = false;
4721 fontDescriptionRun06.slantDefined = false;
4722 fontDescriptionRun06.sizeDefined = false;
4724 Vector<FontDescriptionRun> fontDescriptionRuns;
4725 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4726 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4727 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4728 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4729 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4730 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4732 float positions[] = {0.f, 0.f, 0.f, 0.f, 21.f, 35.f};
4734 Size textArea(100.f, 300.f);
4737 "End alignment for the last paragraph.",
4738 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4741 fontDescriptionRuns.Begin(),
4742 Text::HorizontalAlignment::END,
4743 Text::VerticalAlignment::TOP,
4748 Dali::LayoutDirection::LEFT_TO_RIGHT,
4751 if(!AlignTest(data))
4753 tet_result(TET_FAIL);
4756 tet_result(TET_PASS);
4760 int UtcDaliTextAlign10(void)
4762 ToolkitTestApplication application;
4763 tet_infoline(" UtcDaliTextAlign10");
4765 // Calculate text alignment.
4767 const std::string fontLatin("TizenSans");
4768 const std::string fontHebrew("TizenSansHebrew");
4769 const std::string fontArabic("TizenSansArabic");
4771 // Set a known font description
4772 FontDescriptionRun fontDescriptionRun01;
4773 fontDescriptionRun01.characterRun.characterIndex = 0u;
4774 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4775 fontDescriptionRun01.familyLength = fontLatin.size();
4776 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4777 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4778 fontDescriptionRun01.familyDefined = true;
4779 fontDescriptionRun01.weightDefined = false;
4780 fontDescriptionRun01.widthDefined = false;
4781 fontDescriptionRun01.slantDefined = false;
4782 fontDescriptionRun01.sizeDefined = false;
4784 FontDescriptionRun fontDescriptionRun02;
4785 fontDescriptionRun02.characterRun.characterIndex = 12u;
4786 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4787 fontDescriptionRun02.familyLength = fontHebrew.size();
4788 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4789 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4790 fontDescriptionRun02.familyDefined = true;
4791 fontDescriptionRun02.weightDefined = false;
4792 fontDescriptionRun02.widthDefined = false;
4793 fontDescriptionRun02.slantDefined = false;
4794 fontDescriptionRun02.sizeDefined = false;
4796 FontDescriptionRun fontDescriptionRun03;
4797 fontDescriptionRun03.characterRun.characterIndex = 22u;
4798 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4799 fontDescriptionRun03.familyLength = fontArabic.size();
4800 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4801 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4802 fontDescriptionRun03.familyDefined = true;
4803 fontDescriptionRun03.weightDefined = false;
4804 fontDescriptionRun03.widthDefined = false;
4805 fontDescriptionRun03.slantDefined = false;
4806 fontDescriptionRun03.sizeDefined = false;
4808 FontDescriptionRun fontDescriptionRun04;
4809 fontDescriptionRun04.characterRun.characterIndex = 36u;
4810 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4811 fontDescriptionRun04.familyLength = fontLatin.size();
4812 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4813 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4814 fontDescriptionRun04.familyDefined = true;
4815 fontDescriptionRun04.weightDefined = false;
4816 fontDescriptionRun04.widthDefined = false;
4817 fontDescriptionRun04.slantDefined = false;
4818 fontDescriptionRun04.sizeDefined = false;
4820 FontDescriptionRun fontDescriptionRun05;
4821 fontDescriptionRun05.characterRun.characterIndex = 48u;
4822 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4823 fontDescriptionRun05.familyLength = fontLatin.size();
4824 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4825 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4826 fontDescriptionRun05.familyDefined = true;
4827 fontDescriptionRun05.weightDefined = false;
4828 fontDescriptionRun05.widthDefined = false;
4829 fontDescriptionRun05.slantDefined = false;
4830 fontDescriptionRun05.sizeDefined = false;
4832 FontDescriptionRun fontDescriptionRun06;
4833 fontDescriptionRun06.characterRun.characterIndex = 60u;
4834 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4835 fontDescriptionRun06.familyLength = fontArabic.size();
4836 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4837 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4838 fontDescriptionRun06.familyDefined = true;
4839 fontDescriptionRun06.weightDefined = false;
4840 fontDescriptionRun06.widthDefined = false;
4841 fontDescriptionRun06.slantDefined = false;
4842 fontDescriptionRun06.sizeDefined = false;
4844 Vector<FontDescriptionRun> fontDescriptionRuns;
4845 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4846 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4847 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4848 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4849 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4850 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4852 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
4854 Size textArea(100.f, 300.f);
4857 "Begin alignment for the first paragraph.",
4858 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4861 fontDescriptionRuns.Begin(),
4862 Text::HorizontalAlignment::END,
4863 Text::VerticalAlignment::TOP,
4868 Dali::LayoutDirection::RIGHT_TO_LEFT,
4871 if(!AlignTest(data))
4873 tet_result(TET_FAIL);
4876 tet_result(TET_PASS);
4880 int UtcDaliTextAlign11(void)
4882 ToolkitTestApplication application;
4883 tet_infoline(" UtcDaliTextAlign11");
4885 // Calculate text alignment.
4887 const std::string fontLatin("TizenSans");
4888 const std::string fontHebrew("TizenSansHebrew");
4889 const std::string fontArabic("TizenSansArabic");
4891 // Set a known font description
4892 FontDescriptionRun fontDescriptionRun01;
4893 fontDescriptionRun01.characterRun.characterIndex = 0u;
4894 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
4895 fontDescriptionRun01.familyLength = fontLatin.size();
4896 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4897 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4898 fontDescriptionRun01.familyDefined = true;
4899 fontDescriptionRun01.weightDefined = false;
4900 fontDescriptionRun01.widthDefined = false;
4901 fontDescriptionRun01.slantDefined = false;
4902 fontDescriptionRun01.sizeDefined = false;
4904 FontDescriptionRun fontDescriptionRun02;
4905 fontDescriptionRun02.characterRun.characterIndex = 12u;
4906 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
4907 fontDescriptionRun02.familyLength = fontHebrew.size();
4908 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4909 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
4910 fontDescriptionRun02.familyDefined = true;
4911 fontDescriptionRun02.weightDefined = false;
4912 fontDescriptionRun02.widthDefined = false;
4913 fontDescriptionRun02.slantDefined = false;
4914 fontDescriptionRun02.sizeDefined = false;
4916 FontDescriptionRun fontDescriptionRun03;
4917 fontDescriptionRun03.characterRun.characterIndex = 22u;
4918 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
4919 fontDescriptionRun03.familyLength = fontArabic.size();
4920 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4921 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
4922 fontDescriptionRun03.familyDefined = true;
4923 fontDescriptionRun03.weightDefined = false;
4924 fontDescriptionRun03.widthDefined = false;
4925 fontDescriptionRun03.slantDefined = false;
4926 fontDescriptionRun03.sizeDefined = false;
4928 FontDescriptionRun fontDescriptionRun04;
4929 fontDescriptionRun04.characterRun.characterIndex = 36u;
4930 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
4931 fontDescriptionRun04.familyLength = fontLatin.size();
4932 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4933 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
4934 fontDescriptionRun04.familyDefined = true;
4935 fontDescriptionRun04.weightDefined = false;
4936 fontDescriptionRun04.widthDefined = false;
4937 fontDescriptionRun04.slantDefined = false;
4938 fontDescriptionRun04.sizeDefined = false;
4940 FontDescriptionRun fontDescriptionRun05;
4941 fontDescriptionRun05.characterRun.characterIndex = 48u;
4942 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
4943 fontDescriptionRun05.familyLength = fontLatin.size();
4944 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4945 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
4946 fontDescriptionRun05.familyDefined = true;
4947 fontDescriptionRun05.weightDefined = false;
4948 fontDescriptionRun05.widthDefined = false;
4949 fontDescriptionRun05.slantDefined = false;
4950 fontDescriptionRun05.sizeDefined = false;
4952 FontDescriptionRun fontDescriptionRun06;
4953 fontDescriptionRun06.characterRun.characterIndex = 60u;
4954 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
4955 fontDescriptionRun06.familyLength = fontArabic.size();
4956 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4957 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4958 fontDescriptionRun06.familyDefined = true;
4959 fontDescriptionRun06.weightDefined = false;
4960 fontDescriptionRun06.widthDefined = false;
4961 fontDescriptionRun06.slantDefined = false;
4962 fontDescriptionRun06.sizeDefined = false;
4964 Vector<FontDescriptionRun> fontDescriptionRuns;
4965 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4966 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4967 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4968 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4969 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4970 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4972 float positions[] = {21.f, 30.f, 34.f, 0.f, 0.f, 0.f};
4974 Size textArea(100.f, 300.f);
4977 "End alignment for the last paragraph.",
4978 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
4981 fontDescriptionRuns.Begin(),
4982 Text::HorizontalAlignment::END,
4983 Text::VerticalAlignment::TOP,
4988 Dali::LayoutDirection::LEFT_TO_RIGHT,
4991 if(!AlignTest(data))
4993 tet_result(TET_FAIL);
4996 tet_result(TET_PASS);
5000 int UtcDaliTextAlign12(void)
5002 ToolkitTestApplication application;
5003 tet_infoline(" UtcDaliTextAlign12");
5005 // Calculate text alignment.
5007 const std::string fontLatin("TizenSans");
5008 const std::string fontHebrew("TizenSansHebrew");
5009 const std::string fontArabic("TizenSansArabic");
5011 // Set a known font description
5012 FontDescriptionRun fontDescriptionRun01;
5013 fontDescriptionRun01.characterRun.characterIndex = 0u;
5014 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5015 fontDescriptionRun01.familyLength = fontLatin.size();
5016 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5017 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5018 fontDescriptionRun01.familyDefined = true;
5019 fontDescriptionRun01.weightDefined = false;
5020 fontDescriptionRun01.widthDefined = false;
5021 fontDescriptionRun01.slantDefined = false;
5022 fontDescriptionRun01.sizeDefined = false;
5024 FontDescriptionRun fontDescriptionRun02;
5025 fontDescriptionRun02.characterRun.characterIndex = 12u;
5026 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5027 fontDescriptionRun02.familyLength = fontHebrew.size();
5028 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5029 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5030 fontDescriptionRun02.familyDefined = true;
5031 fontDescriptionRun02.weightDefined = false;
5032 fontDescriptionRun02.widthDefined = false;
5033 fontDescriptionRun02.slantDefined = false;
5034 fontDescriptionRun02.sizeDefined = false;
5036 FontDescriptionRun fontDescriptionRun03;
5037 fontDescriptionRun03.characterRun.characterIndex = 22u;
5038 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5039 fontDescriptionRun03.familyLength = fontArabic.size();
5040 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5041 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5042 fontDescriptionRun03.familyDefined = true;
5043 fontDescriptionRun03.weightDefined = false;
5044 fontDescriptionRun03.widthDefined = false;
5045 fontDescriptionRun03.slantDefined = false;
5046 fontDescriptionRun03.sizeDefined = false;
5048 FontDescriptionRun fontDescriptionRun04;
5049 fontDescriptionRun04.characterRun.characterIndex = 36u;
5050 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5051 fontDescriptionRun04.familyLength = fontLatin.size();
5052 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5053 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5054 fontDescriptionRun04.familyDefined = true;
5055 fontDescriptionRun04.weightDefined = false;
5056 fontDescriptionRun04.widthDefined = false;
5057 fontDescriptionRun04.slantDefined = false;
5058 fontDescriptionRun04.sizeDefined = false;
5060 FontDescriptionRun fontDescriptionRun05;
5061 fontDescriptionRun05.characterRun.characterIndex = 48u;
5062 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5063 fontDescriptionRun05.familyLength = fontLatin.size();
5064 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5065 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5066 fontDescriptionRun05.familyDefined = true;
5067 fontDescriptionRun05.weightDefined = false;
5068 fontDescriptionRun05.widthDefined = false;
5069 fontDescriptionRun05.slantDefined = false;
5070 fontDescriptionRun05.sizeDefined = false;
5072 FontDescriptionRun fontDescriptionRun06;
5073 fontDescriptionRun06.characterRun.characterIndex = 60u;
5074 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5075 fontDescriptionRun06.familyLength = fontArabic.size();
5076 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5077 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5078 fontDescriptionRun06.familyDefined = true;
5079 fontDescriptionRun06.weightDefined = false;
5080 fontDescriptionRun06.widthDefined = false;
5081 fontDescriptionRun06.slantDefined = false;
5082 fontDescriptionRun06.sizeDefined = false;
5084 Vector<FontDescriptionRun> fontDescriptionRuns;
5085 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5086 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5087 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5088 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5089 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5090 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5092 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5094 Size textArea(100.f, 300.f);
5097 "Begin alignment for the first paragraph.",
5098 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5101 fontDescriptionRuns.Begin(),
5102 Text::HorizontalAlignment::BEGIN,
5103 Text::VerticalAlignment::TOP,
5108 Dali::LayoutDirection::LEFT_TO_RIGHT,
5111 if(!AlignTest(data))
5113 tet_result(TET_FAIL);
5116 tet_result(TET_PASS);
5120 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
5122 ToolkitTestApplication application;
5123 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
5125 Layout::Engine engine;
5126 DALI_TEST_EQUALS(0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
5128 engine.SetDefaultLineSpacing(10.f);
5129 DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
5131 tet_result(TET_PASS);
5135 int UtcDaliTextLayoutGetGlyphMetrics(void)
5137 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
5139 // Test retrieving metrics from group of characters
5141 const std::string fontFamily("TizenSansHindi");
5143 // Set a known font description
5144 FontDescriptionRun fontDescriptionRun01;
5145 fontDescriptionRun01.characterRun.characterIndex = 0u;
5146 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
5147 fontDescriptionRun01.familyLength = fontFamily.size();
5148 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5149 memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
5150 fontDescriptionRun01.familyDefined = true;
5151 fontDescriptionRun01.weightDefined = false;
5152 fontDescriptionRun01.widthDefined = false;
5153 fontDescriptionRun01.slantDefined = false;
5154 fontDescriptionRun01.sizeDefined = false;
5156 // Set a known font description
5157 FontDescriptionRun fontDescriptionRun02;
5158 fontDescriptionRun02.characterRun.characterIndex = 0u;
5159 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
5160 fontDescriptionRun02.familyLength = fontFamily.size();
5161 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5162 memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
5163 fontDescriptionRun02.familyDefined = true;
5164 fontDescriptionRun02.weightDefined = false;
5165 fontDescriptionRun02.widthDefined = false;
5166 fontDescriptionRun02.slantDefined = false;
5167 fontDescriptionRun02.sizeDefined = false;
5170 // Set a known font description
5171 FontDescriptionRun fontDescriptionRun03;
5172 fontDescriptionRun03.characterRun.characterIndex = 0u;
5173 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
5174 fontDescriptionRun03.familyLength = fontFamily.size();
5175 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5176 memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
5177 fontDescriptionRun03.familyDefined = true;
5178 fontDescriptionRun03.weightDefined = false;
5179 fontDescriptionRun03.widthDefined = false;
5180 fontDescriptionRun03.slantDefined = false;
5181 fontDescriptionRun03.sizeDefined = false;
5184 Vector<FontDescriptionRun> fontDescriptionRuns01;
5185 fontDescriptionRuns01.PushBack(fontDescriptionRun01);
5187 Vector<FontDescriptionRun> fontDescriptionRuns02;
5188 fontDescriptionRuns02.PushBack(fontDescriptionRun02);
5190 Vector<FontDescriptionRun> fontDescriptionRuns03;
5191 fontDescriptionRuns03.PushBack(fontDescriptionRun03);
5194 Size textArea(100.f, 100.f);
5196 // Group: second glyph doesn't exceed the width of the first glyph
5197 float positions01[] = {0.f, -11.f};
5199 struct LineRun line01 =
5211 Vector<LineRun> lines01;
5212 lines01.PushBack(line01);
5214 Size layoutSize01 = Vector2(11.f, 20.f);
5216 // Group: second glyph doesn't exceed the width of the first glyph
5217 float positions02[] = {
5224 struct LineRun line02 =
5236 Vector<LineRun> lines02;
5237 lines02.PushBack(line02);
5239 Size layoutSize02 = Vector2(15.f, 20.f);
5241 // Group: second glyph doesn't exceed the width of the first glyph
5242 float positions03[] = {0.f, -11.f, 2.f, -15.f};
5244 struct LineRun line03 =
5256 Vector<LineRun> lines03;
5257 lines03.PushBack(line03);
5259 Size layoutSize03 = Vector2(11.f, 20.f);
5261 /////////////////////////////
5263 struct LayoutTextData data[] =
5269 fontDescriptionRuns01.Begin(),
5275 Layout::Engine::SINGLE_LINE_BOX,
5279 DevelText::EllipsisPosition::END,
5281 {"Group: second glyph exceeds the width of the first glyph",
5285 fontDescriptionRuns02.Begin(),
5291 Layout::Engine::SINGLE_LINE_BOX,
5295 DevelText::EllipsisPosition::END,
5297 {"Group: second glyph doesn't exceed the width of the first glyph",
5301 fontDescriptionRuns03.Begin(),
5307 Layout::Engine::SINGLE_LINE_BOX,
5311 DevelText::EllipsisPosition::END,
5313 const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData);
5315 for(unsigned int index = 0u; index < numberOfTests; ++index)
5317 ToolkitTestApplication application;
5318 if(!LayoutTextTest(data[index]))
5320 tet_result(TET_FAIL);
5324 tet_result(TET_PASS);