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;
314 // Do not compare the alignment offset as it's not calculated in the layout.
315 // Do not compare the line direction as it's not set in the layout.
321 //////////////////////////////////////////////////////////
325 std::string description;
328 unsigned int numberOfFonts;
329 FontDescriptionRun* fontDescriptions;
330 Text::HorizontalAlignment::Type horizontalAlignment;
331 Text::VerticalAlignment::Type verticalAlignment;
332 unsigned int startIndex;
333 unsigned int numberOfCharacters;
334 unsigned int numberOfLines;
336 Dali::LayoutDirection::Type layoutDirection;
337 bool matchSystemLanguageDirection;
340 bool AlignTest(const AlignData& data)
343 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
344 fontClient.SetDpi(96u, 96u);
346 char* pathNamePtr = get_current_dir_name();
347 const std::string pathName(pathNamePtr);
350 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
351 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
352 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
354 // 1) Create the model.
359 Vector<FontDescriptionRun> fontDescriptionRuns;
360 if(0u != data.numberOfFonts)
362 fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
363 data.fontDescriptions,
364 data.fontDescriptions + data.numberOfFonts);
367 LayoutOptions options;
368 options.align = false;
369 CreateTextModel(data.text,
379 Toolkit::DevelText::EllipsisPosition::END,
381 0.0f // characterSpacing
384 LogicalModelPtr logicalModel = textModel->mLogicalModel;
385 VisualModelPtr visualModel = textModel->mVisualModel;
387 // Call the Align method.
388 Layout::Engine engine;
389 engine.SetMetrics(metrics);
391 float alignmentOffset = 0.f;
392 engine.Align(data.textArea,
394 data.numberOfCharacters,
395 data.horizontalAlignment,
398 data.layoutDirection,
399 data.matchSystemLanguageDirection);
402 if(data.numberOfLines != visualModel->mLines.Count())
404 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
408 const LineRun* const linesBuffer = visualModel->mLines.Begin();
409 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
411 const LineRun& line = *(linesBuffer + index);
413 if(line.alignmentOffset != *(data.lineOffsets + index))
415 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl;
424 //////////////////////////////////////////////////////////
426 // UtcDaliTextLayoutSetGetLayout
427 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
428 // UtcDaliTextLayoutSetGetHorizontalAlignment
429 // UtcDaliTextLayoutSetGetVerticalAlignment
430 // UtcDaliTextLayoutSetGetCursorWidth
431 // UtcDaliTextLayoutNoText
432 // UtcDaliTextLayoutSmallTextArea01
433 // UtcDaliTextLayoutSmallTextArea02
434 // UtcDaliTextLayoutMultilineText01
435 // UtcDaliTextLayoutMultilineText02
436 // UtcDaliTextLayoutMultilineText03
437 // UtcDaliTextLayoutMultilineText04
438 // UtcDaliTextLayoutMultilineText05
439 // UtcDaliTextLayoutMultilineText06
440 // UtcDaliTextUpdateLayout01
441 // UtcDaliTextUpdateLayout02
442 // UtcDaliTextUpdateLayout03
443 // UtcDaliTextLayoutEllipsis01
444 // UtcDaliTextLayoutEllipsis02
445 // UtcDaliTextLayoutEllipsis03
446 // UtcDaliTextLayoutEllipsis04
447 // UtcDaliTextLayoutEllipsis04
448 // UtcDaliTextReorderLayout01
449 // UtcDaliTextReorderLayout02
450 // UtcDaliTextReorderLayout03
451 // UtcDaliTextReorderLayout04
452 // UtcDaliTextAlign01
453 // UtcDaliTextAlign02
454 // UtcDaliTextAlign03
455 // UtcDaliTextAlign04
456 // UtcDaliTextAlign05
457 // UtcDaliTextAlign06
458 // UtcDaliTextAlign07
459 // UtcDaliTextAlign08
460 // UtcDaliTextAlign09
462 //////////////////////////////////////////////////////////
464 int UtcDaliTextLayoutSetGetLayout(void)
466 ToolkitTestApplication application;
467 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
469 Layout::Engine engine;
471 DALI_TEST_CHECK(Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout());
473 engine.SetLayout(Layout::Engine::MULTI_LINE_BOX);
474 DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout());
476 tet_result(TET_PASS);
480 int UtcDaliTextLayoutSetGetCursorWidth(void)
482 ToolkitTestApplication application;
485 Layout::Engine engine;
487 DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION);
489 engine.SetCursorWidth(2);
490 DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION);
492 tet_result(TET_PASS);
496 int UtcDaliTextLayoutNoText(void)
498 ToolkitTestApplication application;
499 tet_infoline(" UtcDaliTextLayoutNoText");
501 Size textArea(100.f, 60.f);
502 Size layoutSize = Vector2::ZERO;
503 LayoutTextData data =
515 Layout::Engine::MULTI_LINE_BOX,
519 DevelText::EllipsisPosition::END,
522 if(!LayoutTextTest(data))
524 tet_result(TET_FAIL);
527 tet_result(TET_PASS);
531 int UtcDaliTextLayoutSmallTextArea01(void)
533 ToolkitTestApplication application;
534 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
536 // Won't layout the text in multi-line if the width is too small.
538 const std::string fontFamily("TizenSans");
540 // Set a known font description
541 FontDescriptionRun fontDescriptionRun;
542 fontDescriptionRun.characterRun.characterIndex = 0u;
543 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
544 fontDescriptionRun.familyLength = fontFamily.size();
545 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
546 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
547 fontDescriptionRun.familyDefined = true;
548 fontDescriptionRun.weightDefined = false;
549 fontDescriptionRun.widthDefined = false;
550 fontDescriptionRun.slantDefined = false;
551 fontDescriptionRun.sizeDefined = false;
553 Vector<FontDescriptionRun> fontDescriptionRuns;
554 fontDescriptionRuns.PushBack(fontDescriptionRun);
555 Size textArea(1.f, 1.f);
556 Size layoutSize = Vector2::ZERO;
557 LayoutTextData data =
559 "Layout text in a small area",
563 fontDescriptionRuns.Begin(),
569 Layout::Engine::MULTI_LINE_BOX,
573 DevelText::EllipsisPosition::END,
576 if(!LayoutTextTest(data))
578 tet_result(TET_FAIL);
581 tet_result(TET_PASS);
585 int UtcDaliTextLayoutSmallTextArea02(void)
587 ToolkitTestApplication application;
588 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
590 // Will layout the text in single line as it can be scrolled.
592 const std::string fontFamily("TizenSans");
594 // Set a known font description
595 FontDescriptionRun fontDescriptionRun;
596 fontDescriptionRun.characterRun.characterIndex = 0u;
597 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
598 fontDescriptionRun.familyLength = fontFamily.size();
599 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
600 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
601 fontDescriptionRun.familyDefined = true;
602 fontDescriptionRun.weightDefined = false;
603 fontDescriptionRun.widthDefined = false;
604 fontDescriptionRun.slantDefined = false;
605 fontDescriptionRun.sizeDefined = false;
607 Vector<FontDescriptionRun> fontDescriptionRuns;
608 fontDescriptionRuns.PushBack(fontDescriptionRun);
609 Size textArea(1.f, 1.f);
610 Size layoutSize(81.f, 20.f);
611 float positions[] = {0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f};
612 struct LineRun line =
624 Vector<LineRun> lines;
625 lines.PushBack(line);
627 LayoutTextData data =
629 "Layout text in a small area",
633 fontDescriptionRuns.Begin(),
639 Layout::Engine::SINGLE_LINE_BOX,
643 DevelText::EllipsisPosition::END,
646 if(!LayoutTextTest(data))
648 tet_result(TET_FAIL);
651 tet_result(TET_PASS);
655 int UtcDaliTextLayoutMultilineText01(void)
657 ToolkitTestApplication application;
658 tet_infoline(" UtcDaliTextLayoutMultilineText01");
660 // Layout some lines of left to right text.
662 const std::string fontFamily("TizenSans");
664 // Set a known font description
665 FontDescriptionRun fontDescriptionRun1;
666 fontDescriptionRun1.characterRun.characterIndex = 0u;
667 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
668 fontDescriptionRun1.familyLength = fontFamily.size();
669 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
670 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
671 fontDescriptionRun1.familyDefined = true;
672 fontDescriptionRun1.weightDefined = false;
673 fontDescriptionRun1.widthDefined = false;
674 fontDescriptionRun1.slantDefined = false;
675 fontDescriptionRun1.sizeDefined = false;
677 FontDescriptionRun fontDescriptionRun2;
678 fontDescriptionRun2.characterRun.characterIndex = 18u;
679 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
680 fontDescriptionRun2.familyLength = fontFamily.size();
681 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
682 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
683 fontDescriptionRun2.familyDefined = true;
684 fontDescriptionRun2.weightDefined = false;
685 fontDescriptionRun2.widthDefined = false;
686 fontDescriptionRun2.slantDefined = false;
687 fontDescriptionRun2.sizeDefined = false;
689 Vector<FontDescriptionRun> fontDescriptionRuns;
690 fontDescriptionRuns.PushBack(fontDescriptionRun1);
691 fontDescriptionRuns.PushBack(fontDescriptionRun2);
692 Size textArea(100.f, 300.f);
693 Size layoutSize(98.f, 97.f);
696 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f, 0.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f, 0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.f, -9.f, 42.f, -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f, 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 36.f, -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f, -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f};
697 struct LineRun line0 =
709 struct LineRun line1 =
721 struct LineRun line2 =
733 struct LineRun line3 =
745 struct LineRun line4 =
757 Vector<LineRun> lines;
758 lines.PushBack(line0);
759 lines.PushBack(line1);
760 lines.PushBack(line2);
761 lines.PushBack(line3);
762 lines.PushBack(line4);
764 LayoutTextData data =
766 "Layout simple multi-line text",
767 "Hello world demo.\n"
768 "Layout different lines of text.",
771 fontDescriptionRuns.Begin(),
777 Layout::Engine::MULTI_LINE_BOX,
781 DevelText::EllipsisPosition::END,
784 if(!LayoutTextTest(data))
786 tet_result(TET_FAIL);
789 tet_result(TET_PASS);
793 int UtcDaliTextLayoutMultilineText02(void)
795 ToolkitTestApplication application;
796 tet_infoline(" UtcDaliTextLayoutMultilineText02");
798 // Layout some lines of bidirectional text.
800 const std::string fontFamily1("TizenSans");
802 // Set a known font description
803 FontDescriptionRun fontDescriptionRun1;
804 fontDescriptionRun1.characterRun.characterIndex = 0u;
805 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
806 fontDescriptionRun1.familyLength = fontFamily1.size();
807 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
808 memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength);
809 fontDescriptionRun1.familyDefined = true;
810 fontDescriptionRun1.weightDefined = false;
811 fontDescriptionRun1.widthDefined = false;
812 fontDescriptionRun1.slantDefined = false;
813 fontDescriptionRun1.sizeDefined = false;
815 const std::string fontFamily2("TizenSansHebrew");
817 // Set a known font description
818 FontDescriptionRun fontDescriptionRun2;
819 fontDescriptionRun2.characterRun.characterIndex = 17u;
820 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
821 fontDescriptionRun2.familyLength = fontFamily2.size();
822 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
823 memcpy(fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength);
824 fontDescriptionRun2.familyDefined = true;
825 fontDescriptionRun2.weightDefined = false;
826 fontDescriptionRun2.widthDefined = false;
827 fontDescriptionRun2.slantDefined = false;
828 fontDescriptionRun2.sizeDefined = false;
830 const std::string fontFamily3("TizenSans");
832 // Set a known font description
833 FontDescriptionRun fontDescriptionRun3;
834 fontDescriptionRun3.characterRun.characterIndex = 26u;
835 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
836 fontDescriptionRun3.familyLength = fontFamily3.size();
837 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
838 memcpy(fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength);
839 fontDescriptionRun3.familyDefined = true;
840 fontDescriptionRun3.weightDefined = false;
841 fontDescriptionRun3.widthDefined = false;
842 fontDescriptionRun3.slantDefined = false;
843 fontDescriptionRun3.sizeDefined = false;
845 const std::string fontFamily4("TizenSansHebrew");
847 // Set a known font description
848 FontDescriptionRun fontDescriptionRun4;
849 fontDescriptionRun4.characterRun.characterIndex = 28u;
850 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
851 fontDescriptionRun4.familyLength = fontFamily4.size();
852 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
853 memcpy(fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength);
854 fontDescriptionRun4.familyDefined = true;
855 fontDescriptionRun4.weightDefined = false;
856 fontDescriptionRun4.widthDefined = false;
857 fontDescriptionRun4.slantDefined = false;
858 fontDescriptionRun4.sizeDefined = false;
860 const std::string fontFamily5("TizenSans");
862 // Set a known font description
863 FontDescriptionRun fontDescriptionRun5;
864 fontDescriptionRun5.characterRun.characterIndex = 38u;
865 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
866 fontDescriptionRun5.familyLength = fontFamily5.size();
867 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
868 memcpy(fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength);
869 fontDescriptionRun5.familyDefined = true;
870 fontDescriptionRun5.weightDefined = false;
871 fontDescriptionRun5.widthDefined = false;
872 fontDescriptionRun5.slantDefined = false;
873 fontDescriptionRun5.sizeDefined = false;
875 Vector<FontDescriptionRun> fontDescriptionRuns;
876 fontDescriptionRuns.PushBack(fontDescriptionRun1);
877 fontDescriptionRuns.PushBack(fontDescriptionRun2);
878 fontDescriptionRuns.PushBack(fontDescriptionRun3);
879 fontDescriptionRuns.PushBack(fontDescriptionRun4);
880 fontDescriptionRuns.PushBack(fontDescriptionRun5);
881 Size textArea(100.f, 300.f);
882 Size layoutSize(81.f, 120.f);
885 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
973 struct LineRun line0 =
985 struct LineRun line1 =
997 struct LineRun line2 =
1009 struct LineRun line3 =
1021 struct LineRun line4 =
1033 struct LineRun line5 =
1045 Vector<LineRun> lines;
1046 lines.PushBack(line0);
1047 lines.PushBack(line1);
1048 lines.PushBack(line2);
1049 lines.PushBack(line3);
1050 lines.PushBack(line4);
1051 lines.PushBack(line5);
1053 LayoutTextData data =
1055 "Layout bidirectional text.",
1056 "Hello world demo שלום עולם.\n"
1057 "שלום עולם hello world demo.",
1060 fontDescriptionRuns.Begin(),
1066 Layout::Engine::MULTI_LINE_BOX,
1070 DevelText::EllipsisPosition::END,
1073 if(!LayoutTextTest(data))
1075 tet_result(TET_FAIL);
1078 tet_result(TET_PASS);
1082 int UtcDaliTextLayoutMultilineText03(void)
1084 ToolkitTestApplication application;
1085 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1087 // Layout a long word which doesn't fit in the width of the text area.
1089 const std::string fontFamily("TizenSans");
1091 // Set a known font description
1092 FontDescriptionRun fontDescriptionRun;
1093 fontDescriptionRun.characterRun.characterIndex = 0u;
1094 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1095 fontDescriptionRun.familyLength = fontFamily.size();
1096 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1097 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1098 fontDescriptionRun.familyDefined = true;
1099 fontDescriptionRun.weightDefined = false;
1100 fontDescriptionRun.widthDefined = false;
1101 fontDescriptionRun.slantDefined = false;
1102 fontDescriptionRun.sizeDefined = false;
1104 Vector<FontDescriptionRun> fontDescriptionRuns;
1105 fontDescriptionRuns.PushBack(fontDescriptionRun);
1106 Size textArea(100.f, 300.f);
1107 Size layoutSize(98.f, 60.f);
1169 struct LineRun line0 =
1181 struct LineRun line1 =
1193 struct LineRun line2 =
1205 Vector<LineRun> lines;
1206 lines.PushBack(line0);
1207 lines.PushBack(line1);
1208 lines.PushBack(line2);
1210 LayoutTextData data =
1212 "Layout a long word which doesn't fit in the width of the text area.",
1213 "Helloworlddemohelloworlddemo.",
1216 fontDescriptionRuns.Begin(),
1222 Layout::Engine::MULTI_LINE_BOX,
1226 DevelText::EllipsisPosition::END,
1229 if(!LayoutTextTest(data))
1231 tet_result(TET_FAIL);
1234 tet_result(TET_PASS);
1238 int UtcDaliTextLayoutMultilineText04(void)
1240 ToolkitTestApplication application;
1241 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1243 // Layout simple text ending with a \n. It has to add a void line at the end.
1245 const std::string fontFamily("TizenSans");
1247 // Set a known font description
1248 FontDescriptionRun fontDescriptionRun;
1249 fontDescriptionRun.characterRun.characterIndex = 0u;
1250 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1251 fontDescriptionRun.familyLength = fontFamily.size();
1252 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1253 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1254 fontDescriptionRun.familyDefined = true;
1255 fontDescriptionRun.weightDefined = false;
1256 fontDescriptionRun.widthDefined = false;
1257 fontDescriptionRun.slantDefined = false;
1258 fontDescriptionRun.sizeDefined = false;
1260 Vector<FontDescriptionRun> fontDescriptionRuns;
1261 fontDescriptionRuns.PushBack(fontDescriptionRun);
1262 Size textArea(100.f, 300.f);
1263 Size layoutSize(84.f, 40.f);
1266 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f};
1267 struct LineRun line0 =
1278 struct LineRun line1 =
1290 Vector<LineRun> lines;
1291 lines.PushBack(line0);
1292 lines.PushBack(line1);
1294 LayoutTextData data =
1296 "Layout simple text ending with a \n.",
1300 fontDescriptionRuns.Begin(),
1306 Layout::Engine::MULTI_LINE_BOX,
1310 DevelText::EllipsisPosition::END,
1313 if(!LayoutTextTest(data))
1315 tet_result(TET_FAIL);
1318 tet_result(TET_PASS);
1322 int UtcDaliTextLayoutMultilineText05(void)
1324 ToolkitTestApplication application;
1325 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1327 // Layout simple text with one character with a different font size.
1329 const std::string fontFamily("TizenSans");
1331 // Set a known font description
1332 FontDescriptionRun fontDescriptionRun1;
1333 fontDescriptionRun1.characterRun.characterIndex = 0u;
1334 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1335 fontDescriptionRun1.familyLength = fontFamily.size();
1336 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1337 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
1338 fontDescriptionRun1.familyDefined = true;
1339 fontDescriptionRun1.weightDefined = false;
1340 fontDescriptionRun1.widthDefined = false;
1341 fontDescriptionRun1.slantDefined = false;
1342 fontDescriptionRun1.sizeDefined = false;
1344 FontDescriptionRun fontDescriptionRun2;
1345 fontDescriptionRun2.characterRun.characterIndex = 6u;
1346 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1347 fontDescriptionRun2.familyLength = fontFamily.size();
1348 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1349 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
1350 fontDescriptionRun2.size = 1280u;
1351 fontDescriptionRun2.familyDefined = true;
1352 fontDescriptionRun2.weightDefined = false;
1353 fontDescriptionRun2.widthDefined = false;
1354 fontDescriptionRun2.slantDefined = false;
1355 fontDescriptionRun2.sizeDefined = true;
1357 FontDescriptionRun fontDescriptionRun3;
1358 fontDescriptionRun3.characterRun.characterIndex = 7u;
1359 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1360 fontDescriptionRun3.familyLength = fontFamily.size();
1361 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1362 memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength);
1363 fontDescriptionRun3.familyDefined = true;
1364 fontDescriptionRun3.weightDefined = false;
1365 fontDescriptionRun3.widthDefined = false;
1366 fontDescriptionRun3.slantDefined = false;
1367 fontDescriptionRun3.sizeDefined = false;
1369 Vector<FontDescriptionRun> fontDescriptionRuns;
1370 fontDescriptionRuns.PushBack(fontDescriptionRun1);
1371 fontDescriptionRuns.PushBack(fontDescriptionRun2);
1372 fontDescriptionRuns.PushBack(fontDescriptionRun3);
1373 Size textArea(100.f, 300.f);
1374 Size layoutSize(89.f, 53.f);
1377 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f, 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f};
1378 struct LineRun line0 =
1390 struct LineRun line1 =
1402 Vector<LineRun> lines;
1403 lines.PushBack(line0);
1404 lines.PushBack(line1);
1406 LayoutTextData data =
1408 "Layout simple text with one character with a different font size.",
1409 "Hello world demo.",
1412 fontDescriptionRuns.Begin(),
1418 Layout::Engine::MULTI_LINE_BOX,
1422 DevelText::EllipsisPosition::END,
1425 if(!LayoutTextTest(data))
1427 tet_result(TET_FAIL);
1430 tet_result(TET_PASS);
1434 int UtcDaliTextLayoutMultilineText06(void)
1436 ToolkitTestApplication application;
1437 tet_infoline(" UtcDaliTextLayoutMultilineText06");
1439 const std::string fontFamily("TizenSansHebrew");
1441 // Set a known font description
1442 FontDescriptionRun fontDescriptionRun;
1443 fontDescriptionRun.characterRun.characterIndex = 0u;
1444 fontDescriptionRun.characterRun.numberOfCharacters = 10u;
1445 fontDescriptionRun.familyLength = fontFamily.size();
1446 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1447 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1448 fontDescriptionRun.familyDefined = true;
1449 fontDescriptionRun.weightDefined = false;
1450 fontDescriptionRun.widthDefined = false;
1451 fontDescriptionRun.slantDefined = false;
1452 fontDescriptionRun.sizeDefined = false;
1454 Vector<FontDescriptionRun> fontDescriptionRuns;
1455 fontDescriptionRuns.PushBack(fontDescriptionRun);
1457 Size textArea(64.f, 100.f);
1458 Size layoutSize(34.f, 40.f);
1461 27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f, 22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f};
1462 struct LineRun line0 =
1474 struct LineRun line1 =
1486 Vector<LineRun> lines;
1487 lines.PushBack(line0);
1488 lines.PushBack(line1);
1490 LayoutTextData data =
1492 "Layout right to left text that doesn't fit in the text area after reordering.",
1493 "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
1496 fontDescriptionRuns.Begin(),
1502 Layout::Engine::MULTI_LINE_BOX,
1506 DevelText::EllipsisPosition::END,
1509 if(!LayoutTextTest(data))
1511 tet_result(TET_FAIL);
1514 tet_result(TET_PASS);
1518 int UtcDaliTextLayoutMultilineText07(void)
1520 ToolkitTestApplication application;
1521 tet_infoline(" UtcDaliTextLayoutMultilineText07");
1523 const std::string fontFamily("TizenSansHebrew");
1525 // Set a known font description
1526 FontDescriptionRun fontDescriptionRun;
1527 fontDescriptionRun.characterRun.characterIndex = 0u;
1528 fontDescriptionRun.characterRun.numberOfCharacters = 9u;
1529 fontDescriptionRun.familyLength = fontFamily.size();
1530 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1531 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1532 fontDescriptionRun.familyDefined = true;
1533 fontDescriptionRun.weightDefined = false;
1534 fontDescriptionRun.widthDefined = false;
1535 fontDescriptionRun.slantDefined = false;
1536 fontDescriptionRun.sizeDefined = false;
1538 Vector<FontDescriptionRun> fontDescriptionRuns;
1539 fontDescriptionRuns.PushBack(fontDescriptionRun);
1541 Size textArea(26.f, 100.f);
1542 Size layoutSize(24.f, 60.f);
1545 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};
1546 struct LineRun line0 =
1558 struct LineRun line1 =
1570 struct LineRun line2 =
1582 Vector<LineRun> lines;
1583 lines.PushBack(line0);
1584 lines.PushBack(line1);
1585 lines.PushBack(line2);
1587 LayoutTextData data =
1589 "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.",
1590 "שנורולכאן", // 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.
1593 fontDescriptionRuns.Begin(),
1599 Layout::Engine::MULTI_LINE_BOX,
1603 DevelText::EllipsisPosition::END,
1606 if(!LayoutTextTest(data))
1608 tet_result(TET_FAIL);
1611 tet_result(TET_PASS);
1615 int UtcDaliTextUpdateLayout01(void)
1617 ToolkitTestApplication application;
1618 tet_infoline(" UtcDaliTextUpdateLayout01");
1620 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1622 const std::string fontLatin("TizenSans");
1623 const std::string fontHebrew("TizenSansHebrew");
1624 const std::string fontArabic("TizenSansArabic");
1626 // Set a known font description
1627 FontDescriptionRun fontDescriptionRun01;
1628 fontDescriptionRun01.characterRun.characterIndex = 0u;
1629 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1630 fontDescriptionRun01.familyLength = fontLatin.size();
1631 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1632 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
1633 fontDescriptionRun01.familyDefined = true;
1634 fontDescriptionRun01.weightDefined = false;
1635 fontDescriptionRun01.widthDefined = false;
1636 fontDescriptionRun01.slantDefined = false;
1637 fontDescriptionRun01.sizeDefined = false;
1639 // Set a known font description
1640 FontDescriptionRun fontDescriptionRun02;
1641 fontDescriptionRun02.characterRun.characterIndex = 17u;
1642 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1643 fontDescriptionRun02.familyLength = fontHebrew.size();
1644 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1645 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
1646 fontDescriptionRun02.familyDefined = true;
1647 fontDescriptionRun02.weightDefined = false;
1648 fontDescriptionRun02.widthDefined = false;
1649 fontDescriptionRun02.slantDefined = false;
1650 fontDescriptionRun02.sizeDefined = false;
1652 // Set a known font description
1653 FontDescriptionRun fontDescriptionRun03;
1654 fontDescriptionRun03.characterRun.characterIndex = 26u;
1655 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1656 fontDescriptionRun03.familyLength = fontLatin.size();
1657 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1658 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
1659 fontDescriptionRun03.familyDefined = true;
1660 fontDescriptionRun03.weightDefined = false;
1661 fontDescriptionRun03.widthDefined = false;
1662 fontDescriptionRun03.slantDefined = false;
1663 fontDescriptionRun03.sizeDefined = false;
1665 // Set a known font description
1666 FontDescriptionRun fontDescriptionRun04;
1667 fontDescriptionRun04.characterRun.characterIndex = 28u;
1668 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1669 fontDescriptionRun04.familyLength = fontArabic.size();
1670 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1671 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
1672 fontDescriptionRun04.familyDefined = true;
1673 fontDescriptionRun04.weightDefined = false;
1674 fontDescriptionRun04.widthDefined = false;
1675 fontDescriptionRun04.slantDefined = false;
1676 fontDescriptionRun04.sizeDefined = false;
1678 // Set a known font description
1679 FontDescriptionRun fontDescriptionRun05;
1680 fontDescriptionRun05.characterRun.characterIndex = 42u;
1681 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1682 fontDescriptionRun05.familyLength = fontLatin.size();
1683 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1684 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
1685 fontDescriptionRun05.familyDefined = true;
1686 fontDescriptionRun05.weightDefined = false;
1687 fontDescriptionRun05.widthDefined = false;
1688 fontDescriptionRun05.slantDefined = false;
1689 fontDescriptionRun05.sizeDefined = false;
1691 // Set a known font description
1692 FontDescriptionRun fontDescriptionRun06;
1693 fontDescriptionRun06.characterRun.characterIndex = 54u;
1694 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1695 fontDescriptionRun06.familyLength = fontHebrew.size();
1696 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1697 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
1698 fontDescriptionRun06.familyDefined = true;
1699 fontDescriptionRun06.weightDefined = false;
1700 fontDescriptionRun06.widthDefined = false;
1701 fontDescriptionRun06.slantDefined = false;
1702 fontDescriptionRun06.sizeDefined = false;
1704 // Set a known font description
1705 FontDescriptionRun fontDescriptionRun07;
1706 fontDescriptionRun07.characterRun.characterIndex = 64u;
1707 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1708 fontDescriptionRun07.familyLength = fontHebrew.size();
1709 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1710 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
1711 fontDescriptionRun07.familyDefined = true;
1712 fontDescriptionRun07.weightDefined = false;
1713 fontDescriptionRun07.widthDefined = false;
1714 fontDescriptionRun07.slantDefined = false;
1715 fontDescriptionRun07.sizeDefined = false;
1717 // Set a known font description
1718 FontDescriptionRun fontDescriptionRun08;
1719 fontDescriptionRun08.characterRun.characterIndex = 74u;
1720 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1721 fontDescriptionRun08.familyLength = fontLatin.size();
1722 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1723 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
1724 fontDescriptionRun08.familyDefined = true;
1725 fontDescriptionRun08.weightDefined = false;
1726 fontDescriptionRun08.widthDefined = false;
1727 fontDescriptionRun08.slantDefined = false;
1728 fontDescriptionRun08.sizeDefined = false;
1730 // Set a known font description
1731 FontDescriptionRun fontDescriptionRun09;
1732 fontDescriptionRun09.characterRun.characterIndex = 92u;
1733 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1734 fontDescriptionRun09.familyLength = fontLatin.size();
1735 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1736 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
1737 fontDescriptionRun09.familyDefined = true;
1738 fontDescriptionRun09.weightDefined = false;
1739 fontDescriptionRun09.widthDefined = false;
1740 fontDescriptionRun09.slantDefined = false;
1741 fontDescriptionRun09.sizeDefined = false;
1743 // Set a known font description
1744 FontDescriptionRun fontDescriptionRun10;
1745 fontDescriptionRun10.characterRun.characterIndex = 104u;
1746 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1747 fontDescriptionRun10.familyLength = fontArabic.size();
1748 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1749 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
1750 fontDescriptionRun10.familyDefined = true;
1751 fontDescriptionRun10.weightDefined = false;
1752 fontDescriptionRun10.widthDefined = false;
1753 fontDescriptionRun10.slantDefined = false;
1754 fontDescriptionRun10.sizeDefined = false;
1756 // Set a known font description
1757 FontDescriptionRun fontDescriptionRun11;
1758 fontDescriptionRun11.characterRun.characterIndex = 118u;
1759 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1760 fontDescriptionRun11.familyLength = fontHebrew.size();
1761 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1762 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
1763 fontDescriptionRun11.familyDefined = true;
1764 fontDescriptionRun11.weightDefined = false;
1765 fontDescriptionRun11.widthDefined = false;
1766 fontDescriptionRun11.slantDefined = false;
1767 fontDescriptionRun11.sizeDefined = false;
1769 // Set a known font description
1770 FontDescriptionRun fontDescriptionRun12;
1771 fontDescriptionRun12.characterRun.characterIndex = 128u;
1772 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1773 fontDescriptionRun12.familyLength = fontLatin.size();
1774 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1775 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
1776 fontDescriptionRun12.familyDefined = true;
1777 fontDescriptionRun12.weightDefined = false;
1778 fontDescriptionRun12.widthDefined = false;
1779 fontDescriptionRun12.slantDefined = false;
1780 fontDescriptionRun12.sizeDefined = false;
1782 // Set a known font description
1783 FontDescriptionRun fontDescriptionRun13;
1784 fontDescriptionRun13.characterRun.characterIndex = 145u;
1785 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1786 fontDescriptionRun13.familyLength = fontHebrew.size();
1787 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1788 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
1789 fontDescriptionRun13.familyDefined = true;
1790 fontDescriptionRun13.weightDefined = false;
1791 fontDescriptionRun13.widthDefined = false;
1792 fontDescriptionRun13.slantDefined = false;
1793 fontDescriptionRun13.sizeDefined = false;
1795 // Set a known font description
1796 FontDescriptionRun fontDescriptionRun14;
1797 fontDescriptionRun14.characterRun.characterIndex = 154u;
1798 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1799 fontDescriptionRun14.familyLength = fontLatin.size();
1800 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1801 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
1802 fontDescriptionRun14.familyDefined = true;
1803 fontDescriptionRun14.weightDefined = false;
1804 fontDescriptionRun14.widthDefined = false;
1805 fontDescriptionRun14.slantDefined = false;
1806 fontDescriptionRun14.sizeDefined = false;
1808 // Set a known font description
1809 FontDescriptionRun fontDescriptionRun15;
1810 fontDescriptionRun15.characterRun.characterIndex = 156u;
1811 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1812 fontDescriptionRun15.familyLength = fontHebrew.size();
1813 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1814 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
1815 fontDescriptionRun15.familyDefined = true;
1816 fontDescriptionRun15.weightDefined = false;
1817 fontDescriptionRun15.widthDefined = false;
1818 fontDescriptionRun15.slantDefined = false;
1819 fontDescriptionRun15.sizeDefined = false;
1821 // Set a known font description
1822 FontDescriptionRun fontDescriptionRun16;
1823 fontDescriptionRun16.characterRun.characterIndex = 166u;
1824 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1825 fontDescriptionRun16.familyLength = fontLatin.size();
1826 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1827 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
1828 fontDescriptionRun16.familyDefined = true;
1829 fontDescriptionRun16.weightDefined = false;
1830 fontDescriptionRun16.widthDefined = false;
1831 fontDescriptionRun16.slantDefined = false;
1832 fontDescriptionRun16.sizeDefined = false;
1834 // Set a known font description
1835 FontDescriptionRun fontDescriptionRun17;
1836 fontDescriptionRun17.characterRun.characterIndex = 178u;
1837 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1838 fontDescriptionRun17.familyLength = fontArabic.size();
1839 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1840 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
1841 fontDescriptionRun17.familyDefined = true;
1842 fontDescriptionRun17.weightDefined = false;
1843 fontDescriptionRun17.widthDefined = false;
1844 fontDescriptionRun17.slantDefined = false;
1845 fontDescriptionRun17.sizeDefined = false;
1847 Vector<FontDescriptionRun> fontDescriptionRuns;
1848 fontDescriptionRuns.PushBack(fontDescriptionRun01);
1849 fontDescriptionRuns.PushBack(fontDescriptionRun02);
1850 fontDescriptionRuns.PushBack(fontDescriptionRun03);
1851 fontDescriptionRuns.PushBack(fontDescriptionRun04);
1852 fontDescriptionRuns.PushBack(fontDescriptionRun05);
1853 fontDescriptionRuns.PushBack(fontDescriptionRun06);
1854 fontDescriptionRuns.PushBack(fontDescriptionRun07);
1855 fontDescriptionRuns.PushBack(fontDescriptionRun08);
1856 fontDescriptionRuns.PushBack(fontDescriptionRun09);
1857 fontDescriptionRuns.PushBack(fontDescriptionRun10);
1858 fontDescriptionRuns.PushBack(fontDescriptionRun11);
1859 fontDescriptionRuns.PushBack(fontDescriptionRun12);
1860 fontDescriptionRuns.PushBack(fontDescriptionRun13);
1861 fontDescriptionRuns.PushBack(fontDescriptionRun14);
1862 fontDescriptionRuns.PushBack(fontDescriptionRun15);
1863 fontDescriptionRuns.PushBack(fontDescriptionRun16);
1864 fontDescriptionRuns.PushBack(fontDescriptionRun17);
1865 Size textArea(100.f, 300.f);
1866 Size layoutSize(100.f, 380.f);
1869 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
2157 -12.f, // 150 .. 155
2232 struct LineRun line01 =
2244 struct LineRun line02 =
2256 struct LineRun line03 =
2268 struct LineRun line04 =
2280 struct LineRun line05 =
2292 struct LineRun line06 =
2304 struct LineRun line07 =
2316 struct LineRun line08 =
2328 struct LineRun line09 =
2340 struct LineRun line10 =
2352 struct LineRun line11 =
2364 struct LineRun line12 =
2376 struct LineRun line13 =
2388 struct LineRun line14 =
2400 struct LineRun line15 =
2412 struct LineRun line16 =
2424 struct LineRun line17 =
2436 struct LineRun line18 =
2448 struct LineRun line19 =
2460 Vector<LineRun> lines;
2461 lines.PushBack(line01);
2462 lines.PushBack(line02);
2463 lines.PushBack(line03);
2464 lines.PushBack(line04);
2465 lines.PushBack(line05);
2466 lines.PushBack(line06);
2467 lines.PushBack(line07);
2468 lines.PushBack(line08);
2469 lines.PushBack(line09);
2470 lines.PushBack(line10);
2471 lines.PushBack(line11);
2472 lines.PushBack(line12);
2473 lines.PushBack(line13);
2474 lines.PushBack(line14);
2475 lines.PushBack(line15);
2476 lines.PushBack(line16);
2477 lines.PushBack(line17);
2478 lines.PushBack(line18);
2479 lines.PushBack(line19);
2481 LayoutTextData data =
2483 "Layout bidirectional text.",
2484 "Hello world demo שלום עולם.\n"
2485 "مرحبا بالعالم hello world שלום עולם\n"
2486 "שלום עולם hello world demo.\n"
2487 "hello world مرحبا بالعالم שלום עולם\n"
2488 "Hello world demo שלום עולם.\n"
2489 "שלום עולם hello world مرحبا بالعالم\n",
2492 fontDescriptionRuns.Begin(),
2498 Layout::Engine::MULTI_LINE_BOX,
2502 DevelText::EllipsisPosition::END,
2505 if(!LayoutTextTest(data))
2507 tet_result(TET_FAIL);
2510 tet_result(TET_PASS);
2514 int UtcDaliTextUpdateLayout02(void)
2516 ToolkitTestApplication application;
2517 tet_infoline(" UtcDaliTextUpdateLayout02");
2519 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2521 const std::string fontLatin("TizenSans");
2522 const std::string fontHebrew("TizenSansHebrew");
2523 const std::string fontArabic("TizenSansArabic");
2525 // Set a known font description
2526 FontDescriptionRun fontDescriptionRun01;
2527 fontDescriptionRun01.characterRun.characterIndex = 0u;
2528 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2529 fontDescriptionRun01.familyLength = fontLatin.size();
2530 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2531 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
2532 fontDescriptionRun01.familyDefined = true;
2533 fontDescriptionRun01.weightDefined = false;
2534 fontDescriptionRun01.widthDefined = false;
2535 fontDescriptionRun01.slantDefined = false;
2536 fontDescriptionRun01.sizeDefined = false;
2538 // Set a known font description
2539 FontDescriptionRun fontDescriptionRun02;
2540 fontDescriptionRun02.characterRun.characterIndex = 17u;
2541 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2542 fontDescriptionRun02.familyLength = fontHebrew.size();
2543 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2544 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
2545 fontDescriptionRun02.familyDefined = true;
2546 fontDescriptionRun02.weightDefined = false;
2547 fontDescriptionRun02.widthDefined = false;
2548 fontDescriptionRun02.slantDefined = false;
2549 fontDescriptionRun02.sizeDefined = false;
2551 // Set a known font description
2552 FontDescriptionRun fontDescriptionRun03;
2553 fontDescriptionRun03.characterRun.characterIndex = 26u;
2554 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2555 fontDescriptionRun03.familyLength = fontLatin.size();
2556 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2557 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
2558 fontDescriptionRun03.familyDefined = true;
2559 fontDescriptionRun03.weightDefined = false;
2560 fontDescriptionRun03.widthDefined = false;
2561 fontDescriptionRun03.slantDefined = false;
2562 fontDescriptionRun03.sizeDefined = false;
2564 // Set a known font description
2565 FontDescriptionRun fontDescriptionRun04;
2566 fontDescriptionRun04.characterRun.characterIndex = 28u;
2567 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2568 fontDescriptionRun04.familyLength = fontArabic.size();
2569 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2570 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
2571 fontDescriptionRun04.familyDefined = true;
2572 fontDescriptionRun04.weightDefined = false;
2573 fontDescriptionRun04.widthDefined = false;
2574 fontDescriptionRun04.slantDefined = false;
2575 fontDescriptionRun04.sizeDefined = false;
2577 // Set a known font description
2578 FontDescriptionRun fontDescriptionRun05;
2579 fontDescriptionRun05.characterRun.characterIndex = 42u;
2580 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2581 fontDescriptionRun05.familyLength = fontLatin.size();
2582 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2583 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
2584 fontDescriptionRun05.familyDefined = true;
2585 fontDescriptionRun05.weightDefined = false;
2586 fontDescriptionRun05.widthDefined = false;
2587 fontDescriptionRun05.slantDefined = false;
2588 fontDescriptionRun05.sizeDefined = false;
2590 // Set a known font description
2591 FontDescriptionRun fontDescriptionRun06;
2592 fontDescriptionRun06.characterRun.characterIndex = 54u;
2593 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2594 fontDescriptionRun06.familyLength = fontHebrew.size();
2595 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2596 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
2597 fontDescriptionRun06.familyDefined = true;
2598 fontDescriptionRun06.weightDefined = false;
2599 fontDescriptionRun06.widthDefined = false;
2600 fontDescriptionRun06.slantDefined = false;
2601 fontDescriptionRun06.sizeDefined = false;
2603 // Set a known font description
2604 FontDescriptionRun fontDescriptionRun07;
2605 fontDescriptionRun07.characterRun.characterIndex = 64u;
2606 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2607 fontDescriptionRun07.familyLength = fontHebrew.size();
2608 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2609 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
2610 fontDescriptionRun07.familyDefined = true;
2611 fontDescriptionRun07.weightDefined = false;
2612 fontDescriptionRun07.widthDefined = false;
2613 fontDescriptionRun07.slantDefined = false;
2614 fontDescriptionRun07.sizeDefined = false;
2616 // Set a known font description
2617 FontDescriptionRun fontDescriptionRun08;
2618 fontDescriptionRun08.characterRun.characterIndex = 74u;
2619 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2620 fontDescriptionRun08.familyLength = fontLatin.size();
2621 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2622 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
2623 fontDescriptionRun08.familyDefined = true;
2624 fontDescriptionRun08.weightDefined = false;
2625 fontDescriptionRun08.widthDefined = false;
2626 fontDescriptionRun08.slantDefined = false;
2627 fontDescriptionRun08.sizeDefined = false;
2629 // Set a known font description
2630 FontDescriptionRun fontDescriptionRun09;
2631 fontDescriptionRun09.characterRun.characterIndex = 92u;
2632 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2633 fontDescriptionRun09.familyLength = fontLatin.size();
2634 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2635 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
2636 fontDescriptionRun09.familyDefined = true;
2637 fontDescriptionRun09.weightDefined = false;
2638 fontDescriptionRun09.widthDefined = false;
2639 fontDescriptionRun09.slantDefined = false;
2640 fontDescriptionRun09.sizeDefined = false;
2642 // Set a known font description
2643 FontDescriptionRun fontDescriptionRun10;
2644 fontDescriptionRun10.characterRun.characterIndex = 104u;
2645 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2646 fontDescriptionRun10.familyLength = fontArabic.size();
2647 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2648 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
2649 fontDescriptionRun10.familyDefined = true;
2650 fontDescriptionRun10.weightDefined = false;
2651 fontDescriptionRun10.widthDefined = false;
2652 fontDescriptionRun10.slantDefined = false;
2653 fontDescriptionRun10.sizeDefined = false;
2655 // Set a known font description
2656 FontDescriptionRun fontDescriptionRun11;
2657 fontDescriptionRun11.characterRun.characterIndex = 118u;
2658 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2659 fontDescriptionRun11.familyLength = fontHebrew.size();
2660 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2661 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
2662 fontDescriptionRun11.familyDefined = true;
2663 fontDescriptionRun11.weightDefined = false;
2664 fontDescriptionRun11.widthDefined = false;
2665 fontDescriptionRun11.slantDefined = false;
2666 fontDescriptionRun11.sizeDefined = false;
2668 // Set a known font description
2669 FontDescriptionRun fontDescriptionRun12;
2670 fontDescriptionRun12.characterRun.characterIndex = 128u;
2671 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2672 fontDescriptionRun12.familyLength = fontLatin.size();
2673 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2674 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
2675 fontDescriptionRun12.familyDefined = true;
2676 fontDescriptionRun12.weightDefined = false;
2677 fontDescriptionRun12.widthDefined = false;
2678 fontDescriptionRun12.slantDefined = false;
2679 fontDescriptionRun12.sizeDefined = false;
2681 // Set a known font description
2682 FontDescriptionRun fontDescriptionRun13;
2683 fontDescriptionRun13.characterRun.characterIndex = 145u;
2684 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2685 fontDescriptionRun13.familyLength = fontHebrew.size();
2686 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2687 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
2688 fontDescriptionRun13.familyDefined = true;
2689 fontDescriptionRun13.weightDefined = false;
2690 fontDescriptionRun13.widthDefined = false;
2691 fontDescriptionRun13.slantDefined = false;
2692 fontDescriptionRun13.sizeDefined = false;
2694 // Set a known font description
2695 FontDescriptionRun fontDescriptionRun14;
2696 fontDescriptionRun14.characterRun.characterIndex = 154u;
2697 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2698 fontDescriptionRun14.familyLength = fontLatin.size();
2699 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2700 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
2701 fontDescriptionRun14.familyDefined = true;
2702 fontDescriptionRun14.weightDefined = false;
2703 fontDescriptionRun14.widthDefined = false;
2704 fontDescriptionRun14.slantDefined = false;
2705 fontDescriptionRun14.sizeDefined = false;
2707 // Set a known font description
2708 FontDescriptionRun fontDescriptionRun15;
2709 fontDescriptionRun15.characterRun.characterIndex = 156u;
2710 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2711 fontDescriptionRun15.familyLength = fontHebrew.size();
2712 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2713 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
2714 fontDescriptionRun15.familyDefined = true;
2715 fontDescriptionRun15.weightDefined = false;
2716 fontDescriptionRun15.widthDefined = false;
2717 fontDescriptionRun15.slantDefined = false;
2718 fontDescriptionRun15.sizeDefined = false;
2720 // Set a known font description
2721 FontDescriptionRun fontDescriptionRun16;
2722 fontDescriptionRun16.characterRun.characterIndex = 166u;
2723 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2724 fontDescriptionRun16.familyLength = fontLatin.size();
2725 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2726 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
2727 fontDescriptionRun16.familyDefined = true;
2728 fontDescriptionRun16.weightDefined = false;
2729 fontDescriptionRun16.widthDefined = false;
2730 fontDescriptionRun16.slantDefined = false;
2731 fontDescriptionRun16.sizeDefined = false;
2733 // Set a known font description
2734 FontDescriptionRun fontDescriptionRun17;
2735 fontDescriptionRun17.characterRun.characterIndex = 178u;
2736 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2737 fontDescriptionRun17.familyLength = fontArabic.size();
2738 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2739 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
2740 fontDescriptionRun17.familyDefined = true;
2741 fontDescriptionRun17.weightDefined = false;
2742 fontDescriptionRun17.widthDefined = false;
2743 fontDescriptionRun17.slantDefined = false;
2744 fontDescriptionRun17.sizeDefined = false;
2746 Vector<FontDescriptionRun> fontDescriptionRuns;
2747 fontDescriptionRuns.PushBack(fontDescriptionRun01);
2748 fontDescriptionRuns.PushBack(fontDescriptionRun02);
2749 fontDescriptionRuns.PushBack(fontDescriptionRun03);
2750 fontDescriptionRuns.PushBack(fontDescriptionRun04);
2751 fontDescriptionRuns.PushBack(fontDescriptionRun05);
2752 fontDescriptionRuns.PushBack(fontDescriptionRun06);
2753 fontDescriptionRuns.PushBack(fontDescriptionRun07);
2754 fontDescriptionRuns.PushBack(fontDescriptionRun08);
2755 fontDescriptionRuns.PushBack(fontDescriptionRun09);
2756 fontDescriptionRuns.PushBack(fontDescriptionRun10);
2757 fontDescriptionRuns.PushBack(fontDescriptionRun11);
2758 fontDescriptionRuns.PushBack(fontDescriptionRun12);
2759 fontDescriptionRuns.PushBack(fontDescriptionRun13);
2760 fontDescriptionRuns.PushBack(fontDescriptionRun14);
2761 fontDescriptionRuns.PushBack(fontDescriptionRun15);
2762 fontDescriptionRuns.PushBack(fontDescriptionRun16);
2763 fontDescriptionRuns.PushBack(fontDescriptionRun17);
2764 Size textArea(100.f, 300.f);
2765 Size layoutSize(100.f, 380.f);
2768 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
3056 -12.f, // 150 .. 155
3131 struct LineRun line01 =
3143 struct LineRun line02 =
3155 struct LineRun line03 =
3167 struct LineRun line04 =
3179 struct LineRun line05 =
3191 struct LineRun line06 =
3203 struct LineRun line07 =
3215 struct LineRun line08 =
3227 struct LineRun line09 =
3239 struct LineRun line10 =
3251 struct LineRun line11 =
3263 struct LineRun line12 =
3275 struct LineRun line13 =
3287 struct LineRun line14 =
3299 struct LineRun line15 =
3311 struct LineRun line16 =
3323 struct LineRun line17 =
3335 struct LineRun line18 =
3347 struct LineRun line19 =
3359 Vector<LineRun> lines;
3360 lines.PushBack(line01);
3361 lines.PushBack(line02);
3362 lines.PushBack(line03);
3363 lines.PushBack(line04);
3364 lines.PushBack(line05);
3365 lines.PushBack(line06);
3366 lines.PushBack(line07);
3367 lines.PushBack(line08);
3368 lines.PushBack(line09);
3369 lines.PushBack(line10);
3370 lines.PushBack(line11);
3371 lines.PushBack(line12);
3372 lines.PushBack(line13);
3373 lines.PushBack(line14);
3374 lines.PushBack(line15);
3375 lines.PushBack(line16);
3376 lines.PushBack(line17);
3377 lines.PushBack(line18);
3378 lines.PushBack(line19);
3380 LayoutTextData data =
3382 "Layout bidirectional text.",
3383 "Hello world demo שלום עולם.\n"
3384 "مرحبا بالعالم hello world שלום עולם\n"
3385 "שלום עולם hello world demo.\n"
3386 "hello world مرحبا بالعالم שלום עולם\n"
3387 "Hello world demo שלום עולם.\n"
3388 "שלום עולם hello world مرحبا بالعالم\n",
3391 fontDescriptionRuns.Begin(),
3397 Layout::Engine::MULTI_LINE_BOX,
3401 DevelText::EllipsisPosition::END,
3404 if(!LayoutTextTest(data))
3406 tet_result(TET_FAIL);
3409 tet_result(TET_PASS);
3413 int UtcDaliTextUpdateLayout03(void)
3415 ToolkitTestApplication application;
3416 tet_infoline(" UtcDaliTextUpdateLayout03");
3418 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
3420 const std::string fontLatin("TizenSans");
3421 const std::string fontHebrew("TizenSansHebrew");
3422 const std::string fontArabic("TizenSansArabic");
3424 // Set a known font description
3425 FontDescriptionRun fontDescriptionRun01;
3426 fontDescriptionRun01.characterRun.characterIndex = 0u;
3427 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
3428 fontDescriptionRun01.familyLength = fontLatin.size();
3429 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3430 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3431 fontDescriptionRun01.familyDefined = true;
3432 fontDescriptionRun01.weightDefined = false;
3433 fontDescriptionRun01.widthDefined = false;
3434 fontDescriptionRun01.slantDefined = false;
3435 fontDescriptionRun01.sizeDefined = false;
3437 // Set a known font description
3438 FontDescriptionRun fontDescriptionRun02;
3439 fontDescriptionRun02.characterRun.characterIndex = 17u;
3440 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
3441 fontDescriptionRun02.familyLength = fontHebrew.size();
3442 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3443 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3444 fontDescriptionRun02.familyDefined = true;
3445 fontDescriptionRun02.weightDefined = false;
3446 fontDescriptionRun02.widthDefined = false;
3447 fontDescriptionRun02.slantDefined = false;
3448 fontDescriptionRun02.sizeDefined = false;
3450 // Set a known font description
3451 FontDescriptionRun fontDescriptionRun03;
3452 fontDescriptionRun03.characterRun.characterIndex = 26u;
3453 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
3454 fontDescriptionRun03.familyLength = fontLatin.size();
3455 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3456 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
3457 fontDescriptionRun03.familyDefined = true;
3458 fontDescriptionRun03.weightDefined = false;
3459 fontDescriptionRun03.widthDefined = false;
3460 fontDescriptionRun03.slantDefined = false;
3461 fontDescriptionRun03.sizeDefined = false;
3463 // Set a known font description
3464 FontDescriptionRun fontDescriptionRun04;
3465 fontDescriptionRun04.characterRun.characterIndex = 28u;
3466 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3467 fontDescriptionRun04.familyLength = fontArabic.size();
3468 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3469 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
3470 fontDescriptionRun04.familyDefined = true;
3471 fontDescriptionRun04.weightDefined = false;
3472 fontDescriptionRun04.widthDefined = false;
3473 fontDescriptionRun04.slantDefined = false;
3474 fontDescriptionRun04.sizeDefined = false;
3476 // Set a known font description
3477 FontDescriptionRun fontDescriptionRun05;
3478 fontDescriptionRun05.characterRun.characterIndex = 42u;
3479 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3480 fontDescriptionRun05.familyLength = fontLatin.size();
3481 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3482 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3483 fontDescriptionRun05.familyDefined = true;
3484 fontDescriptionRun05.weightDefined = false;
3485 fontDescriptionRun05.widthDefined = false;
3486 fontDescriptionRun05.slantDefined = false;
3487 fontDescriptionRun05.sizeDefined = false;
3489 // Set a known font description
3490 FontDescriptionRun fontDescriptionRun06;
3491 fontDescriptionRun06.characterRun.characterIndex = 54u;
3492 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
3493 fontDescriptionRun06.familyLength = fontHebrew.size();
3494 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3495 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
3496 fontDescriptionRun06.familyDefined = true;
3497 fontDescriptionRun06.weightDefined = false;
3498 fontDescriptionRun06.widthDefined = false;
3499 fontDescriptionRun06.slantDefined = false;
3500 fontDescriptionRun06.sizeDefined = false;
3502 // Set a known font description
3503 FontDescriptionRun fontDescriptionRun07;
3504 fontDescriptionRun07.characterRun.characterIndex = 64u;
3505 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
3506 fontDescriptionRun07.familyLength = fontHebrew.size();
3507 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
3508 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
3509 fontDescriptionRun07.familyDefined = true;
3510 fontDescriptionRun07.weightDefined = false;
3511 fontDescriptionRun07.widthDefined = false;
3512 fontDescriptionRun07.slantDefined = false;
3513 fontDescriptionRun07.sizeDefined = false;
3515 // Set a known font description
3516 FontDescriptionRun fontDescriptionRun08;
3517 fontDescriptionRun08.characterRun.characterIndex = 74u;
3518 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
3519 fontDescriptionRun08.familyLength = fontLatin.size();
3520 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
3521 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
3522 fontDescriptionRun08.familyDefined = true;
3523 fontDescriptionRun08.weightDefined = false;
3524 fontDescriptionRun08.widthDefined = false;
3525 fontDescriptionRun08.slantDefined = false;
3526 fontDescriptionRun08.sizeDefined = false;
3528 // Set a known font description
3529 FontDescriptionRun fontDescriptionRun09;
3530 fontDescriptionRun09.characterRun.characterIndex = 92u;
3531 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
3532 fontDescriptionRun09.familyLength = fontLatin.size();
3533 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
3534 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
3535 fontDescriptionRun09.familyDefined = true;
3536 fontDescriptionRun09.weightDefined = false;
3537 fontDescriptionRun09.widthDefined = false;
3538 fontDescriptionRun09.slantDefined = false;
3539 fontDescriptionRun09.sizeDefined = false;
3541 // Set a known font description
3542 FontDescriptionRun fontDescriptionRun10;
3543 fontDescriptionRun10.characterRun.characterIndex = 104u;
3544 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
3545 fontDescriptionRun10.familyLength = fontArabic.size();
3546 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
3547 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
3548 fontDescriptionRun10.familyDefined = true;
3549 fontDescriptionRun10.weightDefined = false;
3550 fontDescriptionRun10.widthDefined = false;
3551 fontDescriptionRun10.slantDefined = false;
3552 fontDescriptionRun10.sizeDefined = false;
3554 // Set a known font description
3555 FontDescriptionRun fontDescriptionRun11;
3556 fontDescriptionRun11.characterRun.characterIndex = 118u;
3557 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
3558 fontDescriptionRun11.familyLength = fontHebrew.size();
3559 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
3560 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
3561 fontDescriptionRun11.familyDefined = true;
3562 fontDescriptionRun11.weightDefined = false;
3563 fontDescriptionRun11.widthDefined = false;
3564 fontDescriptionRun11.slantDefined = false;
3565 fontDescriptionRun11.sizeDefined = false;
3567 // Set a known font description
3568 FontDescriptionRun fontDescriptionRun12;
3569 fontDescriptionRun12.characterRun.characterIndex = 128u;
3570 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
3571 fontDescriptionRun12.familyLength = fontLatin.size();
3572 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
3573 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
3574 fontDescriptionRun12.familyDefined = true;
3575 fontDescriptionRun12.weightDefined = false;
3576 fontDescriptionRun12.widthDefined = false;
3577 fontDescriptionRun12.slantDefined = false;
3578 fontDescriptionRun12.sizeDefined = false;
3580 // Set a known font description
3581 FontDescriptionRun fontDescriptionRun13;
3582 fontDescriptionRun13.characterRun.characterIndex = 145u;
3583 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
3584 fontDescriptionRun13.familyLength = fontHebrew.size();
3585 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
3586 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
3587 fontDescriptionRun13.familyDefined = true;
3588 fontDescriptionRun13.weightDefined = false;
3589 fontDescriptionRun13.widthDefined = false;
3590 fontDescriptionRun13.slantDefined = false;
3591 fontDescriptionRun13.sizeDefined = false;
3593 // Set a known font description
3594 FontDescriptionRun fontDescriptionRun14;
3595 fontDescriptionRun14.characterRun.characterIndex = 154u;
3596 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
3597 fontDescriptionRun14.familyLength = fontLatin.size();
3598 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
3599 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
3600 fontDescriptionRun14.familyDefined = true;
3601 fontDescriptionRun14.weightDefined = false;
3602 fontDescriptionRun14.widthDefined = false;
3603 fontDescriptionRun14.slantDefined = false;
3604 fontDescriptionRun14.sizeDefined = false;
3606 // Set a known font description
3607 FontDescriptionRun fontDescriptionRun15;
3608 fontDescriptionRun15.characterRun.characterIndex = 156u;
3609 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
3610 fontDescriptionRun15.familyLength = fontHebrew.size();
3611 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
3612 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
3613 fontDescriptionRun15.familyDefined = true;
3614 fontDescriptionRun15.weightDefined = false;
3615 fontDescriptionRun15.widthDefined = false;
3616 fontDescriptionRun15.slantDefined = false;
3617 fontDescriptionRun15.sizeDefined = false;
3619 // Set a known font description
3620 FontDescriptionRun fontDescriptionRun16;
3621 fontDescriptionRun16.characterRun.characterIndex = 166u;
3622 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
3623 fontDescriptionRun16.familyLength = fontLatin.size();
3624 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
3625 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
3626 fontDescriptionRun16.familyDefined = true;
3627 fontDescriptionRun16.weightDefined = false;
3628 fontDescriptionRun16.widthDefined = false;
3629 fontDescriptionRun16.slantDefined = false;
3630 fontDescriptionRun16.sizeDefined = false;
3632 // Set a known font description
3633 FontDescriptionRun fontDescriptionRun17;
3634 fontDescriptionRun17.characterRun.characterIndex = 178u;
3635 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
3636 fontDescriptionRun17.familyLength = fontArabic.size();
3637 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
3638 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
3639 fontDescriptionRun17.familyDefined = true;
3640 fontDescriptionRun17.weightDefined = false;
3641 fontDescriptionRun17.widthDefined = false;
3642 fontDescriptionRun17.slantDefined = false;
3643 fontDescriptionRun17.sizeDefined = false;
3645 Vector<FontDescriptionRun> fontDescriptionRuns;
3646 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3647 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3648 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3649 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3650 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3651 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3652 fontDescriptionRuns.PushBack(fontDescriptionRun07);
3653 fontDescriptionRuns.PushBack(fontDescriptionRun08);
3654 fontDescriptionRuns.PushBack(fontDescriptionRun09);
3655 fontDescriptionRuns.PushBack(fontDescriptionRun10);
3656 fontDescriptionRuns.PushBack(fontDescriptionRun11);
3657 fontDescriptionRuns.PushBack(fontDescriptionRun12);
3658 fontDescriptionRuns.PushBack(fontDescriptionRun13);
3659 fontDescriptionRuns.PushBack(fontDescriptionRun14);
3660 fontDescriptionRuns.PushBack(fontDescriptionRun15);
3661 fontDescriptionRuns.PushBack(fontDescriptionRun16);
3662 fontDescriptionRuns.PushBack(fontDescriptionRun17);
3663 Size textArea(100.f, 300.f);
3664 Size layoutSize(100.f, 380.f);
3667 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
3955 -12.f, // 150 .. 155
4030 struct LineRun line01 =
4042 struct LineRun line02 =
4054 struct LineRun line03 =
4066 struct LineRun line04 =
4078 struct LineRun line05 =
4090 struct LineRun line06 =
4102 struct LineRun line07 =
4114 struct LineRun line08 =
4126 struct LineRun line09 =
4138 struct LineRun line10 =
4150 struct LineRun line11 =
4162 struct LineRun line12 =
4174 struct LineRun line13 =
4186 struct LineRun line14 =
4198 struct LineRun line15 =
4210 struct LineRun line16 =
4222 struct LineRun line17 =
4234 struct LineRun line18 =
4246 struct LineRun line19 =
4258 Vector<LineRun> lines;
4259 lines.PushBack(line01);
4260 lines.PushBack(line02);
4261 lines.PushBack(line03);
4262 lines.PushBack(line04);
4263 lines.PushBack(line05);
4264 lines.PushBack(line06);
4265 lines.PushBack(line07);
4266 lines.PushBack(line08);
4267 lines.PushBack(line09);
4268 lines.PushBack(line10);
4269 lines.PushBack(line11);
4270 lines.PushBack(line12);
4271 lines.PushBack(line13);
4272 lines.PushBack(line14);
4273 lines.PushBack(line15);
4274 lines.PushBack(line16);
4275 lines.PushBack(line17);
4276 lines.PushBack(line18);
4277 lines.PushBack(line19);
4279 LayoutTextData data =
4281 "Layout bidirectional text.",
4282 "Hello world demo שלום עולם.\n"
4283 "مرحبا بالعالم hello world שלום עולם\n"
4284 "שלום עולם hello world demo.\n"
4285 "hello world مرحبا بالعالم שלום עולם\n"
4286 "Hello world demo שלום עולם.\n"
4287 "שלום עולם hello world مرحبا بالعالم\n",
4290 fontDescriptionRuns.Begin(),
4296 Layout::Engine::MULTI_LINE_BOX,
4300 DevelText::EllipsisPosition::END,
4303 if(!LayoutTextTest(data))
4305 tet_result(TET_FAIL);
4308 tet_result(TET_PASS);
4312 int UtcDaliTextLayoutEllipsis01(void)
4314 ToolkitTestApplication application;
4315 tet_infoline(" UtcDaliTextLayoutEllipsis01");
4317 // Layout single-line LTR text with ellipsis.
4319 const std::string fontLatin("TizenSans");
4321 // Set a known font description
4322 FontDescriptionRun fontDescriptionRun01;
4323 fontDescriptionRun01.characterRun.characterIndex = 0u;
4324 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4325 fontDescriptionRun01.familyLength = fontLatin.size();
4326 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4327 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4328 fontDescriptionRun01.familyDefined = true;
4329 fontDescriptionRun01.weightDefined = false;
4330 fontDescriptionRun01.widthDefined = false;
4331 fontDescriptionRun01.slantDefined = false;
4332 fontDescriptionRun01.sizeDefined = false;
4334 Vector<FontDescriptionRun> fontDescriptionRuns;
4335 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4337 struct LineRun line01 =
4349 Vector<LineRun> lines;
4350 lines.PushBack(line01);
4382 Size textArea(100.f, 50.f);
4383 Size layoutSize(100.f, 20.f);
4385 LayoutTextData data =
4387 "Layout single-line LTR text with ellipsis.",
4388 "Hello world demo hello world demo hello world demo.",
4391 fontDescriptionRuns.Begin(),
4397 Layout::Engine::SINGLE_LINE_BOX,
4401 DevelText::EllipsisPosition::END,
4404 if(!LayoutTextTest(data))
4406 tet_result(TET_FAIL);
4409 tet_result(TET_PASS);
4413 int UtcDaliTextLayoutEllipsis02(void)
4415 ToolkitTestApplication application;
4416 tet_infoline(" UtcDaliTextLayoutEllipsis02");
4418 // Layout multi-line LTR text with ellipsis.
4420 const std::string fontLatin("TizenSans");
4422 // Set a known font description
4423 FontDescriptionRun fontDescriptionRun01;
4424 fontDescriptionRun01.characterRun.characterIndex = 0u;
4425 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4426 fontDescriptionRun01.familyLength = fontLatin.size();
4427 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4428 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4429 fontDescriptionRun01.familyDefined = true;
4430 fontDescriptionRun01.weightDefined = false;
4431 fontDescriptionRun01.widthDefined = false;
4432 fontDescriptionRun01.slantDefined = false;
4433 fontDescriptionRun01.sizeDefined = false;
4435 Vector<FontDescriptionRun> fontDescriptionRuns;
4436 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4438 struct LineRun line01 =
4450 struct LineRun line02 =
4462 Vector<LineRun> lines;
4463 lines.PushBack(line01);
4464 lines.PushBack(line02);
4518 Size textArea(100.f, 50.f);
4519 Size layoutSize(100.f, 40.f);
4521 LayoutTextData data =
4523 "Layout multi-line LTR text with ellipsis.",
4524 "Hello world demo hello world demo hello world demo.",
4527 fontDescriptionRuns.Begin(),
4533 Layout::Engine::MULTI_LINE_BOX,
4537 DevelText::EllipsisPosition::END,
4540 if(!LayoutTextTest(data))
4542 tet_result(TET_FAIL);
4545 tet_result(TET_PASS);
4549 int UtcDaliTextLayoutEllipsis03(void)
4551 ToolkitTestApplication application;
4552 tet_infoline(" UtcDaliTextLayoutEllipsis03");
4554 // Layout single-line RTL text with ellipsis.
4556 const std::string fontHebrew("TizenSansHebrew");
4557 const std::string fontArabic("TizenSansArabic");
4559 // Set a known font description
4560 FontDescriptionRun fontDescriptionRun01;
4561 fontDescriptionRun01.characterRun.characterIndex = 0u;
4562 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4563 fontDescriptionRun01.familyLength = fontHebrew.size();
4564 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4565 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4566 fontDescriptionRun01.familyDefined = true;
4567 fontDescriptionRun01.weightDefined = false;
4568 fontDescriptionRun01.widthDefined = false;
4569 fontDescriptionRun01.slantDefined = false;
4570 fontDescriptionRun01.sizeDefined = false;
4572 FontDescriptionRun fontDescriptionRun02;
4573 fontDescriptionRun02.characterRun.characterIndex = 10u;
4574 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4575 fontDescriptionRun02.familyLength = fontArabic.size();
4576 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4577 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4578 fontDescriptionRun02.familyDefined = true;
4579 fontDescriptionRun02.weightDefined = false;
4580 fontDescriptionRun02.widthDefined = false;
4581 fontDescriptionRun02.slantDefined = false;
4582 fontDescriptionRun02.sizeDefined = false;
4584 FontDescriptionRun fontDescriptionRun03;
4585 fontDescriptionRun03.characterRun.characterIndex = 24u;
4586 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4587 fontDescriptionRun03.familyLength = fontHebrew.size();
4588 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4589 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4590 fontDescriptionRun03.familyDefined = true;
4591 fontDescriptionRun03.weightDefined = false;
4592 fontDescriptionRun03.widthDefined = false;
4593 fontDescriptionRun03.slantDefined = false;
4594 fontDescriptionRun03.sizeDefined = false;
4596 FontDescriptionRun fontDescriptionRun04;
4597 fontDescriptionRun04.characterRun.characterIndex = 34u;
4598 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4599 fontDescriptionRun04.familyLength = fontArabic.size();
4600 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4601 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4602 fontDescriptionRun04.familyDefined = true;
4603 fontDescriptionRun04.weightDefined = false;
4604 fontDescriptionRun04.widthDefined = false;
4605 fontDescriptionRun04.slantDefined = false;
4606 fontDescriptionRun04.sizeDefined = false;
4608 FontDescriptionRun fontDescriptionRun05;
4609 fontDescriptionRun05.characterRun.characterIndex = 48u;
4610 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4611 fontDescriptionRun05.familyLength = fontHebrew.size();
4612 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4613 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4614 fontDescriptionRun05.familyDefined = true;
4615 fontDescriptionRun05.weightDefined = false;
4616 fontDescriptionRun05.widthDefined = false;
4617 fontDescriptionRun05.slantDefined = false;
4618 fontDescriptionRun05.sizeDefined = false;
4620 FontDescriptionRun fontDescriptionRun06;
4621 fontDescriptionRun06.characterRun.characterIndex = 58u;
4622 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4623 fontDescriptionRun06.familyLength = fontArabic.size();
4624 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4625 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4626 fontDescriptionRun06.familyDefined = true;
4627 fontDescriptionRun06.weightDefined = false;
4628 fontDescriptionRun06.widthDefined = false;
4629 fontDescriptionRun06.slantDefined = false;
4630 fontDescriptionRun06.sizeDefined = false;
4632 Vector<FontDescriptionRun> fontDescriptionRuns;
4633 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4634 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4635 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4636 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4637 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4638 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4640 struct LineRun line01 =
4652 Vector<LineRun> lines;
4653 lines.PushBack(line01);
4691 Size textArea(100.f, 50.f);
4692 Size layoutSize(100.f, 20.f);
4694 LayoutTextData data =
4696 "Layout single-line RTL text with ellipsis.",
4697 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4700 fontDescriptionRuns.Begin(),
4706 Layout::Engine::SINGLE_LINE_BOX,
4710 DevelText::EllipsisPosition::END,
4713 if(!LayoutTextTest(data))
4715 tet_result(TET_FAIL);
4718 tet_result(TET_PASS);
4722 int UtcDaliTextLayoutEllipsis04(void)
4724 ToolkitTestApplication application;
4725 tet_infoline(" UtcDaliTextLayoutEllipsis04");
4727 // Layout multi-line RTL text with ellipsis.
4729 const std::string fontHebrew("TizenSansHebrew");
4730 const std::string fontArabic("TizenSansArabic");
4732 // Set a known font description
4733 FontDescriptionRun fontDescriptionRun01;
4734 fontDescriptionRun01.characterRun.characterIndex = 0u;
4735 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4736 fontDescriptionRun01.familyLength = fontHebrew.size();
4737 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4738 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4739 fontDescriptionRun01.familyDefined = true;
4740 fontDescriptionRun01.weightDefined = false;
4741 fontDescriptionRun01.widthDefined = false;
4742 fontDescriptionRun01.slantDefined = false;
4743 fontDescriptionRun01.sizeDefined = false;
4745 FontDescriptionRun fontDescriptionRun02;
4746 fontDescriptionRun02.characterRun.characterIndex = 10u;
4747 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4748 fontDescriptionRun02.familyLength = fontArabic.size();
4749 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4750 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4751 fontDescriptionRun02.familyDefined = true;
4752 fontDescriptionRun02.weightDefined = false;
4753 fontDescriptionRun02.widthDefined = false;
4754 fontDescriptionRun02.slantDefined = false;
4755 fontDescriptionRun02.sizeDefined = false;
4757 FontDescriptionRun fontDescriptionRun03;
4758 fontDescriptionRun03.characterRun.characterIndex = 24u;
4759 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4760 fontDescriptionRun03.familyLength = fontHebrew.size();
4761 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4762 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4763 fontDescriptionRun03.familyDefined = true;
4764 fontDescriptionRun03.weightDefined = false;
4765 fontDescriptionRun03.widthDefined = false;
4766 fontDescriptionRun03.slantDefined = false;
4767 fontDescriptionRun03.sizeDefined = false;
4769 FontDescriptionRun fontDescriptionRun04;
4770 fontDescriptionRun04.characterRun.characterIndex = 34u;
4771 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4772 fontDescriptionRun04.familyLength = fontArabic.size();
4773 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4774 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4775 fontDescriptionRun04.familyDefined = true;
4776 fontDescriptionRun04.weightDefined = false;
4777 fontDescriptionRun04.widthDefined = false;
4778 fontDescriptionRun04.slantDefined = false;
4779 fontDescriptionRun04.sizeDefined = false;
4781 FontDescriptionRun fontDescriptionRun05;
4782 fontDescriptionRun05.characterRun.characterIndex = 48u;
4783 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4784 fontDescriptionRun05.familyLength = fontHebrew.size();
4785 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4786 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4787 fontDescriptionRun05.familyDefined = true;
4788 fontDescriptionRun05.weightDefined = false;
4789 fontDescriptionRun05.widthDefined = false;
4790 fontDescriptionRun05.slantDefined = false;
4791 fontDescriptionRun05.sizeDefined = false;
4793 FontDescriptionRun fontDescriptionRun06;
4794 fontDescriptionRun06.characterRun.characterIndex = 58u;
4795 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4796 fontDescriptionRun06.familyLength = fontArabic.size();
4797 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4798 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4799 fontDescriptionRun06.familyDefined = true;
4800 fontDescriptionRun06.weightDefined = false;
4801 fontDescriptionRun06.widthDefined = false;
4802 fontDescriptionRun06.slantDefined = false;
4803 fontDescriptionRun06.sizeDefined = false;
4805 Vector<FontDescriptionRun> fontDescriptionRuns;
4806 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4807 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4808 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4809 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4810 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4811 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4813 struct LineRun line01 =
4825 struct LineRun line02 =
4837 Vector<LineRun> lines;
4838 lines.PushBack(line01);
4839 lines.PushBack(line02);
4913 Size textArea(100.f, 50.f);
4914 Size layoutSize(100.f, 40.f);
4916 LayoutTextData data =
4918 "Layout multi-line RTL text with ellipsis.",
4919 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4922 fontDescriptionRuns.Begin(),
4928 Layout::Engine::MULTI_LINE_BOX,
4932 DevelText::EllipsisPosition::END,
4935 if(!LayoutTextTest(data))
4937 tet_result(TET_FAIL);
4940 tet_result(TET_PASS);
4944 int UtcDaliTextLayoutEllipsis05(void)
4946 ToolkitTestApplication application;
4947 tet_infoline(" UtcDaliTextLayoutEllipsis05");
4949 const std::string fontLatin("TizenSans");
4951 // Set a known font description
4952 FontDescriptionRun fontDescriptionRun01;
4953 fontDescriptionRun01.characterRun.characterIndex = 0u;
4954 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4955 fontDescriptionRun01.familyLength = fontLatin.size();
4956 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4957 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4958 fontDescriptionRun01.familyDefined = true;
4959 fontDescriptionRun01.weightDefined = false;
4960 fontDescriptionRun01.widthDefined = false;
4961 fontDescriptionRun01.slantDefined = false;
4962 fontDescriptionRun01.sizeDefined = false;
4964 Vector<FontDescriptionRun> fontDescriptionRuns;
4965 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4967 struct LineRun line01 =
4979 Vector<LineRun> lines;
4980 lines.PushBack(line01);
4986 Size textArea(100.f, 19.f);
4987 Size layoutSize(100.f, 20.f);
4989 LayoutTextData data =
4991 "Not enough height.",
4995 fontDescriptionRuns.Begin(),
5001 Layout::Engine::MULTI_LINE_BOX,
5005 DevelText::EllipsisPosition::END,
5008 if(!LayoutTextTest(data))
5010 tet_result(TET_FAIL);
5013 tet_result(TET_PASS);
5017 int UtcDaliTextAlign01(void)
5019 ToolkitTestApplication application;
5020 tet_infoline(" UtcDaliTextAlign01");
5022 // Calculate text alignment.
5024 const std::string fontLatin("TizenSans");
5025 const std::string fontHebrew("TizenSansHebrew");
5026 const std::string fontArabic("TizenSansArabic");
5028 // Set a known font description
5029 FontDescriptionRun fontDescriptionRun01;
5030 fontDescriptionRun01.characterRun.characterIndex = 0u;
5031 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5032 fontDescriptionRun01.familyLength = fontLatin.size();
5033 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5034 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5035 fontDescriptionRun01.familyDefined = true;
5036 fontDescriptionRun01.weightDefined = false;
5037 fontDescriptionRun01.widthDefined = false;
5038 fontDescriptionRun01.slantDefined = false;
5039 fontDescriptionRun01.sizeDefined = false;
5041 FontDescriptionRun fontDescriptionRun02;
5042 fontDescriptionRun02.characterRun.characterIndex = 12u;
5043 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5044 fontDescriptionRun02.familyLength = fontHebrew.size();
5045 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5046 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5047 fontDescriptionRun02.familyDefined = true;
5048 fontDescriptionRun02.weightDefined = false;
5049 fontDescriptionRun02.widthDefined = false;
5050 fontDescriptionRun02.slantDefined = false;
5051 fontDescriptionRun02.sizeDefined = false;
5053 FontDescriptionRun fontDescriptionRun03;
5054 fontDescriptionRun03.characterRun.characterIndex = 22u;
5055 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5056 fontDescriptionRun03.familyLength = fontArabic.size();
5057 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5058 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5059 fontDescriptionRun03.familyDefined = true;
5060 fontDescriptionRun03.weightDefined = false;
5061 fontDescriptionRun03.widthDefined = false;
5062 fontDescriptionRun03.slantDefined = false;
5063 fontDescriptionRun03.sizeDefined = false;
5065 FontDescriptionRun fontDescriptionRun04;
5066 fontDescriptionRun04.characterRun.characterIndex = 36u;
5067 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5068 fontDescriptionRun04.familyLength = fontLatin.size();
5069 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5070 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5071 fontDescriptionRun04.familyDefined = true;
5072 fontDescriptionRun04.weightDefined = false;
5073 fontDescriptionRun04.widthDefined = false;
5074 fontDescriptionRun04.slantDefined = false;
5075 fontDescriptionRun04.sizeDefined = false;
5077 FontDescriptionRun fontDescriptionRun05;
5078 fontDescriptionRun05.characterRun.characterIndex = 48u;
5079 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5080 fontDescriptionRun05.familyLength = fontLatin.size();
5081 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5082 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5083 fontDescriptionRun05.familyDefined = true;
5084 fontDescriptionRun05.weightDefined = false;
5085 fontDescriptionRun05.widthDefined = false;
5086 fontDescriptionRun05.slantDefined = false;
5087 fontDescriptionRun05.sizeDefined = false;
5089 FontDescriptionRun fontDescriptionRun06;
5090 fontDescriptionRun06.characterRun.characterIndex = 60u;
5091 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5092 fontDescriptionRun06.familyLength = fontArabic.size();
5093 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5094 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5095 fontDescriptionRun06.familyDefined = true;
5096 fontDescriptionRun06.weightDefined = false;
5097 fontDescriptionRun06.widthDefined = false;
5098 fontDescriptionRun06.slantDefined = false;
5099 fontDescriptionRun06.sizeDefined = false;
5101 Vector<FontDescriptionRun> fontDescriptionRuns;
5102 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5103 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5104 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5105 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5106 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5107 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5109 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5111 Size textArea(100.f, 300.f);
5114 "Begin alignment for the first paragraph.",
5115 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5118 fontDescriptionRuns.Begin(),
5119 Text::HorizontalAlignment::BEGIN,
5120 Text::VerticalAlignment::TOP,
5125 Dali::LayoutDirection::LEFT_TO_RIGHT,
5128 if(!AlignTest(data))
5130 tet_result(TET_FAIL);
5133 tet_result(TET_PASS);
5137 int UtcDaliTextAlign02(void)
5139 ToolkitTestApplication application;
5140 tet_infoline(" UtcDaliTextAlign02");
5142 // Calculate text alignment.
5144 const std::string fontLatin("TizenSans");
5145 const std::string fontHebrew("TizenSansHebrew");
5146 const std::string fontArabic("TizenSansArabic");
5148 // Set a known font description
5149 FontDescriptionRun fontDescriptionRun01;
5150 fontDescriptionRun01.characterRun.characterIndex = 0u;
5151 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5152 fontDescriptionRun01.familyLength = fontLatin.size();
5153 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5154 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5155 fontDescriptionRun01.familyDefined = true;
5156 fontDescriptionRun01.weightDefined = false;
5157 fontDescriptionRun01.widthDefined = false;
5158 fontDescriptionRun01.slantDefined = false;
5159 fontDescriptionRun01.sizeDefined = false;
5161 FontDescriptionRun fontDescriptionRun02;
5162 fontDescriptionRun02.characterRun.characterIndex = 12u;
5163 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5164 fontDescriptionRun02.familyLength = fontHebrew.size();
5165 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5166 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5167 fontDescriptionRun02.familyDefined = true;
5168 fontDescriptionRun02.weightDefined = false;
5169 fontDescriptionRun02.widthDefined = false;
5170 fontDescriptionRun02.slantDefined = false;
5171 fontDescriptionRun02.sizeDefined = false;
5173 FontDescriptionRun fontDescriptionRun03;
5174 fontDescriptionRun03.characterRun.characterIndex = 22u;
5175 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5176 fontDescriptionRun03.familyLength = fontArabic.size();
5177 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5178 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5179 fontDescriptionRun03.familyDefined = true;
5180 fontDescriptionRun03.weightDefined = false;
5181 fontDescriptionRun03.widthDefined = false;
5182 fontDescriptionRun03.slantDefined = false;
5183 fontDescriptionRun03.sizeDefined = false;
5185 FontDescriptionRun fontDescriptionRun04;
5186 fontDescriptionRun04.characterRun.characterIndex = 36u;
5187 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5188 fontDescriptionRun04.familyLength = fontLatin.size();
5189 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5190 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5191 fontDescriptionRun04.familyDefined = true;
5192 fontDescriptionRun04.weightDefined = false;
5193 fontDescriptionRun04.widthDefined = false;
5194 fontDescriptionRun04.slantDefined = false;
5195 fontDescriptionRun04.sizeDefined = false;
5197 FontDescriptionRun fontDescriptionRun05;
5198 fontDescriptionRun05.characterRun.characterIndex = 48u;
5199 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5200 fontDescriptionRun05.familyLength = fontLatin.size();
5201 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5202 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5203 fontDescriptionRun05.familyDefined = true;
5204 fontDescriptionRun05.weightDefined = false;
5205 fontDescriptionRun05.widthDefined = false;
5206 fontDescriptionRun05.slantDefined = false;
5207 fontDescriptionRun05.sizeDefined = false;
5209 FontDescriptionRun fontDescriptionRun06;
5210 fontDescriptionRun06.characterRun.characterIndex = 60u;
5211 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5212 fontDescriptionRun06.familyLength = fontArabic.size();
5213 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5214 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5215 fontDescriptionRun06.familyDefined = true;
5216 fontDescriptionRun06.weightDefined = false;
5217 fontDescriptionRun06.widthDefined = false;
5218 fontDescriptionRun06.slantDefined = false;
5219 fontDescriptionRun06.sizeDefined = false;
5221 Vector<FontDescriptionRun> fontDescriptionRuns;
5222 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5223 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5224 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5225 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5226 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5227 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5229 float positions[] = {0.f, 0.f, 33.f, 19.f, 0.f, 0.f};
5231 Size textArea(100.f, 300.f);
5234 "Begin alignment for the mid paragraph.",
5235 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5238 fontDescriptionRuns.Begin(),
5239 Text::HorizontalAlignment::BEGIN,
5240 Text::VerticalAlignment::TOP,
5245 Dali::LayoutDirection::LEFT_TO_RIGHT,
5248 if(!AlignTest(data))
5250 tet_result(TET_FAIL);
5253 tet_result(TET_PASS);
5257 int UtcDaliTextAlign03(void)
5259 ToolkitTestApplication application;
5260 tet_infoline(" UtcDaliTextAlign03");
5262 // Calculate text alignment.
5264 const std::string fontLatin("TizenSans");
5265 const std::string fontHebrew("TizenSansHebrew");
5266 const std::string fontArabic("TizenSansArabic");
5268 // Set a known font description
5269 FontDescriptionRun fontDescriptionRun01;
5270 fontDescriptionRun01.characterRun.characterIndex = 0u;
5271 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5272 fontDescriptionRun01.familyLength = fontLatin.size();
5273 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5274 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5275 fontDescriptionRun01.familyDefined = true;
5276 fontDescriptionRun01.weightDefined = false;
5277 fontDescriptionRun01.widthDefined = false;
5278 fontDescriptionRun01.slantDefined = false;
5279 fontDescriptionRun01.sizeDefined = false;
5281 FontDescriptionRun fontDescriptionRun02;
5282 fontDescriptionRun02.characterRun.characterIndex = 12u;
5283 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5284 fontDescriptionRun02.familyLength = fontHebrew.size();
5285 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5286 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5287 fontDescriptionRun02.familyDefined = true;
5288 fontDescriptionRun02.weightDefined = false;
5289 fontDescriptionRun02.widthDefined = false;
5290 fontDescriptionRun02.slantDefined = false;
5291 fontDescriptionRun02.sizeDefined = false;
5293 FontDescriptionRun fontDescriptionRun03;
5294 fontDescriptionRun03.characterRun.characterIndex = 22u;
5295 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5296 fontDescriptionRun03.familyLength = fontArabic.size();
5297 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5298 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5299 fontDescriptionRun03.familyDefined = true;
5300 fontDescriptionRun03.weightDefined = false;
5301 fontDescriptionRun03.widthDefined = false;
5302 fontDescriptionRun03.slantDefined = false;
5303 fontDescriptionRun03.sizeDefined = false;
5305 FontDescriptionRun fontDescriptionRun04;
5306 fontDescriptionRun04.characterRun.characterIndex = 36u;
5307 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5308 fontDescriptionRun04.familyLength = fontLatin.size();
5309 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5310 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5311 fontDescriptionRun04.familyDefined = true;
5312 fontDescriptionRun04.weightDefined = false;
5313 fontDescriptionRun04.widthDefined = false;
5314 fontDescriptionRun04.slantDefined = false;
5315 fontDescriptionRun04.sizeDefined = false;
5317 FontDescriptionRun fontDescriptionRun05;
5318 fontDescriptionRun05.characterRun.characterIndex = 48u;
5319 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5320 fontDescriptionRun05.familyLength = fontLatin.size();
5321 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5322 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5323 fontDescriptionRun05.familyDefined = true;
5324 fontDescriptionRun05.weightDefined = false;
5325 fontDescriptionRun05.widthDefined = false;
5326 fontDescriptionRun05.slantDefined = false;
5327 fontDescriptionRun05.sizeDefined = false;
5329 FontDescriptionRun fontDescriptionRun06;
5330 fontDescriptionRun06.characterRun.characterIndex = 60u;
5331 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5332 fontDescriptionRun06.familyLength = fontArabic.size();
5333 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5334 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5335 fontDescriptionRun06.familyDefined = true;
5336 fontDescriptionRun06.weightDefined = false;
5337 fontDescriptionRun06.widthDefined = false;
5338 fontDescriptionRun06.slantDefined = false;
5339 fontDescriptionRun06.sizeDefined = false;
5341 Vector<FontDescriptionRun> fontDescriptionRuns;
5342 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5343 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5344 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5345 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5346 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5347 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5349 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5351 Size textArea(100.f, 300.f);
5354 "Begin alignment for the last paragraph.",
5355 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5358 fontDescriptionRuns.Begin(),
5359 Text::HorizontalAlignment::BEGIN,
5360 Text::VerticalAlignment::TOP,
5365 Dali::LayoutDirection::LEFT_TO_RIGHT,
5368 if(!AlignTest(data))
5370 tet_result(TET_FAIL);
5373 tet_result(TET_PASS);
5377 int UtcDaliTextAlign04(void)
5379 ToolkitTestApplication application;
5380 tet_infoline(" UtcDaliTextAlign04");
5382 // Calculate text alignment.
5384 const std::string fontLatin("TizenSans");
5385 const std::string fontHebrew("TizenSansHebrew");
5386 const std::string fontArabic("TizenSansArabic");
5388 // Set a known font description
5389 FontDescriptionRun fontDescriptionRun01;
5390 fontDescriptionRun01.characterRun.characterIndex = 0u;
5391 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5392 fontDescriptionRun01.familyLength = fontLatin.size();
5393 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5394 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5395 fontDescriptionRun01.familyDefined = true;
5396 fontDescriptionRun01.weightDefined = false;
5397 fontDescriptionRun01.widthDefined = false;
5398 fontDescriptionRun01.slantDefined = false;
5399 fontDescriptionRun01.sizeDefined = false;
5401 FontDescriptionRun fontDescriptionRun02;
5402 fontDescriptionRun02.characterRun.characterIndex = 12u;
5403 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5404 fontDescriptionRun02.familyLength = fontHebrew.size();
5405 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5406 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5407 fontDescriptionRun02.familyDefined = true;
5408 fontDescriptionRun02.weightDefined = false;
5409 fontDescriptionRun02.widthDefined = false;
5410 fontDescriptionRun02.slantDefined = false;
5411 fontDescriptionRun02.sizeDefined = false;
5413 FontDescriptionRun fontDescriptionRun03;
5414 fontDescriptionRun03.characterRun.characterIndex = 22u;
5415 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5416 fontDescriptionRun03.familyLength = fontArabic.size();
5417 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5418 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5419 fontDescriptionRun03.familyDefined = true;
5420 fontDescriptionRun03.weightDefined = false;
5421 fontDescriptionRun03.widthDefined = false;
5422 fontDescriptionRun03.slantDefined = false;
5423 fontDescriptionRun03.sizeDefined = false;
5425 FontDescriptionRun fontDescriptionRun04;
5426 fontDescriptionRun04.characterRun.characterIndex = 36u;
5427 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5428 fontDescriptionRun04.familyLength = fontLatin.size();
5429 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5430 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5431 fontDescriptionRun04.familyDefined = true;
5432 fontDescriptionRun04.weightDefined = false;
5433 fontDescriptionRun04.widthDefined = false;
5434 fontDescriptionRun04.slantDefined = false;
5435 fontDescriptionRun04.sizeDefined = false;
5437 FontDescriptionRun fontDescriptionRun05;
5438 fontDescriptionRun05.characterRun.characterIndex = 48u;
5439 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5440 fontDescriptionRun05.familyLength = fontLatin.size();
5441 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5442 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5443 fontDescriptionRun05.familyDefined = true;
5444 fontDescriptionRun05.weightDefined = false;
5445 fontDescriptionRun05.widthDefined = false;
5446 fontDescriptionRun05.slantDefined = false;
5447 fontDescriptionRun05.sizeDefined = false;
5449 FontDescriptionRun fontDescriptionRun06;
5450 fontDescriptionRun06.characterRun.characterIndex = 60u;
5451 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5452 fontDescriptionRun06.familyLength = fontArabic.size();
5453 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5454 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5455 fontDescriptionRun06.familyDefined = true;
5456 fontDescriptionRun06.weightDefined = false;
5457 fontDescriptionRun06.widthDefined = false;
5458 fontDescriptionRun06.slantDefined = false;
5459 fontDescriptionRun06.sizeDefined = false;
5461 Vector<FontDescriptionRun> fontDescriptionRuns;
5462 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5463 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5464 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5465 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5466 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5467 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5469 float positions[] = {9.f, 15.f, 0.f, 0.f, 0.f, 0.f};
5471 Size textArea(100.f, 300.f);
5474 "Center alignment for the first paragraph.",
5475 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5478 fontDescriptionRuns.Begin(),
5479 Text::HorizontalAlignment::CENTER,
5480 Text::VerticalAlignment::TOP,
5485 Dali::LayoutDirection::LEFT_TO_RIGHT,
5488 if(!AlignTest(data))
5490 tet_result(TET_FAIL);
5493 tet_result(TET_PASS);
5497 int UtcDaliTextAlign05(void)
5499 ToolkitTestApplication application;
5500 tet_infoline(" UtcDaliTextAlign05");
5502 // Calculate text alignment.
5504 const std::string fontLatin("TizenSans");
5505 const std::string fontHebrew("TizenSansHebrew");
5506 const std::string fontArabic("TizenSansArabic");
5508 // Set a known font description
5509 FontDescriptionRun fontDescriptionRun01;
5510 fontDescriptionRun01.characterRun.characterIndex = 0u;
5511 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5512 fontDescriptionRun01.familyLength = fontLatin.size();
5513 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5514 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5515 fontDescriptionRun01.familyDefined = true;
5516 fontDescriptionRun01.weightDefined = false;
5517 fontDescriptionRun01.widthDefined = false;
5518 fontDescriptionRun01.slantDefined = false;
5519 fontDescriptionRun01.sizeDefined = false;
5521 FontDescriptionRun fontDescriptionRun02;
5522 fontDescriptionRun02.characterRun.characterIndex = 12u;
5523 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5524 fontDescriptionRun02.familyLength = fontHebrew.size();
5525 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5526 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5527 fontDescriptionRun02.familyDefined = true;
5528 fontDescriptionRun02.weightDefined = false;
5529 fontDescriptionRun02.widthDefined = false;
5530 fontDescriptionRun02.slantDefined = false;
5531 fontDescriptionRun02.sizeDefined = false;
5533 FontDescriptionRun fontDescriptionRun03;
5534 fontDescriptionRun03.characterRun.characterIndex = 22u;
5535 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5536 fontDescriptionRun03.familyLength = fontArabic.size();
5537 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5538 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5539 fontDescriptionRun03.familyDefined = true;
5540 fontDescriptionRun03.weightDefined = false;
5541 fontDescriptionRun03.widthDefined = false;
5542 fontDescriptionRun03.slantDefined = false;
5543 fontDescriptionRun03.sizeDefined = false;
5545 FontDescriptionRun fontDescriptionRun04;
5546 fontDescriptionRun04.characterRun.characterIndex = 36u;
5547 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5548 fontDescriptionRun04.familyLength = fontLatin.size();
5549 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5550 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5551 fontDescriptionRun04.familyDefined = true;
5552 fontDescriptionRun04.weightDefined = false;
5553 fontDescriptionRun04.widthDefined = false;
5554 fontDescriptionRun04.slantDefined = false;
5555 fontDescriptionRun04.sizeDefined = false;
5557 FontDescriptionRun fontDescriptionRun05;
5558 fontDescriptionRun05.characterRun.characterIndex = 48u;
5559 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5560 fontDescriptionRun05.familyLength = fontLatin.size();
5561 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5562 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5563 fontDescriptionRun05.familyDefined = true;
5564 fontDescriptionRun05.weightDefined = false;
5565 fontDescriptionRun05.widthDefined = false;
5566 fontDescriptionRun05.slantDefined = false;
5567 fontDescriptionRun05.sizeDefined = false;
5569 FontDescriptionRun fontDescriptionRun06;
5570 fontDescriptionRun06.characterRun.characterIndex = 60u;
5571 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5572 fontDescriptionRun06.familyLength = fontArabic.size();
5573 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5574 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5575 fontDescriptionRun06.familyDefined = true;
5576 fontDescriptionRun06.weightDefined = false;
5577 fontDescriptionRun06.widthDefined = false;
5578 fontDescriptionRun06.slantDefined = false;
5579 fontDescriptionRun06.sizeDefined = false;
5581 Vector<FontDescriptionRun> fontDescriptionRuns;
5582 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5583 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5584 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5585 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5586 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5587 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5589 float positions[] = {0.f, 0.f, 14.f, 9.f, 0.f, 0.f};
5591 Size textArea(100.f, 300.f);
5594 "Center alignment for the mid paragraph.",
5595 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5598 fontDescriptionRuns.Begin(),
5599 Text::HorizontalAlignment::CENTER,
5600 Text::VerticalAlignment::TOP,
5605 Dali::LayoutDirection::LEFT_TO_RIGHT,
5608 if(!AlignTest(data))
5610 tet_result(TET_FAIL);
5613 tet_result(TET_PASS);
5617 int UtcDaliTextAlign06(void)
5619 ToolkitTestApplication application;
5620 tet_infoline(" UtcDaliTextAlign06");
5622 // Calculate text alignment.
5624 const std::string fontLatin("TizenSans");
5625 const std::string fontHebrew("TizenSansHebrew");
5626 const std::string fontArabic("TizenSansArabic");
5628 // Set a known font description
5629 FontDescriptionRun fontDescriptionRun01;
5630 fontDescriptionRun01.characterRun.characterIndex = 0u;
5631 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5632 fontDescriptionRun01.familyLength = fontLatin.size();
5633 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5634 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5635 fontDescriptionRun01.familyDefined = true;
5636 fontDescriptionRun01.weightDefined = false;
5637 fontDescriptionRun01.widthDefined = false;
5638 fontDescriptionRun01.slantDefined = false;
5639 fontDescriptionRun01.sizeDefined = false;
5641 FontDescriptionRun fontDescriptionRun02;
5642 fontDescriptionRun02.characterRun.characterIndex = 12u;
5643 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5644 fontDescriptionRun02.familyLength = fontHebrew.size();
5645 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5646 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5647 fontDescriptionRun02.familyDefined = true;
5648 fontDescriptionRun02.weightDefined = false;
5649 fontDescriptionRun02.widthDefined = false;
5650 fontDescriptionRun02.slantDefined = false;
5651 fontDescriptionRun02.sizeDefined = false;
5653 FontDescriptionRun fontDescriptionRun03;
5654 fontDescriptionRun03.characterRun.characterIndex = 22u;
5655 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5656 fontDescriptionRun03.familyLength = fontArabic.size();
5657 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5658 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5659 fontDescriptionRun03.familyDefined = true;
5660 fontDescriptionRun03.weightDefined = false;
5661 fontDescriptionRun03.widthDefined = false;
5662 fontDescriptionRun03.slantDefined = false;
5663 fontDescriptionRun03.sizeDefined = false;
5665 FontDescriptionRun fontDescriptionRun04;
5666 fontDescriptionRun04.characterRun.characterIndex = 36u;
5667 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5668 fontDescriptionRun04.familyLength = fontLatin.size();
5669 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5670 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5671 fontDescriptionRun04.familyDefined = true;
5672 fontDescriptionRun04.weightDefined = false;
5673 fontDescriptionRun04.widthDefined = false;
5674 fontDescriptionRun04.slantDefined = false;
5675 fontDescriptionRun04.sizeDefined = false;
5677 FontDescriptionRun fontDescriptionRun05;
5678 fontDescriptionRun05.characterRun.characterIndex = 48u;
5679 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5680 fontDescriptionRun05.familyLength = fontLatin.size();
5681 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5682 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5683 fontDescriptionRun05.familyDefined = true;
5684 fontDescriptionRun05.weightDefined = false;
5685 fontDescriptionRun05.widthDefined = false;
5686 fontDescriptionRun05.slantDefined = false;
5687 fontDescriptionRun05.sizeDefined = false;
5689 FontDescriptionRun fontDescriptionRun06;
5690 fontDescriptionRun06.characterRun.characterIndex = 60u;
5691 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5692 fontDescriptionRun06.familyLength = fontArabic.size();
5693 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5694 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5695 fontDescriptionRun06.familyDefined = true;
5696 fontDescriptionRun06.weightDefined = false;
5697 fontDescriptionRun06.widthDefined = false;
5698 fontDescriptionRun06.slantDefined = false;
5699 fontDescriptionRun06.sizeDefined = false;
5701 Vector<FontDescriptionRun> fontDescriptionRuns;
5702 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5703 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5704 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5705 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5706 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5707 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5709 float positions[] = {0.f, 0.f, 0.f, 0.f, 9.f, 16.f};
5711 Size textArea(100.f, 300.f);
5714 "Center alignment for the last paragraph.",
5715 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5718 fontDescriptionRuns.Begin(),
5719 Text::HorizontalAlignment::CENTER,
5720 Text::VerticalAlignment::TOP,
5725 Dali::LayoutDirection::LEFT_TO_RIGHT,
5728 if(!AlignTest(data))
5730 tet_result(TET_FAIL);
5733 tet_result(TET_PASS);
5737 int UtcDaliTextAlign07(void)
5739 ToolkitTestApplication application;
5740 tet_infoline(" UtcDaliTextAlign07");
5742 // Calculate text alignment.
5744 const std::string fontLatin("TizenSans");
5745 const std::string fontHebrew("TizenSansHebrew");
5746 const std::string fontArabic("TizenSansArabic");
5748 // Set a known font description
5749 FontDescriptionRun fontDescriptionRun01;
5750 fontDescriptionRun01.characterRun.characterIndex = 0u;
5751 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5752 fontDescriptionRun01.familyLength = fontLatin.size();
5753 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5754 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5755 fontDescriptionRun01.familyDefined = true;
5756 fontDescriptionRun01.weightDefined = false;
5757 fontDescriptionRun01.widthDefined = false;
5758 fontDescriptionRun01.slantDefined = false;
5759 fontDescriptionRun01.sizeDefined = false;
5761 FontDescriptionRun fontDescriptionRun02;
5762 fontDescriptionRun02.characterRun.characterIndex = 12u;
5763 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5764 fontDescriptionRun02.familyLength = fontHebrew.size();
5765 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5766 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5767 fontDescriptionRun02.familyDefined = true;
5768 fontDescriptionRun02.weightDefined = false;
5769 fontDescriptionRun02.widthDefined = false;
5770 fontDescriptionRun02.slantDefined = false;
5771 fontDescriptionRun02.sizeDefined = false;
5773 FontDescriptionRun fontDescriptionRun03;
5774 fontDescriptionRun03.characterRun.characterIndex = 22u;
5775 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5776 fontDescriptionRun03.familyLength = fontArabic.size();
5777 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5778 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5779 fontDescriptionRun03.familyDefined = true;
5780 fontDescriptionRun03.weightDefined = false;
5781 fontDescriptionRun03.widthDefined = false;
5782 fontDescriptionRun03.slantDefined = false;
5783 fontDescriptionRun03.sizeDefined = false;
5785 FontDescriptionRun fontDescriptionRun04;
5786 fontDescriptionRun04.characterRun.characterIndex = 36u;
5787 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5788 fontDescriptionRun04.familyLength = fontLatin.size();
5789 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5790 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5791 fontDescriptionRun04.familyDefined = true;
5792 fontDescriptionRun04.weightDefined = false;
5793 fontDescriptionRun04.widthDefined = false;
5794 fontDescriptionRun04.slantDefined = false;
5795 fontDescriptionRun04.sizeDefined = false;
5797 FontDescriptionRun fontDescriptionRun05;
5798 fontDescriptionRun05.characterRun.characterIndex = 48u;
5799 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5800 fontDescriptionRun05.familyLength = fontLatin.size();
5801 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5802 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5803 fontDescriptionRun05.familyDefined = true;
5804 fontDescriptionRun05.weightDefined = false;
5805 fontDescriptionRun05.widthDefined = false;
5806 fontDescriptionRun05.slantDefined = false;
5807 fontDescriptionRun05.sizeDefined = false;
5809 FontDescriptionRun fontDescriptionRun06;
5810 fontDescriptionRun06.characterRun.characterIndex = 60u;
5811 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5812 fontDescriptionRun06.familyLength = fontArabic.size();
5813 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5814 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5815 fontDescriptionRun06.familyDefined = true;
5816 fontDescriptionRun06.weightDefined = false;
5817 fontDescriptionRun06.widthDefined = false;
5818 fontDescriptionRun06.slantDefined = false;
5819 fontDescriptionRun06.sizeDefined = false;
5821 Vector<FontDescriptionRun> fontDescriptionRuns;
5822 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5823 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5824 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5825 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5826 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5827 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5829 float positions[] = {19.f, 30.f, 0.f, 0.f, 0.f, 0.f};
5831 Size textArea(100.f, 300.f);
5834 "End alignment for the first paragraph.",
5835 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5838 fontDescriptionRuns.Begin(),
5839 Text::HorizontalAlignment::END,
5840 Text::VerticalAlignment::TOP,
5845 Dali::LayoutDirection::LEFT_TO_RIGHT,
5848 if(!AlignTest(data))
5850 tet_result(TET_FAIL);
5853 tet_result(TET_PASS);
5857 int UtcDaliTextAlign08(void)
5859 ToolkitTestApplication application;
5860 tet_infoline(" UtcDaliTextAlign08");
5862 // Calculate text alignment.
5864 const std::string fontLatin("TizenSans");
5865 const std::string fontHebrew("TizenSansHebrew");
5866 const std::string fontArabic("TizenSansArabic");
5868 // Set a known font description
5869 FontDescriptionRun fontDescriptionRun01;
5870 fontDescriptionRun01.characterRun.characterIndex = 0u;
5871 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5872 fontDescriptionRun01.familyLength = fontLatin.size();
5873 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5874 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5875 fontDescriptionRun01.familyDefined = true;
5876 fontDescriptionRun01.weightDefined = false;
5877 fontDescriptionRun01.widthDefined = false;
5878 fontDescriptionRun01.slantDefined = false;
5879 fontDescriptionRun01.sizeDefined = false;
5881 FontDescriptionRun fontDescriptionRun02;
5882 fontDescriptionRun02.characterRun.characterIndex = 12u;
5883 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5884 fontDescriptionRun02.familyLength = fontHebrew.size();
5885 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5886 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5887 fontDescriptionRun02.familyDefined = true;
5888 fontDescriptionRun02.weightDefined = false;
5889 fontDescriptionRun02.widthDefined = false;
5890 fontDescriptionRun02.slantDefined = false;
5891 fontDescriptionRun02.sizeDefined = false;
5893 FontDescriptionRun fontDescriptionRun03;
5894 fontDescriptionRun03.characterRun.characterIndex = 22u;
5895 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5896 fontDescriptionRun03.familyLength = fontArabic.size();
5897 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5898 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5899 fontDescriptionRun03.familyDefined = true;
5900 fontDescriptionRun03.weightDefined = false;
5901 fontDescriptionRun03.widthDefined = false;
5902 fontDescriptionRun03.slantDefined = false;
5903 fontDescriptionRun03.sizeDefined = false;
5905 FontDescriptionRun fontDescriptionRun04;
5906 fontDescriptionRun04.characterRun.characterIndex = 36u;
5907 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5908 fontDescriptionRun04.familyLength = fontLatin.size();
5909 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5910 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5911 fontDescriptionRun04.familyDefined = true;
5912 fontDescriptionRun04.weightDefined = false;
5913 fontDescriptionRun04.widthDefined = false;
5914 fontDescriptionRun04.slantDefined = false;
5915 fontDescriptionRun04.sizeDefined = false;
5917 FontDescriptionRun fontDescriptionRun05;
5918 fontDescriptionRun05.characterRun.characterIndex = 48u;
5919 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5920 fontDescriptionRun05.familyLength = fontLatin.size();
5921 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5922 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5923 fontDescriptionRun05.familyDefined = true;
5924 fontDescriptionRun05.weightDefined = false;
5925 fontDescriptionRun05.widthDefined = false;
5926 fontDescriptionRun05.slantDefined = false;
5927 fontDescriptionRun05.sizeDefined = false;
5929 FontDescriptionRun fontDescriptionRun06;
5930 fontDescriptionRun06.characterRun.characterIndex = 60u;
5931 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5932 fontDescriptionRun06.familyLength = fontArabic.size();
5933 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5934 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5935 fontDescriptionRun06.familyDefined = true;
5936 fontDescriptionRun06.weightDefined = false;
5937 fontDescriptionRun06.widthDefined = false;
5938 fontDescriptionRun06.slantDefined = false;
5939 fontDescriptionRun06.sizeDefined = false;
5941 Vector<FontDescriptionRun> fontDescriptionRuns;
5942 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5943 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5944 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5945 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5946 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5947 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5949 float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f};
5951 Size textArea(100.f, 300.f);
5954 "End alignment for the mid paragraph.",
5955 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5958 fontDescriptionRuns.Begin(),
5959 Text::HorizontalAlignment::END,
5960 Text::VerticalAlignment::TOP,
5965 Dali::LayoutDirection::LEFT_TO_RIGHT,
5968 if(!AlignTest(data))
5970 tet_result(TET_FAIL);
5973 tet_result(TET_PASS);
5977 int UtcDaliTextAlign09(void)
5979 ToolkitTestApplication application;
5980 tet_infoline(" UtcDaliTextAlign09");
5982 // Calculate text alignment.
5984 const std::string fontLatin("TizenSans");
5985 const std::string fontHebrew("TizenSansHebrew");
5986 const std::string fontArabic("TizenSansArabic");
5988 // Set a known font description
5989 FontDescriptionRun fontDescriptionRun01;
5990 fontDescriptionRun01.characterRun.characterIndex = 0u;
5991 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5992 fontDescriptionRun01.familyLength = fontLatin.size();
5993 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5994 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5995 fontDescriptionRun01.familyDefined = true;
5996 fontDescriptionRun01.weightDefined = false;
5997 fontDescriptionRun01.widthDefined = false;
5998 fontDescriptionRun01.slantDefined = false;
5999 fontDescriptionRun01.sizeDefined = false;
6001 FontDescriptionRun fontDescriptionRun02;
6002 fontDescriptionRun02.characterRun.characterIndex = 12u;
6003 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6004 fontDescriptionRun02.familyLength = fontHebrew.size();
6005 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6006 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6007 fontDescriptionRun02.familyDefined = true;
6008 fontDescriptionRun02.weightDefined = false;
6009 fontDescriptionRun02.widthDefined = false;
6010 fontDescriptionRun02.slantDefined = false;
6011 fontDescriptionRun02.sizeDefined = false;
6013 FontDescriptionRun fontDescriptionRun03;
6014 fontDescriptionRun03.characterRun.characterIndex = 22u;
6015 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6016 fontDescriptionRun03.familyLength = fontArabic.size();
6017 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6018 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6019 fontDescriptionRun03.familyDefined = true;
6020 fontDescriptionRun03.weightDefined = false;
6021 fontDescriptionRun03.widthDefined = false;
6022 fontDescriptionRun03.slantDefined = false;
6023 fontDescriptionRun03.sizeDefined = false;
6025 FontDescriptionRun fontDescriptionRun04;
6026 fontDescriptionRun04.characterRun.characterIndex = 36u;
6027 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6028 fontDescriptionRun04.familyLength = fontLatin.size();
6029 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6030 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6031 fontDescriptionRun04.familyDefined = true;
6032 fontDescriptionRun04.weightDefined = false;
6033 fontDescriptionRun04.widthDefined = false;
6034 fontDescriptionRun04.slantDefined = false;
6035 fontDescriptionRun04.sizeDefined = false;
6037 FontDescriptionRun fontDescriptionRun05;
6038 fontDescriptionRun05.characterRun.characterIndex = 48u;
6039 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6040 fontDescriptionRun05.familyLength = fontLatin.size();
6041 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6042 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6043 fontDescriptionRun05.familyDefined = true;
6044 fontDescriptionRun05.weightDefined = false;
6045 fontDescriptionRun05.widthDefined = false;
6046 fontDescriptionRun05.slantDefined = false;
6047 fontDescriptionRun05.sizeDefined = false;
6049 FontDescriptionRun fontDescriptionRun06;
6050 fontDescriptionRun06.characterRun.characterIndex = 60u;
6051 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6052 fontDescriptionRun06.familyLength = fontArabic.size();
6053 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6054 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6055 fontDescriptionRun06.familyDefined = true;
6056 fontDescriptionRun06.weightDefined = false;
6057 fontDescriptionRun06.widthDefined = false;
6058 fontDescriptionRun06.slantDefined = false;
6059 fontDescriptionRun06.sizeDefined = false;
6061 Vector<FontDescriptionRun> fontDescriptionRuns;
6062 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6063 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6064 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6065 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6066 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6067 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6069 float positions[] = {0.f, 0.f, 0.f, 0.f, 19.f, 33.f};
6071 Size textArea(100.f, 300.f);
6074 "End alignment for the last paragraph.",
6075 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6078 fontDescriptionRuns.Begin(),
6079 Text::HorizontalAlignment::END,
6080 Text::VerticalAlignment::TOP,
6085 Dali::LayoutDirection::LEFT_TO_RIGHT,
6088 if(!AlignTest(data))
6090 tet_result(TET_FAIL);
6093 tet_result(TET_PASS);
6097 int UtcDaliTextAlign10(void)
6099 ToolkitTestApplication application;
6100 tet_infoline(" UtcDaliTextAlign10");
6102 // Calculate text alignment.
6104 const std::string fontLatin("TizenSans");
6105 const std::string fontHebrew("TizenSansHebrew");
6106 const std::string fontArabic("TizenSansArabic");
6108 // Set a known font description
6109 FontDescriptionRun fontDescriptionRun01;
6110 fontDescriptionRun01.characterRun.characterIndex = 0u;
6111 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6112 fontDescriptionRun01.familyLength = fontLatin.size();
6113 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6114 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6115 fontDescriptionRun01.familyDefined = true;
6116 fontDescriptionRun01.weightDefined = false;
6117 fontDescriptionRun01.widthDefined = false;
6118 fontDescriptionRun01.slantDefined = false;
6119 fontDescriptionRun01.sizeDefined = false;
6121 FontDescriptionRun fontDescriptionRun02;
6122 fontDescriptionRun02.characterRun.characterIndex = 12u;
6123 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6124 fontDescriptionRun02.familyLength = fontHebrew.size();
6125 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6126 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6127 fontDescriptionRun02.familyDefined = true;
6128 fontDescriptionRun02.weightDefined = false;
6129 fontDescriptionRun02.widthDefined = false;
6130 fontDescriptionRun02.slantDefined = false;
6131 fontDescriptionRun02.sizeDefined = false;
6133 FontDescriptionRun fontDescriptionRun03;
6134 fontDescriptionRun03.characterRun.characterIndex = 22u;
6135 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6136 fontDescriptionRun03.familyLength = fontArabic.size();
6137 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6138 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6139 fontDescriptionRun03.familyDefined = true;
6140 fontDescriptionRun03.weightDefined = false;
6141 fontDescriptionRun03.widthDefined = false;
6142 fontDescriptionRun03.slantDefined = false;
6143 fontDescriptionRun03.sizeDefined = false;
6145 FontDescriptionRun fontDescriptionRun04;
6146 fontDescriptionRun04.characterRun.characterIndex = 36u;
6147 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6148 fontDescriptionRun04.familyLength = fontLatin.size();
6149 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6150 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6151 fontDescriptionRun04.familyDefined = true;
6152 fontDescriptionRun04.weightDefined = false;
6153 fontDescriptionRun04.widthDefined = false;
6154 fontDescriptionRun04.slantDefined = false;
6155 fontDescriptionRun04.sizeDefined = false;
6157 FontDescriptionRun fontDescriptionRun05;
6158 fontDescriptionRun05.characterRun.characterIndex = 48u;
6159 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6160 fontDescriptionRun05.familyLength = fontLatin.size();
6161 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6162 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6163 fontDescriptionRun05.familyDefined = true;
6164 fontDescriptionRun05.weightDefined = false;
6165 fontDescriptionRun05.widthDefined = false;
6166 fontDescriptionRun05.slantDefined = false;
6167 fontDescriptionRun05.sizeDefined = false;
6169 FontDescriptionRun fontDescriptionRun06;
6170 fontDescriptionRun06.characterRun.characterIndex = 60u;
6171 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6172 fontDescriptionRun06.familyLength = fontArabic.size();
6173 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6174 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6175 fontDescriptionRun06.familyDefined = true;
6176 fontDescriptionRun06.weightDefined = false;
6177 fontDescriptionRun06.widthDefined = false;
6178 fontDescriptionRun06.slantDefined = false;
6179 fontDescriptionRun06.sizeDefined = false;
6181 Vector<FontDescriptionRun> fontDescriptionRuns;
6182 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6183 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6184 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6185 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6186 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6187 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6189 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6191 Size textArea(100.f, 300.f);
6194 "Begin alignment for the first paragraph.",
6195 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6198 fontDescriptionRuns.Begin(),
6199 Text::HorizontalAlignment::END,
6200 Text::VerticalAlignment::TOP,
6205 Dali::LayoutDirection::RIGHT_TO_LEFT,
6208 if(!AlignTest(data))
6210 tet_result(TET_FAIL);
6213 tet_result(TET_PASS);
6217 int UtcDaliTextAlign11(void)
6219 ToolkitTestApplication application;
6220 tet_infoline(" UtcDaliTextAlign11");
6222 // Calculate text alignment.
6224 const std::string fontLatin("TizenSans");
6225 const std::string fontHebrew("TizenSansHebrew");
6226 const std::string fontArabic("TizenSansArabic");
6228 // Set a known font description
6229 FontDescriptionRun fontDescriptionRun01;
6230 fontDescriptionRun01.characterRun.characterIndex = 0u;
6231 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6232 fontDescriptionRun01.familyLength = fontLatin.size();
6233 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6234 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6235 fontDescriptionRun01.familyDefined = true;
6236 fontDescriptionRun01.weightDefined = false;
6237 fontDescriptionRun01.widthDefined = false;
6238 fontDescriptionRun01.slantDefined = false;
6239 fontDescriptionRun01.sizeDefined = false;
6241 FontDescriptionRun fontDescriptionRun02;
6242 fontDescriptionRun02.characterRun.characterIndex = 12u;
6243 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6244 fontDescriptionRun02.familyLength = fontHebrew.size();
6245 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6246 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6247 fontDescriptionRun02.familyDefined = true;
6248 fontDescriptionRun02.weightDefined = false;
6249 fontDescriptionRun02.widthDefined = false;
6250 fontDescriptionRun02.slantDefined = false;
6251 fontDescriptionRun02.sizeDefined = false;
6253 FontDescriptionRun fontDescriptionRun03;
6254 fontDescriptionRun03.characterRun.characterIndex = 22u;
6255 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6256 fontDescriptionRun03.familyLength = fontArabic.size();
6257 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6258 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6259 fontDescriptionRun03.familyDefined = true;
6260 fontDescriptionRun03.weightDefined = false;
6261 fontDescriptionRun03.widthDefined = false;
6262 fontDescriptionRun03.slantDefined = false;
6263 fontDescriptionRun03.sizeDefined = false;
6265 FontDescriptionRun fontDescriptionRun04;
6266 fontDescriptionRun04.characterRun.characterIndex = 36u;
6267 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6268 fontDescriptionRun04.familyLength = fontLatin.size();
6269 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6270 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6271 fontDescriptionRun04.familyDefined = true;
6272 fontDescriptionRun04.weightDefined = false;
6273 fontDescriptionRun04.widthDefined = false;
6274 fontDescriptionRun04.slantDefined = false;
6275 fontDescriptionRun04.sizeDefined = false;
6277 FontDescriptionRun fontDescriptionRun05;
6278 fontDescriptionRun05.characterRun.characterIndex = 48u;
6279 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6280 fontDescriptionRun05.familyLength = fontLatin.size();
6281 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6282 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6283 fontDescriptionRun05.familyDefined = true;
6284 fontDescriptionRun05.weightDefined = false;
6285 fontDescriptionRun05.widthDefined = false;
6286 fontDescriptionRun05.slantDefined = false;
6287 fontDescriptionRun05.sizeDefined = false;
6289 FontDescriptionRun fontDescriptionRun06;
6290 fontDescriptionRun06.characterRun.characterIndex = 60u;
6291 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6292 fontDescriptionRun06.familyLength = fontArabic.size();
6293 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6294 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6295 fontDescriptionRun06.familyDefined = true;
6296 fontDescriptionRun06.weightDefined = false;
6297 fontDescriptionRun06.widthDefined = false;
6298 fontDescriptionRun06.slantDefined = false;
6299 fontDescriptionRun06.sizeDefined = false;
6301 Vector<FontDescriptionRun> fontDescriptionRuns;
6302 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6303 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6304 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6305 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6306 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6307 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6309 float positions[] = {19.f, 30.f, 33.f, 0.f, 0.f, 0.f};
6311 Size textArea(100.f, 300.f);
6314 "End alignment for the last paragraph.",
6315 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6318 fontDescriptionRuns.Begin(),
6319 Text::HorizontalAlignment::END,
6320 Text::VerticalAlignment::TOP,
6325 Dali::LayoutDirection::LEFT_TO_RIGHT,
6328 if(!AlignTest(data))
6330 tet_result(TET_FAIL);
6333 tet_result(TET_PASS);
6337 int UtcDaliTextAlign12(void)
6339 ToolkitTestApplication application;
6340 tet_infoline(" UtcDaliTextAlign12");
6342 // Calculate text alignment.
6344 const std::string fontLatin("TizenSans");
6345 const std::string fontHebrew("TizenSansHebrew");
6346 const std::string fontArabic("TizenSansArabic");
6348 // Set a known font description
6349 FontDescriptionRun fontDescriptionRun01;
6350 fontDescriptionRun01.characterRun.characterIndex = 0u;
6351 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6352 fontDescriptionRun01.familyLength = fontLatin.size();
6353 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6354 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6355 fontDescriptionRun01.familyDefined = true;
6356 fontDescriptionRun01.weightDefined = false;
6357 fontDescriptionRun01.widthDefined = false;
6358 fontDescriptionRun01.slantDefined = false;
6359 fontDescriptionRun01.sizeDefined = false;
6361 FontDescriptionRun fontDescriptionRun02;
6362 fontDescriptionRun02.characterRun.characterIndex = 12u;
6363 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6364 fontDescriptionRun02.familyLength = fontHebrew.size();
6365 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6366 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6367 fontDescriptionRun02.familyDefined = true;
6368 fontDescriptionRun02.weightDefined = false;
6369 fontDescriptionRun02.widthDefined = false;
6370 fontDescriptionRun02.slantDefined = false;
6371 fontDescriptionRun02.sizeDefined = false;
6373 FontDescriptionRun fontDescriptionRun03;
6374 fontDescriptionRun03.characterRun.characterIndex = 22u;
6375 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6376 fontDescriptionRun03.familyLength = fontArabic.size();
6377 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6378 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6379 fontDescriptionRun03.familyDefined = true;
6380 fontDescriptionRun03.weightDefined = false;
6381 fontDescriptionRun03.widthDefined = false;
6382 fontDescriptionRun03.slantDefined = false;
6383 fontDescriptionRun03.sizeDefined = false;
6385 FontDescriptionRun fontDescriptionRun04;
6386 fontDescriptionRun04.characterRun.characterIndex = 36u;
6387 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6388 fontDescriptionRun04.familyLength = fontLatin.size();
6389 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6390 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6391 fontDescriptionRun04.familyDefined = true;
6392 fontDescriptionRun04.weightDefined = false;
6393 fontDescriptionRun04.widthDefined = false;
6394 fontDescriptionRun04.slantDefined = false;
6395 fontDescriptionRun04.sizeDefined = false;
6397 FontDescriptionRun fontDescriptionRun05;
6398 fontDescriptionRun05.characterRun.characterIndex = 48u;
6399 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6400 fontDescriptionRun05.familyLength = fontLatin.size();
6401 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6402 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6403 fontDescriptionRun05.familyDefined = true;
6404 fontDescriptionRun05.weightDefined = false;
6405 fontDescriptionRun05.widthDefined = false;
6406 fontDescriptionRun05.slantDefined = false;
6407 fontDescriptionRun05.sizeDefined = false;
6409 FontDescriptionRun fontDescriptionRun06;
6410 fontDescriptionRun06.characterRun.characterIndex = 60u;
6411 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6412 fontDescriptionRun06.familyLength = fontArabic.size();
6413 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6414 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6415 fontDescriptionRun06.familyDefined = true;
6416 fontDescriptionRun06.weightDefined = false;
6417 fontDescriptionRun06.widthDefined = false;
6418 fontDescriptionRun06.slantDefined = false;
6419 fontDescriptionRun06.sizeDefined = false;
6421 Vector<FontDescriptionRun> fontDescriptionRuns;
6422 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6423 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6424 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6425 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6426 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6427 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6429 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6431 Size textArea(100.f, 300.f);
6434 "Begin alignment for the first paragraph.",
6435 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6438 fontDescriptionRuns.Begin(),
6439 Text::HorizontalAlignment::BEGIN,
6440 Text::VerticalAlignment::TOP,
6445 Dali::LayoutDirection::LEFT_TO_RIGHT,
6448 if(!AlignTest(data))
6450 tet_result(TET_FAIL);
6453 tet_result(TET_PASS);
6457 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
6459 ToolkitTestApplication application;
6460 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
6462 Layout::Engine engine;
6463 DALI_TEST_EQUALS(0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6465 engine.SetDefaultLineSpacing(10.f);
6466 DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6468 tet_result(TET_PASS);
6472 int UtcDaliTextLayoutGetGlyphMetrics(void)
6474 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
6476 // Test retrieving metrics from group of characters
6478 const std::string fontFamily("TizenSansHindi");
6480 // Set a known font description
6481 FontDescriptionRun fontDescriptionRun01;
6482 fontDescriptionRun01.characterRun.characterIndex = 0u;
6483 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
6484 fontDescriptionRun01.familyLength = fontFamily.size();
6485 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6486 memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
6487 fontDescriptionRun01.familyDefined = true;
6488 fontDescriptionRun01.weightDefined = false;
6489 fontDescriptionRun01.widthDefined = false;
6490 fontDescriptionRun01.slantDefined = false;
6491 fontDescriptionRun01.sizeDefined = false;
6493 // Set a known font description
6494 FontDescriptionRun fontDescriptionRun02;
6495 fontDescriptionRun02.characterRun.characterIndex = 0u;
6496 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
6497 fontDescriptionRun02.familyLength = fontFamily.size();
6498 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6499 memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
6500 fontDescriptionRun02.familyDefined = true;
6501 fontDescriptionRun02.weightDefined = false;
6502 fontDescriptionRun02.widthDefined = false;
6503 fontDescriptionRun02.slantDefined = false;
6504 fontDescriptionRun02.sizeDefined = false;
6506 // Set a known font description
6507 FontDescriptionRun fontDescriptionRun03;
6508 fontDescriptionRun03.characterRun.characterIndex = 0u;
6509 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
6510 fontDescriptionRun03.familyLength = fontFamily.size();
6511 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6512 memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
6513 fontDescriptionRun03.familyDefined = true;
6514 fontDescriptionRun03.weightDefined = false;
6515 fontDescriptionRun03.widthDefined = false;
6516 fontDescriptionRun03.slantDefined = false;
6517 fontDescriptionRun03.sizeDefined = false;
6519 Vector<FontDescriptionRun> fontDescriptionRuns01;
6520 fontDescriptionRuns01.PushBack(fontDescriptionRun01);
6522 Vector<FontDescriptionRun> fontDescriptionRuns02;
6523 fontDescriptionRuns02.PushBack(fontDescriptionRun02);
6525 Vector<FontDescriptionRun> fontDescriptionRuns03;
6526 fontDescriptionRuns03.PushBack(fontDescriptionRun03);
6529 Size textArea(100.f, 100.f);
6531 // Group: second glyph doesn't exceed the width of the first glyph
6532 float positions01[] = {0.f, -11.f};
6534 struct LineRun line01 =
6546 Vector<LineRun> lines01;
6547 lines01.PushBack(line01);
6549 Size layoutSize01 = Vector2(11.f, 20.f);
6551 // Group: second glyph doesn't exceed the width of the first glyph
6552 float positions02[] = {
6559 struct LineRun line02 =
6571 Vector<LineRun> lines02;
6572 lines02.PushBack(line02);
6574 Size layoutSize02 = Vector2(16.f, 20.f);
6576 // Group: second glyph doesn't exceed the width of the first glyph
6577 float positions03[] = {0.f, -11.f, 2.f, -15.f};
6579 struct LineRun line03 =
6591 Vector<LineRun> lines03;
6592 lines03.PushBack(line03);
6594 Size layoutSize03 = Vector2(11.f, 20.f);
6596 /////////////////////////////
6598 struct LayoutTextData data[] =
6604 fontDescriptionRuns01.Begin(),
6610 Layout::Engine::SINGLE_LINE_BOX,
6614 DevelText::EllipsisPosition::END,
6616 {"Group: second glyph exceeds the width of the first glyph",
6620 fontDescriptionRuns02.Begin(),
6626 Layout::Engine::SINGLE_LINE_BOX,
6630 DevelText::EllipsisPosition::END,
6632 {"Group: second glyph doesn't exceed the width of the first glyph",
6636 fontDescriptionRuns03.Begin(),
6642 Layout::Engine::SINGLE_LINE_BOX,
6646 DevelText::EllipsisPosition::END,
6648 const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData);
6650 for(unsigned int index = 0u; index < numberOfTests; ++index)
6652 ToolkitTestApplication application;
6653 if(!LayoutTextTest(data[index]))
6655 tet_result(TET_FAIL);
6659 tet_result(TET_PASS);