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 const bool updated = engine.LayoutText(layoutParameters,
188 data.ellipsisPosition);
190 // 4) Compare the results.
192 if(updated != data.updated)
194 std::cout << " Different updated bool : " << updated << ", expected : " << data.updated << std::endl;
198 if(layoutSize != data.layoutSize)
200 std::cout << " Different layout size : " << layoutSize << ", expected : " << data.layoutSize << std::endl;
204 for(unsigned int index = 0u; index < data.totalNumberOfGlyphs; ++index)
206 const Vector2& position = *(glyphPositions.Begin() + index);
208 if(fabsf(std::round(position.x) - *(data.positions + 2u * index)) > Math::MACHINE_EPSILON_1000)
210 std::cout << " Different position for glyph " << index << " x : " << position.x << ", expected : " << *(data.positions + 2u * index) << std::endl;
213 if(fabsf(position.y - *(data.positions + 2u * index + 1u)) > Math::MACHINE_EPSILON_1000)
215 std::cout << " Different position for glyph " << index << " y : " << position.y << ", expected : " << *(data.positions + 2u * index + 1u) << std::endl;
220 if(lines.Count() != data.numberOfLines)
222 std::cout << " Different number of lines : " << lines.Count() << ", expected : " << data.numberOfLines << std::endl;
226 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
228 const LineRun& line = *(lines.Begin() + index);
229 const LineRun& expectedLine = *(data.lines + index);
231 if(line.glyphRun.glyphIndex != expectedLine.glyphRun.glyphIndex)
233 std::cout << " Different line info for line : " << index << std::endl;
235 std::cout << " expected" << std::endl;
239 if(line.glyphRun.numberOfGlyphs != expectedLine.glyphRun.numberOfGlyphs)
241 std::cout << " Different line info for line : " << index << std::endl;
243 std::cout << " expected" << std::endl;
248 if(line.characterRun.characterIndex != expectedLine.characterRun.characterIndex)
250 std::cout << " Different line info for line : " << index << std::endl;
252 std::cout << " expected" << std::endl;
256 if(line.characterRun.numberOfCharacters != expectedLine.characterRun.numberOfCharacters)
258 std::cout << " Different line info for line : " << index << std::endl;
260 std::cout << " expected" << std::endl;
265 if(fabsf(floor(line.width) - expectedLine.width) > Math::MACHINE_EPSILON_1)
267 std::cout << " Different line info for line : " << index << std::endl;
269 std::cout << " expected" << std::endl;
274 if(fabsf(line.ascender - expectedLine.ascender) > Math::MACHINE_EPSILON_1)
276 std::cout << " Different line info for line : " << index << std::endl;
278 std::cout << " expected" << std::endl;
283 if(fabsf(line.descender - expectedLine.descender) > Math::MACHINE_EPSILON_1)
285 std::cout << " Different line info for line : " << index << std::endl;
287 std::cout << " expected" << std::endl;
292 if(fabsf(line.extraLength - expectedLine.extraLength) > Math::MACHINE_EPSILON_1)
294 std::cout << " Different line info for line : " << index << std::endl;
296 std::cout << " expected" << std::endl;
301 if(line.ellipsis != expectedLine.ellipsis)
303 std::cout << " Different line info for line : " << index << std::endl;
305 std::cout << " expected" << std::endl;
310 // Do not compare the alignment offset as it's not calculated in the layout.
311 // Do not compare the line direction as it's not set in the layout.
317 //////////////////////////////////////////////////////////
321 std::string description;
324 unsigned int numberOfFonts;
325 FontDescriptionRun* fontDescriptions;
326 Text::HorizontalAlignment::Type horizontalAlignment;
327 Text::VerticalAlignment::Type verticalAlignment;
328 unsigned int startIndex;
329 unsigned int numberOfCharacters;
330 unsigned int numberOfLines;
332 Dali::LayoutDirection::Type layoutDirection;
333 bool matchSystemLanguageDirection;
336 bool AlignTest(const AlignData& data)
339 TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
340 fontClient.SetDpi(96u, 96u);
342 char* pathNamePtr = get_current_dir_name();
343 const std::string pathName(pathNamePtr);
346 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf");
347 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansHebrewRegular.ttf");
348 fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansArabicRegular.ttf");
350 // 1) Create the model.
355 Vector<FontDescriptionRun> fontDescriptionRuns;
356 if(0u != data.numberOfFonts)
358 fontDescriptionRuns.Insert(fontDescriptionRuns.End(),
359 data.fontDescriptions,
360 data.fontDescriptions + data.numberOfFonts);
363 LayoutOptions options;
364 options.align = false;
365 CreateTextModel(data.text,
375 Toolkit::DevelText::EllipsisPosition::END,
377 0.0f // characterSpacing
380 LogicalModelPtr logicalModel = textModel->mLogicalModel;
381 VisualModelPtr visualModel = textModel->mVisualModel;
383 // Call the Align method.
384 Layout::Engine engine;
385 engine.SetMetrics(metrics);
387 float alignmentOffset = 0.f;
388 engine.Align(data.textArea,
390 data.numberOfCharacters,
391 data.horizontalAlignment,
394 data.layoutDirection,
395 data.matchSystemLanguageDirection);
398 if(data.numberOfLines != visualModel->mLines.Count())
400 std::cout << " Different number of lines : " << visualModel->mLines.Count() << ", expected : " << data.numberOfLines << std::endl;
404 const LineRun* const linesBuffer = visualModel->mLines.Begin();
405 for(unsigned int index = 0u; index < data.numberOfLines; ++index)
407 const LineRun& line = *(linesBuffer + index);
409 if(line.alignmentOffset != *(data.lineOffsets + index))
411 std::cout << " different line offset for index " << index << " : " << line.alignmentOffset << ", expected : " << *(data.lineOffsets + index) << std::endl;
420 //////////////////////////////////////////////////////////
422 // UtcDaliTextLayoutSetGetLayout
423 // UtcDaliTextLayoutSetGetTextEllipsisEnabled
424 // UtcDaliTextLayoutSetGetHorizontalAlignment
425 // UtcDaliTextLayoutSetGetVerticalAlignment
426 // UtcDaliTextLayoutSetGetCursorWidth
427 // UtcDaliTextLayoutNoText
428 // UtcDaliTextLayoutSmallTextArea01
429 // UtcDaliTextLayoutSmallTextArea02
430 // UtcDaliTextLayoutMultilineText01
431 // UtcDaliTextLayoutMultilineText02
432 // UtcDaliTextLayoutMultilineText03
433 // UtcDaliTextLayoutMultilineText04
434 // UtcDaliTextLayoutMultilineText05
435 // UtcDaliTextLayoutMultilineText06
436 // UtcDaliTextUpdateLayout01
437 // UtcDaliTextUpdateLayout02
438 // UtcDaliTextUpdateLayout03
439 // UtcDaliTextLayoutEllipsis01
440 // UtcDaliTextLayoutEllipsis02
441 // UtcDaliTextLayoutEllipsis03
442 // UtcDaliTextLayoutEllipsis04
443 // UtcDaliTextLayoutEllipsis04
444 // UtcDaliTextReorderLayout01
445 // UtcDaliTextReorderLayout02
446 // UtcDaliTextReorderLayout03
447 // UtcDaliTextReorderLayout04
448 // UtcDaliTextAlign01
449 // UtcDaliTextAlign02
450 // UtcDaliTextAlign03
451 // UtcDaliTextAlign04
452 // UtcDaliTextAlign05
453 // UtcDaliTextAlign06
454 // UtcDaliTextAlign07
455 // UtcDaliTextAlign08
456 // UtcDaliTextAlign09
458 //////////////////////////////////////////////////////////
460 int UtcDaliTextLayoutSetGetLayout(void)
462 ToolkitTestApplication application;
463 tet_infoline(" UtcDaliTextLayoutSetGetLayout");
465 Layout::Engine engine;
467 DALI_TEST_CHECK(Layout::Engine::SINGLE_LINE_BOX == engine.GetLayout());
469 engine.SetLayout(Layout::Engine::MULTI_LINE_BOX);
470 DALI_TEST_CHECK(Layout::Engine::MULTI_LINE_BOX == engine.GetLayout());
472 tet_result(TET_PASS);
476 int UtcDaliTextLayoutSetGetCursorWidth(void)
478 ToolkitTestApplication application;
481 Layout::Engine engine;
483 DALI_TEST_EQUALS(0, engine.GetCursorWidth(), TEST_LOCATION);
485 engine.SetCursorWidth(2);
486 DALI_TEST_EQUALS(2, engine.GetCursorWidth(), TEST_LOCATION);
488 tet_result(TET_PASS);
492 int UtcDaliTextLayoutNoText(void)
494 ToolkitTestApplication application;
495 tet_infoline(" UtcDaliTextLayoutNoText");
497 Size textArea(100.f, 60.f);
498 Size layoutSize = Vector2::ZERO;
499 LayoutTextData data =
511 Layout::Engine::MULTI_LINE_BOX,
515 DevelText::EllipsisPosition::END,
518 if(!LayoutTextTest(data))
520 tet_result(TET_FAIL);
523 tet_result(TET_PASS);
527 int UtcDaliTextLayoutSmallTextArea01(void)
529 ToolkitTestApplication application;
530 tet_infoline(" UtcDaliTextLayoutSmallTextArea01");
532 // Won't layout the text in multi-line if the width is too small.
534 const std::string fontFamily("TizenSans");
536 // Set a known font description
537 FontDescriptionRun fontDescriptionRun;
538 fontDescriptionRun.characterRun.characterIndex = 0u;
539 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
540 fontDescriptionRun.familyLength = fontFamily.size();
541 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
542 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
543 fontDescriptionRun.familyDefined = true;
544 fontDescriptionRun.weightDefined = false;
545 fontDescriptionRun.widthDefined = false;
546 fontDescriptionRun.slantDefined = false;
547 fontDescriptionRun.sizeDefined = false;
549 Vector<FontDescriptionRun> fontDescriptionRuns;
550 fontDescriptionRuns.PushBack(fontDescriptionRun);
551 Size textArea(1.f, 1.f);
552 Size layoutSize = Vector2::ZERO;
553 LayoutTextData data =
555 "Layout text in a small area",
559 fontDescriptionRuns.Begin(),
565 Layout::Engine::MULTI_LINE_BOX,
569 DevelText::EllipsisPosition::END,
572 if(!LayoutTextTest(data))
574 tet_result(TET_FAIL);
577 tet_result(TET_PASS);
581 int UtcDaliTextLayoutSmallTextArea02(void)
583 ToolkitTestApplication application;
584 tet_infoline(" UtcDaliTextLayoutSmallTextArea02");
586 // Will layout the text in single line as it can be scrolled.
588 const std::string fontFamily("TizenSans");
590 // Set a known font description
591 FontDescriptionRun fontDescriptionRun;
592 fontDescriptionRun.characterRun.characterIndex = 0u;
593 fontDescriptionRun.characterRun.numberOfCharacters = 11u;
594 fontDescriptionRun.familyLength = fontFamily.size();
595 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
596 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
597 fontDescriptionRun.familyDefined = true;
598 fontDescriptionRun.weightDefined = false;
599 fontDescriptionRun.widthDefined = false;
600 fontDescriptionRun.slantDefined = false;
601 fontDescriptionRun.sizeDefined = false;
603 Vector<FontDescriptionRun> fontDescriptionRuns;
604 fontDescriptionRuns.PushBack(fontDescriptionRun);
605 Size textArea(1.f, 1.f);
606 Size layoutSize(81.f, 20.f);
607 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};
608 struct LineRun line =
620 Vector<LineRun> lines;
621 lines.PushBack(line);
623 LayoutTextData data =
625 "Layout text in a small area",
629 fontDescriptionRuns.Begin(),
635 Layout::Engine::SINGLE_LINE_BOX,
639 DevelText::EllipsisPosition::END,
642 if(!LayoutTextTest(data))
644 tet_result(TET_FAIL);
647 tet_result(TET_PASS);
651 int UtcDaliTextLayoutMultilineText01(void)
653 ToolkitTestApplication application;
654 tet_infoline(" UtcDaliTextLayoutMultilineText01");
656 // Layout some lines of left to right text.
658 const std::string fontFamily("TizenSans");
660 // Set a known font description
661 FontDescriptionRun fontDescriptionRun1;
662 fontDescriptionRun1.characterRun.characterIndex = 0u;
663 fontDescriptionRun1.characterRun.numberOfCharacters = 18u;
664 fontDescriptionRun1.familyLength = fontFamily.size();
665 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
666 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
667 fontDescriptionRun1.familyDefined = true;
668 fontDescriptionRun1.weightDefined = false;
669 fontDescriptionRun1.widthDefined = false;
670 fontDescriptionRun1.slantDefined = false;
671 fontDescriptionRun1.sizeDefined = false;
673 FontDescriptionRun fontDescriptionRun2;
674 fontDescriptionRun2.characterRun.characterIndex = 18u;
675 fontDescriptionRun2.characterRun.numberOfCharacters = 31u;
676 fontDescriptionRun2.familyLength = fontFamily.size();
677 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
678 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
679 fontDescriptionRun2.familyDefined = true;
680 fontDescriptionRun2.weightDefined = false;
681 fontDescriptionRun2.widthDefined = false;
682 fontDescriptionRun2.slantDefined = false;
683 fontDescriptionRun2.sizeDefined = false;
685 Vector<FontDescriptionRun> fontDescriptionRuns;
686 fontDescriptionRuns.PushBack(fontDescriptionRun1);
687 fontDescriptionRuns.PushBack(fontDescriptionRun2);
688 Size textArea(100.f, 300.f);
689 Size layoutSize(98.f, 97.f);
692 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};
693 struct LineRun line0 =
705 struct LineRun line1 =
717 struct LineRun line2 =
729 struct LineRun line3 =
741 struct LineRun line4 =
753 Vector<LineRun> lines;
754 lines.PushBack(line0);
755 lines.PushBack(line1);
756 lines.PushBack(line2);
757 lines.PushBack(line3);
758 lines.PushBack(line4);
760 LayoutTextData data =
762 "Layout simple multi-line text",
763 "Hello world demo.\n"
764 "Layout different lines of text.",
767 fontDescriptionRuns.Begin(),
773 Layout::Engine::MULTI_LINE_BOX,
777 DevelText::EllipsisPosition::END,
780 if(!LayoutTextTest(data))
782 tet_result(TET_FAIL);
785 tet_result(TET_PASS);
789 int UtcDaliTextLayoutMultilineText02(void)
791 ToolkitTestApplication application;
792 tet_infoline(" UtcDaliTextLayoutMultilineText02");
794 // Layout some lines of bidirectional text.
796 const std::string fontFamily1("TizenSans");
798 // Set a known font description
799 FontDescriptionRun fontDescriptionRun1;
800 fontDescriptionRun1.characterRun.characterIndex = 0u;
801 fontDescriptionRun1.characterRun.numberOfCharacters = 17u;
802 fontDescriptionRun1.familyLength = fontFamily1.size();
803 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
804 memcpy(fontDescriptionRun1.familyName, fontFamily1.c_str(), fontDescriptionRun1.familyLength);
805 fontDescriptionRun1.familyDefined = true;
806 fontDescriptionRun1.weightDefined = false;
807 fontDescriptionRun1.widthDefined = false;
808 fontDescriptionRun1.slantDefined = false;
809 fontDescriptionRun1.sizeDefined = false;
811 const std::string fontFamily2("TizenSansHebrew");
813 // Set a known font description
814 FontDescriptionRun fontDescriptionRun2;
815 fontDescriptionRun2.characterRun.characterIndex = 17u;
816 fontDescriptionRun2.characterRun.numberOfCharacters = 9u;
817 fontDescriptionRun2.familyLength = fontFamily2.size();
818 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
819 memcpy(fontDescriptionRun2.familyName, fontFamily2.c_str(), fontDescriptionRun2.familyLength);
820 fontDescriptionRun2.familyDefined = true;
821 fontDescriptionRun2.weightDefined = false;
822 fontDescriptionRun2.widthDefined = false;
823 fontDescriptionRun2.slantDefined = false;
824 fontDescriptionRun2.sizeDefined = false;
826 const std::string fontFamily3("TizenSans");
828 // Set a known font description
829 FontDescriptionRun fontDescriptionRun3;
830 fontDescriptionRun3.characterRun.characterIndex = 26u;
831 fontDescriptionRun3.characterRun.numberOfCharacters = 2u;
832 fontDescriptionRun3.familyLength = fontFamily3.size();
833 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
834 memcpy(fontDescriptionRun3.familyName, fontFamily3.c_str(), fontDescriptionRun3.familyLength);
835 fontDescriptionRun3.familyDefined = true;
836 fontDescriptionRun3.weightDefined = false;
837 fontDescriptionRun3.widthDefined = false;
838 fontDescriptionRun3.slantDefined = false;
839 fontDescriptionRun3.sizeDefined = false;
841 const std::string fontFamily4("TizenSansHebrew");
843 // Set a known font description
844 FontDescriptionRun fontDescriptionRun4;
845 fontDescriptionRun4.characterRun.characterIndex = 28u;
846 fontDescriptionRun4.characterRun.numberOfCharacters = 10u;
847 fontDescriptionRun4.familyLength = fontFamily4.size();
848 fontDescriptionRun4.familyName = new char[fontDescriptionRun4.familyLength];
849 memcpy(fontDescriptionRun4.familyName, fontFamily4.c_str(), fontDescriptionRun4.familyLength);
850 fontDescriptionRun4.familyDefined = true;
851 fontDescriptionRun4.weightDefined = false;
852 fontDescriptionRun4.widthDefined = false;
853 fontDescriptionRun4.slantDefined = false;
854 fontDescriptionRun4.sizeDefined = false;
856 const std::string fontFamily5("TizenSans");
858 // Set a known font description
859 FontDescriptionRun fontDescriptionRun5;
860 fontDescriptionRun5.characterRun.characterIndex = 38u;
861 fontDescriptionRun5.characterRun.numberOfCharacters = 17u;
862 fontDescriptionRun5.familyLength = fontFamily5.size();
863 fontDescriptionRun5.familyName = new char[fontDescriptionRun5.familyLength];
864 memcpy(fontDescriptionRun5.familyName, fontFamily5.c_str(), fontDescriptionRun5.familyLength);
865 fontDescriptionRun5.familyDefined = true;
866 fontDescriptionRun5.weightDefined = false;
867 fontDescriptionRun5.widthDefined = false;
868 fontDescriptionRun5.slantDefined = false;
869 fontDescriptionRun5.sizeDefined = false;
871 Vector<FontDescriptionRun> fontDescriptionRuns;
872 fontDescriptionRuns.PushBack(fontDescriptionRun1);
873 fontDescriptionRuns.PushBack(fontDescriptionRun2);
874 fontDescriptionRuns.PushBack(fontDescriptionRun3);
875 fontDescriptionRuns.PushBack(fontDescriptionRun4);
876 fontDescriptionRuns.PushBack(fontDescriptionRun5);
877 Size textArea(100.f, 300.f);
878 Size layoutSize(81.f, 120.f);
881 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
969 struct LineRun line0 =
981 struct LineRun line1 =
993 struct LineRun line2 =
1005 struct LineRun line3 =
1017 struct LineRun line4 =
1029 struct LineRun line5 =
1041 Vector<LineRun> lines;
1042 lines.PushBack(line0);
1043 lines.PushBack(line1);
1044 lines.PushBack(line2);
1045 lines.PushBack(line3);
1046 lines.PushBack(line4);
1047 lines.PushBack(line5);
1049 LayoutTextData data =
1051 "Layout bidirectional text.",
1052 "Hello world demo שלום עולם.\n"
1053 "שלום עולם hello world demo.",
1056 fontDescriptionRuns.Begin(),
1062 Layout::Engine::MULTI_LINE_BOX,
1066 DevelText::EllipsisPosition::END,
1069 if(!LayoutTextTest(data))
1071 tet_result(TET_FAIL);
1074 tet_result(TET_PASS);
1078 int UtcDaliTextLayoutMultilineText03(void)
1080 ToolkitTestApplication application;
1081 tet_infoline(" UtcDaliTextLayoutMultilineText03");
1083 // Layout a long word which doesn't fit in the width of the text area.
1085 const std::string fontFamily("TizenSans");
1087 // Set a known font description
1088 FontDescriptionRun fontDescriptionRun;
1089 fontDescriptionRun.characterRun.characterIndex = 0u;
1090 fontDescriptionRun.characterRun.numberOfCharacters = 29u;
1091 fontDescriptionRun.familyLength = fontFamily.size();
1092 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1093 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1094 fontDescriptionRun.familyDefined = true;
1095 fontDescriptionRun.weightDefined = false;
1096 fontDescriptionRun.widthDefined = false;
1097 fontDescriptionRun.slantDefined = false;
1098 fontDescriptionRun.sizeDefined = false;
1100 Vector<FontDescriptionRun> fontDescriptionRuns;
1101 fontDescriptionRuns.PushBack(fontDescriptionRun);
1102 Size textArea(100.f, 300.f);
1103 Size layoutSize(98.f, 60.f);
1165 struct LineRun line0 =
1177 struct LineRun line1 =
1189 struct LineRun line2 =
1201 Vector<LineRun> lines;
1202 lines.PushBack(line0);
1203 lines.PushBack(line1);
1204 lines.PushBack(line2);
1206 LayoutTextData data =
1208 "Layout a long word which doesn't fit in the width of the text area.",
1209 "Helloworlddemohelloworlddemo.",
1212 fontDescriptionRuns.Begin(),
1218 Layout::Engine::MULTI_LINE_BOX,
1222 DevelText::EllipsisPosition::END,
1225 if(!LayoutTextTest(data))
1227 tet_result(TET_FAIL);
1230 tet_result(TET_PASS);
1234 int UtcDaliTextLayoutMultilineText04(void)
1236 ToolkitTestApplication application;
1237 tet_infoline(" UtcDaliTextLayoutMultilineText04");
1239 // Layout simple text ending with a \n. It has to add a void line at the end.
1241 const std::string fontFamily("TizenSans");
1243 // Set a known font description
1244 FontDescriptionRun fontDescriptionRun;
1245 fontDescriptionRun.characterRun.characterIndex = 0u;
1246 fontDescriptionRun.characterRun.numberOfCharacters = 13u;
1247 fontDescriptionRun.familyLength = fontFamily.size();
1248 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1249 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1250 fontDescriptionRun.familyDefined = true;
1251 fontDescriptionRun.weightDefined = false;
1252 fontDescriptionRun.widthDefined = false;
1253 fontDescriptionRun.slantDefined = false;
1254 fontDescriptionRun.sizeDefined = false;
1256 Vector<FontDescriptionRun> fontDescriptionRuns;
1257 fontDescriptionRuns.PushBack(fontDescriptionRun);
1258 Size textArea(100.f, 300.f);
1259 Size layoutSize(84.f, 40.f);
1262 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};
1263 struct LineRun line0 =
1274 struct LineRun line1 =
1286 Vector<LineRun> lines;
1287 lines.PushBack(line0);
1288 lines.PushBack(line1);
1290 LayoutTextData data =
1292 "Layout simple text ending with a \n.",
1296 fontDescriptionRuns.Begin(),
1302 Layout::Engine::MULTI_LINE_BOX,
1306 DevelText::EllipsisPosition::END,
1309 if(!LayoutTextTest(data))
1311 tet_result(TET_FAIL);
1314 tet_result(TET_PASS);
1318 int UtcDaliTextLayoutMultilineText05(void)
1320 ToolkitTestApplication application;
1321 tet_infoline(" UtcDaliTextLayoutMultilineText05");
1323 // Layout simple text with one character with a different font size.
1325 const std::string fontFamily("TizenSans");
1327 // Set a known font description
1328 FontDescriptionRun fontDescriptionRun1;
1329 fontDescriptionRun1.characterRun.characterIndex = 0u;
1330 fontDescriptionRun1.characterRun.numberOfCharacters = 6u;
1331 fontDescriptionRun1.familyLength = fontFamily.size();
1332 fontDescriptionRun1.familyName = new char[fontDescriptionRun1.familyLength];
1333 memcpy(fontDescriptionRun1.familyName, fontFamily.c_str(), fontDescriptionRun1.familyLength);
1334 fontDescriptionRun1.familyDefined = true;
1335 fontDescriptionRun1.weightDefined = false;
1336 fontDescriptionRun1.widthDefined = false;
1337 fontDescriptionRun1.slantDefined = false;
1338 fontDescriptionRun1.sizeDefined = false;
1340 FontDescriptionRun fontDescriptionRun2;
1341 fontDescriptionRun2.characterRun.characterIndex = 6u;
1342 fontDescriptionRun2.characterRun.numberOfCharacters = 1u;
1343 fontDescriptionRun2.familyLength = fontFamily.size();
1344 fontDescriptionRun2.familyName = new char[fontDescriptionRun2.familyLength];
1345 memcpy(fontDescriptionRun2.familyName, fontFamily.c_str(), fontDescriptionRun2.familyLength);
1346 fontDescriptionRun2.size = 1280u;
1347 fontDescriptionRun2.familyDefined = true;
1348 fontDescriptionRun2.weightDefined = false;
1349 fontDescriptionRun2.widthDefined = false;
1350 fontDescriptionRun2.slantDefined = false;
1351 fontDescriptionRun2.sizeDefined = true;
1353 FontDescriptionRun fontDescriptionRun3;
1354 fontDescriptionRun3.characterRun.characterIndex = 7u;
1355 fontDescriptionRun3.characterRun.numberOfCharacters = 10u;
1356 fontDescriptionRun3.familyLength = fontFamily.size();
1357 fontDescriptionRun3.familyName = new char[fontDescriptionRun3.familyLength];
1358 memcpy(fontDescriptionRun3.familyName, fontFamily.c_str(), fontDescriptionRun3.familyLength);
1359 fontDescriptionRun3.familyDefined = true;
1360 fontDescriptionRun3.weightDefined = false;
1361 fontDescriptionRun3.widthDefined = false;
1362 fontDescriptionRun3.slantDefined = false;
1363 fontDescriptionRun3.sizeDefined = false;
1365 Vector<FontDescriptionRun> fontDescriptionRuns;
1366 fontDescriptionRuns.PushBack(fontDescriptionRun1);
1367 fontDescriptionRuns.PushBack(fontDescriptionRun2);
1368 fontDescriptionRuns.PushBack(fontDescriptionRun3);
1369 Size textArea(100.f, 300.f);
1370 Size layoutSize(89.f, 53.f);
1373 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};
1374 struct LineRun line0 =
1386 struct LineRun line1 =
1398 Vector<LineRun> lines;
1399 lines.PushBack(line0);
1400 lines.PushBack(line1);
1402 LayoutTextData data =
1404 "Layout simple text with one character with a different font size.",
1405 "Hello world demo.",
1408 fontDescriptionRuns.Begin(),
1414 Layout::Engine::MULTI_LINE_BOX,
1418 DevelText::EllipsisPosition::END,
1421 if(!LayoutTextTest(data))
1423 tet_result(TET_FAIL);
1426 tet_result(TET_PASS);
1430 int UtcDaliTextLayoutMultilineText06(void)
1432 ToolkitTestApplication application;
1433 tet_infoline(" UtcDaliTextLayoutMultilineText06");
1435 const std::string fontFamily("TizenSansHebrew");
1437 // Set a known font description
1438 FontDescriptionRun fontDescriptionRun;
1439 fontDescriptionRun.characterRun.characterIndex = 0u;
1440 fontDescriptionRun.characterRun.numberOfCharacters = 10u;
1441 fontDescriptionRun.familyLength = fontFamily.size();
1442 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1443 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1444 fontDescriptionRun.familyDefined = true;
1445 fontDescriptionRun.weightDefined = false;
1446 fontDescriptionRun.widthDefined = false;
1447 fontDescriptionRun.slantDefined = false;
1448 fontDescriptionRun.sizeDefined = false;
1450 Vector<FontDescriptionRun> fontDescriptionRuns;
1451 fontDescriptionRuns.PushBack(fontDescriptionRun);
1453 Size textArea(64.f, 100.f);
1454 Size layoutSize(34.f, 40.f);
1457 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};
1458 struct LineRun line0 =
1470 struct LineRun line1 =
1482 Vector<LineRun> lines;
1483 lines.PushBack(line0);
1484 lines.PushBack(line1);
1486 LayoutTextData data =
1488 "Layout right to left text that doesn't fit in the text area after reordering.",
1489 "לכאן שנורו", // If this text is laid-out ltr the width is 64. When reordered, the length is 66. This might cause alignment issues.
1492 fontDescriptionRuns.Begin(),
1498 Layout::Engine::MULTI_LINE_BOX,
1502 DevelText::EllipsisPosition::END,
1505 if(!LayoutTextTest(data))
1507 tet_result(TET_FAIL);
1510 tet_result(TET_PASS);
1514 int UtcDaliTextLayoutMultilineText07(void)
1516 ToolkitTestApplication application;
1517 tet_infoline(" UtcDaliTextLayoutMultilineText07");
1519 const std::string fontFamily("TizenSansHebrew");
1521 // Set a known font description
1522 FontDescriptionRun fontDescriptionRun;
1523 fontDescriptionRun.characterRun.characterIndex = 0u;
1524 fontDescriptionRun.characterRun.numberOfCharacters = 9u;
1525 fontDescriptionRun.familyLength = fontFamily.size();
1526 fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
1527 memcpy(fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength);
1528 fontDescriptionRun.familyDefined = true;
1529 fontDescriptionRun.weightDefined = false;
1530 fontDescriptionRun.widthDefined = false;
1531 fontDescriptionRun.slantDefined = false;
1532 fontDescriptionRun.sizeDefined = false;
1534 Vector<FontDescriptionRun> fontDescriptionRuns;
1535 fontDescriptionRuns.PushBack(fontDescriptionRun);
1537 Size textArea(26.f, 100.f);
1538 Size layoutSize(24.f, 60.f);
1541 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};
1542 struct LineRun line0 =
1554 struct LineRun line1 =
1566 struct LineRun line2 =
1578 Vector<LineRun> lines;
1579 lines.PushBack(line0);
1580 lines.PushBack(line1);
1581 lines.PushBack(line2);
1583 LayoutTextData data =
1585 "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.",
1586 "שנורולכאן", // 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.
1589 fontDescriptionRuns.Begin(),
1595 Layout::Engine::MULTI_LINE_BOX,
1599 DevelText::EllipsisPosition::END,
1602 if(!LayoutTextTest(data))
1604 tet_result(TET_FAIL);
1607 tet_result(TET_PASS);
1611 int UtcDaliTextUpdateLayout01(void)
1613 ToolkitTestApplication application;
1614 tet_infoline(" UtcDaliTextUpdateLayout01");
1616 // Layout some lines of bidirectional text. Update the paragraphs at the beginning.
1618 const std::string fontLatin("TizenSans");
1619 const std::string fontHebrew("TizenSansHebrew");
1620 const std::string fontArabic("TizenSansArabic");
1622 // Set a known font description
1623 FontDescriptionRun fontDescriptionRun01;
1624 fontDescriptionRun01.characterRun.characterIndex = 0u;
1625 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
1626 fontDescriptionRun01.familyLength = fontLatin.size();
1627 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
1628 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
1629 fontDescriptionRun01.familyDefined = true;
1630 fontDescriptionRun01.weightDefined = false;
1631 fontDescriptionRun01.widthDefined = false;
1632 fontDescriptionRun01.slantDefined = false;
1633 fontDescriptionRun01.sizeDefined = false;
1635 // Set a known font description
1636 FontDescriptionRun fontDescriptionRun02;
1637 fontDescriptionRun02.characterRun.characterIndex = 17u;
1638 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
1639 fontDescriptionRun02.familyLength = fontHebrew.size();
1640 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
1641 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
1642 fontDescriptionRun02.familyDefined = true;
1643 fontDescriptionRun02.weightDefined = false;
1644 fontDescriptionRun02.widthDefined = false;
1645 fontDescriptionRun02.slantDefined = false;
1646 fontDescriptionRun02.sizeDefined = false;
1648 // Set a known font description
1649 FontDescriptionRun fontDescriptionRun03;
1650 fontDescriptionRun03.characterRun.characterIndex = 26u;
1651 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
1652 fontDescriptionRun03.familyLength = fontLatin.size();
1653 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
1654 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
1655 fontDescriptionRun03.familyDefined = true;
1656 fontDescriptionRun03.weightDefined = false;
1657 fontDescriptionRun03.widthDefined = false;
1658 fontDescriptionRun03.slantDefined = false;
1659 fontDescriptionRun03.sizeDefined = false;
1661 // Set a known font description
1662 FontDescriptionRun fontDescriptionRun04;
1663 fontDescriptionRun04.characterRun.characterIndex = 28u;
1664 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
1665 fontDescriptionRun04.familyLength = fontArabic.size();
1666 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
1667 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
1668 fontDescriptionRun04.familyDefined = true;
1669 fontDescriptionRun04.weightDefined = false;
1670 fontDescriptionRun04.widthDefined = false;
1671 fontDescriptionRun04.slantDefined = false;
1672 fontDescriptionRun04.sizeDefined = false;
1674 // Set a known font description
1675 FontDescriptionRun fontDescriptionRun05;
1676 fontDescriptionRun05.characterRun.characterIndex = 42u;
1677 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
1678 fontDescriptionRun05.familyLength = fontLatin.size();
1679 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
1680 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
1681 fontDescriptionRun05.familyDefined = true;
1682 fontDescriptionRun05.weightDefined = false;
1683 fontDescriptionRun05.widthDefined = false;
1684 fontDescriptionRun05.slantDefined = false;
1685 fontDescriptionRun05.sizeDefined = false;
1687 // Set a known font description
1688 FontDescriptionRun fontDescriptionRun06;
1689 fontDescriptionRun06.characterRun.characterIndex = 54u;
1690 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
1691 fontDescriptionRun06.familyLength = fontHebrew.size();
1692 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
1693 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
1694 fontDescriptionRun06.familyDefined = true;
1695 fontDescriptionRun06.weightDefined = false;
1696 fontDescriptionRun06.widthDefined = false;
1697 fontDescriptionRun06.slantDefined = false;
1698 fontDescriptionRun06.sizeDefined = false;
1700 // Set a known font description
1701 FontDescriptionRun fontDescriptionRun07;
1702 fontDescriptionRun07.characterRun.characterIndex = 64u;
1703 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
1704 fontDescriptionRun07.familyLength = fontHebrew.size();
1705 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
1706 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
1707 fontDescriptionRun07.familyDefined = true;
1708 fontDescriptionRun07.weightDefined = false;
1709 fontDescriptionRun07.widthDefined = false;
1710 fontDescriptionRun07.slantDefined = false;
1711 fontDescriptionRun07.sizeDefined = false;
1713 // Set a known font description
1714 FontDescriptionRun fontDescriptionRun08;
1715 fontDescriptionRun08.characterRun.characterIndex = 74u;
1716 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
1717 fontDescriptionRun08.familyLength = fontLatin.size();
1718 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
1719 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
1720 fontDescriptionRun08.familyDefined = true;
1721 fontDescriptionRun08.weightDefined = false;
1722 fontDescriptionRun08.widthDefined = false;
1723 fontDescriptionRun08.slantDefined = false;
1724 fontDescriptionRun08.sizeDefined = false;
1726 // Set a known font description
1727 FontDescriptionRun fontDescriptionRun09;
1728 fontDescriptionRun09.characterRun.characterIndex = 92u;
1729 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
1730 fontDescriptionRun09.familyLength = fontLatin.size();
1731 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
1732 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
1733 fontDescriptionRun09.familyDefined = true;
1734 fontDescriptionRun09.weightDefined = false;
1735 fontDescriptionRun09.widthDefined = false;
1736 fontDescriptionRun09.slantDefined = false;
1737 fontDescriptionRun09.sizeDefined = false;
1739 // Set a known font description
1740 FontDescriptionRun fontDescriptionRun10;
1741 fontDescriptionRun10.characterRun.characterIndex = 104u;
1742 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
1743 fontDescriptionRun10.familyLength = fontArabic.size();
1744 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
1745 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
1746 fontDescriptionRun10.familyDefined = true;
1747 fontDescriptionRun10.weightDefined = false;
1748 fontDescriptionRun10.widthDefined = false;
1749 fontDescriptionRun10.slantDefined = false;
1750 fontDescriptionRun10.sizeDefined = false;
1752 // Set a known font description
1753 FontDescriptionRun fontDescriptionRun11;
1754 fontDescriptionRun11.characterRun.characterIndex = 118u;
1755 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
1756 fontDescriptionRun11.familyLength = fontHebrew.size();
1757 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
1758 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
1759 fontDescriptionRun11.familyDefined = true;
1760 fontDescriptionRun11.weightDefined = false;
1761 fontDescriptionRun11.widthDefined = false;
1762 fontDescriptionRun11.slantDefined = false;
1763 fontDescriptionRun11.sizeDefined = false;
1765 // Set a known font description
1766 FontDescriptionRun fontDescriptionRun12;
1767 fontDescriptionRun12.characterRun.characterIndex = 128u;
1768 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
1769 fontDescriptionRun12.familyLength = fontLatin.size();
1770 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
1771 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
1772 fontDescriptionRun12.familyDefined = true;
1773 fontDescriptionRun12.weightDefined = false;
1774 fontDescriptionRun12.widthDefined = false;
1775 fontDescriptionRun12.slantDefined = false;
1776 fontDescriptionRun12.sizeDefined = false;
1778 // Set a known font description
1779 FontDescriptionRun fontDescriptionRun13;
1780 fontDescriptionRun13.characterRun.characterIndex = 145u;
1781 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
1782 fontDescriptionRun13.familyLength = fontHebrew.size();
1783 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
1784 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
1785 fontDescriptionRun13.familyDefined = true;
1786 fontDescriptionRun13.weightDefined = false;
1787 fontDescriptionRun13.widthDefined = false;
1788 fontDescriptionRun13.slantDefined = false;
1789 fontDescriptionRun13.sizeDefined = false;
1791 // Set a known font description
1792 FontDescriptionRun fontDescriptionRun14;
1793 fontDescriptionRun14.characterRun.characterIndex = 154u;
1794 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
1795 fontDescriptionRun14.familyLength = fontLatin.size();
1796 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
1797 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
1798 fontDescriptionRun14.familyDefined = true;
1799 fontDescriptionRun14.weightDefined = false;
1800 fontDescriptionRun14.widthDefined = false;
1801 fontDescriptionRun14.slantDefined = false;
1802 fontDescriptionRun14.sizeDefined = false;
1804 // Set a known font description
1805 FontDescriptionRun fontDescriptionRun15;
1806 fontDescriptionRun15.characterRun.characterIndex = 156u;
1807 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
1808 fontDescriptionRun15.familyLength = fontHebrew.size();
1809 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
1810 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
1811 fontDescriptionRun15.familyDefined = true;
1812 fontDescriptionRun15.weightDefined = false;
1813 fontDescriptionRun15.widthDefined = false;
1814 fontDescriptionRun15.slantDefined = false;
1815 fontDescriptionRun15.sizeDefined = false;
1817 // Set a known font description
1818 FontDescriptionRun fontDescriptionRun16;
1819 fontDescriptionRun16.characterRun.characterIndex = 166u;
1820 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
1821 fontDescriptionRun16.familyLength = fontLatin.size();
1822 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
1823 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
1824 fontDescriptionRun16.familyDefined = true;
1825 fontDescriptionRun16.weightDefined = false;
1826 fontDescriptionRun16.widthDefined = false;
1827 fontDescriptionRun16.slantDefined = false;
1828 fontDescriptionRun16.sizeDefined = false;
1830 // Set a known font description
1831 FontDescriptionRun fontDescriptionRun17;
1832 fontDescriptionRun17.characterRun.characterIndex = 178u;
1833 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
1834 fontDescriptionRun17.familyLength = fontArabic.size();
1835 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
1836 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
1837 fontDescriptionRun17.familyDefined = true;
1838 fontDescriptionRun17.weightDefined = false;
1839 fontDescriptionRun17.widthDefined = false;
1840 fontDescriptionRun17.slantDefined = false;
1841 fontDescriptionRun17.sizeDefined = false;
1843 Vector<FontDescriptionRun> fontDescriptionRuns;
1844 fontDescriptionRuns.PushBack(fontDescriptionRun01);
1845 fontDescriptionRuns.PushBack(fontDescriptionRun02);
1846 fontDescriptionRuns.PushBack(fontDescriptionRun03);
1847 fontDescriptionRuns.PushBack(fontDescriptionRun04);
1848 fontDescriptionRuns.PushBack(fontDescriptionRun05);
1849 fontDescriptionRuns.PushBack(fontDescriptionRun06);
1850 fontDescriptionRuns.PushBack(fontDescriptionRun07);
1851 fontDescriptionRuns.PushBack(fontDescriptionRun08);
1852 fontDescriptionRuns.PushBack(fontDescriptionRun09);
1853 fontDescriptionRuns.PushBack(fontDescriptionRun10);
1854 fontDescriptionRuns.PushBack(fontDescriptionRun11);
1855 fontDescriptionRuns.PushBack(fontDescriptionRun12);
1856 fontDescriptionRuns.PushBack(fontDescriptionRun13);
1857 fontDescriptionRuns.PushBack(fontDescriptionRun14);
1858 fontDescriptionRuns.PushBack(fontDescriptionRun15);
1859 fontDescriptionRuns.PushBack(fontDescriptionRun16);
1860 fontDescriptionRuns.PushBack(fontDescriptionRun17);
1861 Size textArea(100.f, 300.f);
1862 Size layoutSize(100.f, 380.f);
1865 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
2153 -12.f, // 150 .. 155
2228 struct LineRun line01 =
2240 struct LineRun line02 =
2252 struct LineRun line03 =
2264 struct LineRun line04 =
2276 struct LineRun line05 =
2288 struct LineRun line06 =
2300 struct LineRun line07 =
2312 struct LineRun line08 =
2324 struct LineRun line09 =
2336 struct LineRun line10 =
2348 struct LineRun line11 =
2360 struct LineRun line12 =
2372 struct LineRun line13 =
2384 struct LineRun line14 =
2396 struct LineRun line15 =
2408 struct LineRun line16 =
2420 struct LineRun line17 =
2432 struct LineRun line18 =
2444 struct LineRun line19 =
2456 Vector<LineRun> lines;
2457 lines.PushBack(line01);
2458 lines.PushBack(line02);
2459 lines.PushBack(line03);
2460 lines.PushBack(line04);
2461 lines.PushBack(line05);
2462 lines.PushBack(line06);
2463 lines.PushBack(line07);
2464 lines.PushBack(line08);
2465 lines.PushBack(line09);
2466 lines.PushBack(line10);
2467 lines.PushBack(line11);
2468 lines.PushBack(line12);
2469 lines.PushBack(line13);
2470 lines.PushBack(line14);
2471 lines.PushBack(line15);
2472 lines.PushBack(line16);
2473 lines.PushBack(line17);
2474 lines.PushBack(line18);
2475 lines.PushBack(line19);
2477 LayoutTextData data =
2479 "Layout bidirectional text.",
2480 "Hello world demo שלום עולם.\n"
2481 "مرحبا بالعالم hello world שלום עולם\n"
2482 "שלום עולם hello world demo.\n"
2483 "hello world مرحبا بالعالم שלום עולם\n"
2484 "Hello world demo שלום עולם.\n"
2485 "שלום עולם hello world مرحبا بالعالم\n",
2488 fontDescriptionRuns.Begin(),
2494 Layout::Engine::MULTI_LINE_BOX,
2498 DevelText::EllipsisPosition::END,
2501 if(!LayoutTextTest(data))
2503 tet_result(TET_FAIL);
2506 tet_result(TET_PASS);
2510 int UtcDaliTextUpdateLayout02(void)
2512 ToolkitTestApplication application;
2513 tet_infoline(" UtcDaliTextUpdateLayout02");
2515 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
2517 const std::string fontLatin("TizenSans");
2518 const std::string fontHebrew("TizenSansHebrew");
2519 const std::string fontArabic("TizenSansArabic");
2521 // Set a known font description
2522 FontDescriptionRun fontDescriptionRun01;
2523 fontDescriptionRun01.characterRun.characterIndex = 0u;
2524 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
2525 fontDescriptionRun01.familyLength = fontLatin.size();
2526 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
2527 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
2528 fontDescriptionRun01.familyDefined = true;
2529 fontDescriptionRun01.weightDefined = false;
2530 fontDescriptionRun01.widthDefined = false;
2531 fontDescriptionRun01.slantDefined = false;
2532 fontDescriptionRun01.sizeDefined = false;
2534 // Set a known font description
2535 FontDescriptionRun fontDescriptionRun02;
2536 fontDescriptionRun02.characterRun.characterIndex = 17u;
2537 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
2538 fontDescriptionRun02.familyLength = fontHebrew.size();
2539 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
2540 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
2541 fontDescriptionRun02.familyDefined = true;
2542 fontDescriptionRun02.weightDefined = false;
2543 fontDescriptionRun02.widthDefined = false;
2544 fontDescriptionRun02.slantDefined = false;
2545 fontDescriptionRun02.sizeDefined = false;
2547 // Set a known font description
2548 FontDescriptionRun fontDescriptionRun03;
2549 fontDescriptionRun03.characterRun.characterIndex = 26u;
2550 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
2551 fontDescriptionRun03.familyLength = fontLatin.size();
2552 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
2553 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
2554 fontDescriptionRun03.familyDefined = true;
2555 fontDescriptionRun03.weightDefined = false;
2556 fontDescriptionRun03.widthDefined = false;
2557 fontDescriptionRun03.slantDefined = false;
2558 fontDescriptionRun03.sizeDefined = false;
2560 // Set a known font description
2561 FontDescriptionRun fontDescriptionRun04;
2562 fontDescriptionRun04.characterRun.characterIndex = 28u;
2563 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
2564 fontDescriptionRun04.familyLength = fontArabic.size();
2565 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
2566 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
2567 fontDescriptionRun04.familyDefined = true;
2568 fontDescriptionRun04.weightDefined = false;
2569 fontDescriptionRun04.widthDefined = false;
2570 fontDescriptionRun04.slantDefined = false;
2571 fontDescriptionRun04.sizeDefined = false;
2573 // Set a known font description
2574 FontDescriptionRun fontDescriptionRun05;
2575 fontDescriptionRun05.characterRun.characterIndex = 42u;
2576 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
2577 fontDescriptionRun05.familyLength = fontLatin.size();
2578 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
2579 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
2580 fontDescriptionRun05.familyDefined = true;
2581 fontDescriptionRun05.weightDefined = false;
2582 fontDescriptionRun05.widthDefined = false;
2583 fontDescriptionRun05.slantDefined = false;
2584 fontDescriptionRun05.sizeDefined = false;
2586 // Set a known font description
2587 FontDescriptionRun fontDescriptionRun06;
2588 fontDescriptionRun06.characterRun.characterIndex = 54u;
2589 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
2590 fontDescriptionRun06.familyLength = fontHebrew.size();
2591 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
2592 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
2593 fontDescriptionRun06.familyDefined = true;
2594 fontDescriptionRun06.weightDefined = false;
2595 fontDescriptionRun06.widthDefined = false;
2596 fontDescriptionRun06.slantDefined = false;
2597 fontDescriptionRun06.sizeDefined = false;
2599 // Set a known font description
2600 FontDescriptionRun fontDescriptionRun07;
2601 fontDescriptionRun07.characterRun.characterIndex = 64u;
2602 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
2603 fontDescriptionRun07.familyLength = fontHebrew.size();
2604 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
2605 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
2606 fontDescriptionRun07.familyDefined = true;
2607 fontDescriptionRun07.weightDefined = false;
2608 fontDescriptionRun07.widthDefined = false;
2609 fontDescriptionRun07.slantDefined = false;
2610 fontDescriptionRun07.sizeDefined = false;
2612 // Set a known font description
2613 FontDescriptionRun fontDescriptionRun08;
2614 fontDescriptionRun08.characterRun.characterIndex = 74u;
2615 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
2616 fontDescriptionRun08.familyLength = fontLatin.size();
2617 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
2618 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
2619 fontDescriptionRun08.familyDefined = true;
2620 fontDescriptionRun08.weightDefined = false;
2621 fontDescriptionRun08.widthDefined = false;
2622 fontDescriptionRun08.slantDefined = false;
2623 fontDescriptionRun08.sizeDefined = false;
2625 // Set a known font description
2626 FontDescriptionRun fontDescriptionRun09;
2627 fontDescriptionRun09.characterRun.characterIndex = 92u;
2628 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
2629 fontDescriptionRun09.familyLength = fontLatin.size();
2630 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
2631 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
2632 fontDescriptionRun09.familyDefined = true;
2633 fontDescriptionRun09.weightDefined = false;
2634 fontDescriptionRun09.widthDefined = false;
2635 fontDescriptionRun09.slantDefined = false;
2636 fontDescriptionRun09.sizeDefined = false;
2638 // Set a known font description
2639 FontDescriptionRun fontDescriptionRun10;
2640 fontDescriptionRun10.characterRun.characterIndex = 104u;
2641 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
2642 fontDescriptionRun10.familyLength = fontArabic.size();
2643 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
2644 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
2645 fontDescriptionRun10.familyDefined = true;
2646 fontDescriptionRun10.weightDefined = false;
2647 fontDescriptionRun10.widthDefined = false;
2648 fontDescriptionRun10.slantDefined = false;
2649 fontDescriptionRun10.sizeDefined = false;
2651 // Set a known font description
2652 FontDescriptionRun fontDescriptionRun11;
2653 fontDescriptionRun11.characterRun.characterIndex = 118u;
2654 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
2655 fontDescriptionRun11.familyLength = fontHebrew.size();
2656 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
2657 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
2658 fontDescriptionRun11.familyDefined = true;
2659 fontDescriptionRun11.weightDefined = false;
2660 fontDescriptionRun11.widthDefined = false;
2661 fontDescriptionRun11.slantDefined = false;
2662 fontDescriptionRun11.sizeDefined = false;
2664 // Set a known font description
2665 FontDescriptionRun fontDescriptionRun12;
2666 fontDescriptionRun12.characterRun.characterIndex = 128u;
2667 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
2668 fontDescriptionRun12.familyLength = fontLatin.size();
2669 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
2670 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
2671 fontDescriptionRun12.familyDefined = true;
2672 fontDescriptionRun12.weightDefined = false;
2673 fontDescriptionRun12.widthDefined = false;
2674 fontDescriptionRun12.slantDefined = false;
2675 fontDescriptionRun12.sizeDefined = false;
2677 // Set a known font description
2678 FontDescriptionRun fontDescriptionRun13;
2679 fontDescriptionRun13.characterRun.characterIndex = 145u;
2680 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
2681 fontDescriptionRun13.familyLength = fontHebrew.size();
2682 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
2683 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
2684 fontDescriptionRun13.familyDefined = true;
2685 fontDescriptionRun13.weightDefined = false;
2686 fontDescriptionRun13.widthDefined = false;
2687 fontDescriptionRun13.slantDefined = false;
2688 fontDescriptionRun13.sizeDefined = false;
2690 // Set a known font description
2691 FontDescriptionRun fontDescriptionRun14;
2692 fontDescriptionRun14.characterRun.characterIndex = 154u;
2693 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
2694 fontDescriptionRun14.familyLength = fontLatin.size();
2695 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
2696 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
2697 fontDescriptionRun14.familyDefined = true;
2698 fontDescriptionRun14.weightDefined = false;
2699 fontDescriptionRun14.widthDefined = false;
2700 fontDescriptionRun14.slantDefined = false;
2701 fontDescriptionRun14.sizeDefined = false;
2703 // Set a known font description
2704 FontDescriptionRun fontDescriptionRun15;
2705 fontDescriptionRun15.characterRun.characterIndex = 156u;
2706 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
2707 fontDescriptionRun15.familyLength = fontHebrew.size();
2708 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
2709 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
2710 fontDescriptionRun15.familyDefined = true;
2711 fontDescriptionRun15.weightDefined = false;
2712 fontDescriptionRun15.widthDefined = false;
2713 fontDescriptionRun15.slantDefined = false;
2714 fontDescriptionRun15.sizeDefined = false;
2716 // Set a known font description
2717 FontDescriptionRun fontDescriptionRun16;
2718 fontDescriptionRun16.characterRun.characterIndex = 166u;
2719 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
2720 fontDescriptionRun16.familyLength = fontLatin.size();
2721 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
2722 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
2723 fontDescriptionRun16.familyDefined = true;
2724 fontDescriptionRun16.weightDefined = false;
2725 fontDescriptionRun16.widthDefined = false;
2726 fontDescriptionRun16.slantDefined = false;
2727 fontDescriptionRun16.sizeDefined = false;
2729 // Set a known font description
2730 FontDescriptionRun fontDescriptionRun17;
2731 fontDescriptionRun17.characterRun.characterIndex = 178u;
2732 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
2733 fontDescriptionRun17.familyLength = fontArabic.size();
2734 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
2735 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
2736 fontDescriptionRun17.familyDefined = true;
2737 fontDescriptionRun17.weightDefined = false;
2738 fontDescriptionRun17.widthDefined = false;
2739 fontDescriptionRun17.slantDefined = false;
2740 fontDescriptionRun17.sizeDefined = false;
2742 Vector<FontDescriptionRun> fontDescriptionRuns;
2743 fontDescriptionRuns.PushBack(fontDescriptionRun01);
2744 fontDescriptionRuns.PushBack(fontDescriptionRun02);
2745 fontDescriptionRuns.PushBack(fontDescriptionRun03);
2746 fontDescriptionRuns.PushBack(fontDescriptionRun04);
2747 fontDescriptionRuns.PushBack(fontDescriptionRun05);
2748 fontDescriptionRuns.PushBack(fontDescriptionRun06);
2749 fontDescriptionRuns.PushBack(fontDescriptionRun07);
2750 fontDescriptionRuns.PushBack(fontDescriptionRun08);
2751 fontDescriptionRuns.PushBack(fontDescriptionRun09);
2752 fontDescriptionRuns.PushBack(fontDescriptionRun10);
2753 fontDescriptionRuns.PushBack(fontDescriptionRun11);
2754 fontDescriptionRuns.PushBack(fontDescriptionRun12);
2755 fontDescriptionRuns.PushBack(fontDescriptionRun13);
2756 fontDescriptionRuns.PushBack(fontDescriptionRun14);
2757 fontDescriptionRuns.PushBack(fontDescriptionRun15);
2758 fontDescriptionRuns.PushBack(fontDescriptionRun16);
2759 fontDescriptionRuns.PushBack(fontDescriptionRun17);
2760 Size textArea(100.f, 300.f);
2761 Size layoutSize(100.f, 380.f);
2764 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
3052 -12.f, // 150 .. 155
3127 struct LineRun line01 =
3139 struct LineRun line02 =
3151 struct LineRun line03 =
3163 struct LineRun line04 =
3175 struct LineRun line05 =
3187 struct LineRun line06 =
3199 struct LineRun line07 =
3211 struct LineRun line08 =
3223 struct LineRun line09 =
3235 struct LineRun line10 =
3247 struct LineRun line11 =
3259 struct LineRun line12 =
3271 struct LineRun line13 =
3283 struct LineRun line14 =
3295 struct LineRun line15 =
3307 struct LineRun line16 =
3319 struct LineRun line17 =
3331 struct LineRun line18 =
3343 struct LineRun line19 =
3355 Vector<LineRun> lines;
3356 lines.PushBack(line01);
3357 lines.PushBack(line02);
3358 lines.PushBack(line03);
3359 lines.PushBack(line04);
3360 lines.PushBack(line05);
3361 lines.PushBack(line06);
3362 lines.PushBack(line07);
3363 lines.PushBack(line08);
3364 lines.PushBack(line09);
3365 lines.PushBack(line10);
3366 lines.PushBack(line11);
3367 lines.PushBack(line12);
3368 lines.PushBack(line13);
3369 lines.PushBack(line14);
3370 lines.PushBack(line15);
3371 lines.PushBack(line16);
3372 lines.PushBack(line17);
3373 lines.PushBack(line18);
3374 lines.PushBack(line19);
3376 LayoutTextData data =
3378 "Layout bidirectional text.",
3379 "Hello world demo שלום עולם.\n"
3380 "مرحبا بالعالم hello world שלום עולם\n"
3381 "שלום עולם hello world demo.\n"
3382 "hello world مرحبا بالعالم שלום עולם\n"
3383 "Hello world demo שלום עולם.\n"
3384 "שלום עולם hello world مرحبا بالعالم\n",
3387 fontDescriptionRuns.Begin(),
3393 Layout::Engine::MULTI_LINE_BOX,
3397 DevelText::EllipsisPosition::END,
3400 if(!LayoutTextTest(data))
3402 tet_result(TET_FAIL);
3405 tet_result(TET_PASS);
3409 int UtcDaliTextUpdateLayout03(void)
3411 ToolkitTestApplication application;
3412 tet_infoline(" UtcDaliTextUpdateLayout03");
3414 // Layout some lines of bidirectional text. Update the paragraphs at the middle.
3416 const std::string fontLatin("TizenSans");
3417 const std::string fontHebrew("TizenSansHebrew");
3418 const std::string fontArabic("TizenSansArabic");
3420 // Set a known font description
3421 FontDescriptionRun fontDescriptionRun01;
3422 fontDescriptionRun01.characterRun.characterIndex = 0u;
3423 fontDescriptionRun01.characterRun.numberOfCharacters = 17u;
3424 fontDescriptionRun01.familyLength = fontLatin.size();
3425 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
3426 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
3427 fontDescriptionRun01.familyDefined = true;
3428 fontDescriptionRun01.weightDefined = false;
3429 fontDescriptionRun01.widthDefined = false;
3430 fontDescriptionRun01.slantDefined = false;
3431 fontDescriptionRun01.sizeDefined = false;
3433 // Set a known font description
3434 FontDescriptionRun fontDescriptionRun02;
3435 fontDescriptionRun02.characterRun.characterIndex = 17u;
3436 fontDescriptionRun02.characterRun.numberOfCharacters = 9u;
3437 fontDescriptionRun02.familyLength = fontHebrew.size();
3438 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
3439 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
3440 fontDescriptionRun02.familyDefined = true;
3441 fontDescriptionRun02.weightDefined = false;
3442 fontDescriptionRun02.widthDefined = false;
3443 fontDescriptionRun02.slantDefined = false;
3444 fontDescriptionRun02.sizeDefined = false;
3446 // Set a known font description
3447 FontDescriptionRun fontDescriptionRun03;
3448 fontDescriptionRun03.characterRun.characterIndex = 26u;
3449 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
3450 fontDescriptionRun03.familyLength = fontLatin.size();
3451 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
3452 memcpy(fontDescriptionRun03.familyName, fontLatin.c_str(), fontDescriptionRun03.familyLength);
3453 fontDescriptionRun03.familyDefined = true;
3454 fontDescriptionRun03.weightDefined = false;
3455 fontDescriptionRun03.widthDefined = false;
3456 fontDescriptionRun03.slantDefined = false;
3457 fontDescriptionRun03.sizeDefined = false;
3459 // Set a known font description
3460 FontDescriptionRun fontDescriptionRun04;
3461 fontDescriptionRun04.characterRun.characterIndex = 28u;
3462 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
3463 fontDescriptionRun04.familyLength = fontArabic.size();
3464 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
3465 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
3466 fontDescriptionRun04.familyDefined = true;
3467 fontDescriptionRun04.weightDefined = false;
3468 fontDescriptionRun04.widthDefined = false;
3469 fontDescriptionRun04.slantDefined = false;
3470 fontDescriptionRun04.sizeDefined = false;
3472 // Set a known font description
3473 FontDescriptionRun fontDescriptionRun05;
3474 fontDescriptionRun05.characterRun.characterIndex = 42u;
3475 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
3476 fontDescriptionRun05.familyLength = fontLatin.size();
3477 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
3478 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
3479 fontDescriptionRun05.familyDefined = true;
3480 fontDescriptionRun05.weightDefined = false;
3481 fontDescriptionRun05.widthDefined = false;
3482 fontDescriptionRun05.slantDefined = false;
3483 fontDescriptionRun05.sizeDefined = false;
3485 // Set a known font description
3486 FontDescriptionRun fontDescriptionRun06;
3487 fontDescriptionRun06.characterRun.characterIndex = 54u;
3488 fontDescriptionRun06.characterRun.numberOfCharacters = 10u;
3489 fontDescriptionRun06.familyLength = fontHebrew.size();
3490 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
3491 memcpy(fontDescriptionRun06.familyName, fontHebrew.c_str(), fontDescriptionRun06.familyLength);
3492 fontDescriptionRun06.familyDefined = true;
3493 fontDescriptionRun06.weightDefined = false;
3494 fontDescriptionRun06.widthDefined = false;
3495 fontDescriptionRun06.slantDefined = false;
3496 fontDescriptionRun06.sizeDefined = false;
3498 // Set a known font description
3499 FontDescriptionRun fontDescriptionRun07;
3500 fontDescriptionRun07.characterRun.characterIndex = 64u;
3501 fontDescriptionRun07.characterRun.numberOfCharacters = 10u;
3502 fontDescriptionRun07.familyLength = fontHebrew.size();
3503 fontDescriptionRun07.familyName = new char[fontDescriptionRun07.familyLength];
3504 memcpy(fontDescriptionRun07.familyName, fontHebrew.c_str(), fontDescriptionRun07.familyLength);
3505 fontDescriptionRun07.familyDefined = true;
3506 fontDescriptionRun07.weightDefined = false;
3507 fontDescriptionRun07.widthDefined = false;
3508 fontDescriptionRun07.slantDefined = false;
3509 fontDescriptionRun07.sizeDefined = false;
3511 // Set a known font description
3512 FontDescriptionRun fontDescriptionRun08;
3513 fontDescriptionRun08.characterRun.characterIndex = 74u;
3514 fontDescriptionRun08.characterRun.numberOfCharacters = 18u;
3515 fontDescriptionRun08.familyLength = fontLatin.size();
3516 fontDescriptionRun08.familyName = new char[fontDescriptionRun08.familyLength];
3517 memcpy(fontDescriptionRun08.familyName, fontLatin.c_str(), fontDescriptionRun08.familyLength);
3518 fontDescriptionRun08.familyDefined = true;
3519 fontDescriptionRun08.weightDefined = false;
3520 fontDescriptionRun08.widthDefined = false;
3521 fontDescriptionRun08.slantDefined = false;
3522 fontDescriptionRun08.sizeDefined = false;
3524 // Set a known font description
3525 FontDescriptionRun fontDescriptionRun09;
3526 fontDescriptionRun09.characterRun.characterIndex = 92u;
3527 fontDescriptionRun09.characterRun.numberOfCharacters = 12u;
3528 fontDescriptionRun09.familyLength = fontLatin.size();
3529 fontDescriptionRun09.familyName = new char[fontDescriptionRun09.familyLength];
3530 memcpy(fontDescriptionRun09.familyName, fontLatin.c_str(), fontDescriptionRun09.familyLength);
3531 fontDescriptionRun09.familyDefined = true;
3532 fontDescriptionRun09.weightDefined = false;
3533 fontDescriptionRun09.widthDefined = false;
3534 fontDescriptionRun09.slantDefined = false;
3535 fontDescriptionRun09.sizeDefined = false;
3537 // Set a known font description
3538 FontDescriptionRun fontDescriptionRun10;
3539 fontDescriptionRun10.characterRun.characterIndex = 104u;
3540 fontDescriptionRun10.characterRun.numberOfCharacters = 14u;
3541 fontDescriptionRun10.familyLength = fontArabic.size();
3542 fontDescriptionRun10.familyName = new char[fontDescriptionRun10.familyLength];
3543 memcpy(fontDescriptionRun10.familyName, fontArabic.c_str(), fontDescriptionRun10.familyLength);
3544 fontDescriptionRun10.familyDefined = true;
3545 fontDescriptionRun10.weightDefined = false;
3546 fontDescriptionRun10.widthDefined = false;
3547 fontDescriptionRun10.slantDefined = false;
3548 fontDescriptionRun10.sizeDefined = false;
3550 // Set a known font description
3551 FontDescriptionRun fontDescriptionRun11;
3552 fontDescriptionRun11.characterRun.characterIndex = 118u;
3553 fontDescriptionRun11.characterRun.numberOfCharacters = 10u;
3554 fontDescriptionRun11.familyLength = fontHebrew.size();
3555 fontDescriptionRun11.familyName = new char[fontDescriptionRun11.familyLength];
3556 memcpy(fontDescriptionRun11.familyName, fontHebrew.c_str(), fontDescriptionRun11.familyLength);
3557 fontDescriptionRun11.familyDefined = true;
3558 fontDescriptionRun11.weightDefined = false;
3559 fontDescriptionRun11.widthDefined = false;
3560 fontDescriptionRun11.slantDefined = false;
3561 fontDescriptionRun11.sizeDefined = false;
3563 // Set a known font description
3564 FontDescriptionRun fontDescriptionRun12;
3565 fontDescriptionRun12.characterRun.characterIndex = 128u;
3566 fontDescriptionRun12.characterRun.numberOfCharacters = 17u;
3567 fontDescriptionRun12.familyLength = fontLatin.size();
3568 fontDescriptionRun12.familyName = new char[fontDescriptionRun12.familyLength];
3569 memcpy(fontDescriptionRun12.familyName, fontLatin.c_str(), fontDescriptionRun12.familyLength);
3570 fontDescriptionRun12.familyDefined = true;
3571 fontDescriptionRun12.weightDefined = false;
3572 fontDescriptionRun12.widthDefined = false;
3573 fontDescriptionRun12.slantDefined = false;
3574 fontDescriptionRun12.sizeDefined = false;
3576 // Set a known font description
3577 FontDescriptionRun fontDescriptionRun13;
3578 fontDescriptionRun13.characterRun.characterIndex = 145u;
3579 fontDescriptionRun13.characterRun.numberOfCharacters = 9u;
3580 fontDescriptionRun13.familyLength = fontHebrew.size();
3581 fontDescriptionRun13.familyName = new char[fontDescriptionRun13.familyLength];
3582 memcpy(fontDescriptionRun13.familyName, fontHebrew.c_str(), fontDescriptionRun13.familyLength);
3583 fontDescriptionRun13.familyDefined = true;
3584 fontDescriptionRun13.weightDefined = false;
3585 fontDescriptionRun13.widthDefined = false;
3586 fontDescriptionRun13.slantDefined = false;
3587 fontDescriptionRun13.sizeDefined = false;
3589 // Set a known font description
3590 FontDescriptionRun fontDescriptionRun14;
3591 fontDescriptionRun14.characterRun.characterIndex = 154u;
3592 fontDescriptionRun14.characterRun.numberOfCharacters = 2u;
3593 fontDescriptionRun14.familyLength = fontLatin.size();
3594 fontDescriptionRun14.familyName = new char[fontDescriptionRun14.familyLength];
3595 memcpy(fontDescriptionRun14.familyName, fontLatin.c_str(), fontDescriptionRun14.familyLength);
3596 fontDescriptionRun14.familyDefined = true;
3597 fontDescriptionRun14.weightDefined = false;
3598 fontDescriptionRun14.widthDefined = false;
3599 fontDescriptionRun14.slantDefined = false;
3600 fontDescriptionRun14.sizeDefined = false;
3602 // Set a known font description
3603 FontDescriptionRun fontDescriptionRun15;
3604 fontDescriptionRun15.characterRun.characterIndex = 156u;
3605 fontDescriptionRun15.characterRun.numberOfCharacters = 10u;
3606 fontDescriptionRun15.familyLength = fontHebrew.size();
3607 fontDescriptionRun15.familyName = new char[fontDescriptionRun15.familyLength];
3608 memcpy(fontDescriptionRun15.familyName, fontHebrew.c_str(), fontDescriptionRun15.familyLength);
3609 fontDescriptionRun15.familyDefined = true;
3610 fontDescriptionRun15.weightDefined = false;
3611 fontDescriptionRun15.widthDefined = false;
3612 fontDescriptionRun15.slantDefined = false;
3613 fontDescriptionRun15.sizeDefined = false;
3615 // Set a known font description
3616 FontDescriptionRun fontDescriptionRun16;
3617 fontDescriptionRun16.characterRun.characterIndex = 166u;
3618 fontDescriptionRun16.characterRun.numberOfCharacters = 12u;
3619 fontDescriptionRun16.familyLength = fontLatin.size();
3620 fontDescriptionRun16.familyName = new char[fontDescriptionRun16.familyLength];
3621 memcpy(fontDescriptionRun16.familyName, fontLatin.c_str(), fontDescriptionRun16.familyLength);
3622 fontDescriptionRun16.familyDefined = true;
3623 fontDescriptionRun16.weightDefined = false;
3624 fontDescriptionRun16.widthDefined = false;
3625 fontDescriptionRun16.slantDefined = false;
3626 fontDescriptionRun16.sizeDefined = false;
3628 // Set a known font description
3629 FontDescriptionRun fontDescriptionRun17;
3630 fontDescriptionRun17.characterRun.characterIndex = 178u;
3631 fontDescriptionRun17.characterRun.numberOfCharacters = 14u;
3632 fontDescriptionRun17.familyLength = fontArabic.size();
3633 fontDescriptionRun17.familyName = new char[fontDescriptionRun17.familyLength];
3634 memcpy(fontDescriptionRun17.familyName, fontArabic.c_str(), fontDescriptionRun17.familyLength);
3635 fontDescriptionRun17.familyDefined = true;
3636 fontDescriptionRun17.weightDefined = false;
3637 fontDescriptionRun17.widthDefined = false;
3638 fontDescriptionRun17.slantDefined = false;
3639 fontDescriptionRun17.sizeDefined = false;
3641 Vector<FontDescriptionRun> fontDescriptionRuns;
3642 fontDescriptionRuns.PushBack(fontDescriptionRun01);
3643 fontDescriptionRuns.PushBack(fontDescriptionRun02);
3644 fontDescriptionRuns.PushBack(fontDescriptionRun03);
3645 fontDescriptionRuns.PushBack(fontDescriptionRun04);
3646 fontDescriptionRuns.PushBack(fontDescriptionRun05);
3647 fontDescriptionRuns.PushBack(fontDescriptionRun06);
3648 fontDescriptionRuns.PushBack(fontDescriptionRun07);
3649 fontDescriptionRuns.PushBack(fontDescriptionRun08);
3650 fontDescriptionRuns.PushBack(fontDescriptionRun09);
3651 fontDescriptionRuns.PushBack(fontDescriptionRun10);
3652 fontDescriptionRuns.PushBack(fontDescriptionRun11);
3653 fontDescriptionRuns.PushBack(fontDescriptionRun12);
3654 fontDescriptionRuns.PushBack(fontDescriptionRun13);
3655 fontDescriptionRuns.PushBack(fontDescriptionRun14);
3656 fontDescriptionRuns.PushBack(fontDescriptionRun15);
3657 fontDescriptionRuns.PushBack(fontDescriptionRun16);
3658 fontDescriptionRuns.PushBack(fontDescriptionRun17);
3659 Size textArea(100.f, 300.f);
3660 Size layoutSize(100.f, 380.f);
3663 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
3951 -12.f, // 150 .. 155
4026 struct LineRun line01 =
4038 struct LineRun line02 =
4050 struct LineRun line03 =
4062 struct LineRun line04 =
4074 struct LineRun line05 =
4086 struct LineRun line06 =
4098 struct LineRun line07 =
4110 struct LineRun line08 =
4122 struct LineRun line09 =
4134 struct LineRun line10 =
4146 struct LineRun line11 =
4158 struct LineRun line12 =
4170 struct LineRun line13 =
4182 struct LineRun line14 =
4194 struct LineRun line15 =
4206 struct LineRun line16 =
4218 struct LineRun line17 =
4230 struct LineRun line18 =
4242 struct LineRun line19 =
4254 Vector<LineRun> lines;
4255 lines.PushBack(line01);
4256 lines.PushBack(line02);
4257 lines.PushBack(line03);
4258 lines.PushBack(line04);
4259 lines.PushBack(line05);
4260 lines.PushBack(line06);
4261 lines.PushBack(line07);
4262 lines.PushBack(line08);
4263 lines.PushBack(line09);
4264 lines.PushBack(line10);
4265 lines.PushBack(line11);
4266 lines.PushBack(line12);
4267 lines.PushBack(line13);
4268 lines.PushBack(line14);
4269 lines.PushBack(line15);
4270 lines.PushBack(line16);
4271 lines.PushBack(line17);
4272 lines.PushBack(line18);
4273 lines.PushBack(line19);
4275 LayoutTextData data =
4277 "Layout bidirectional text.",
4278 "Hello world demo שלום עולם.\n"
4279 "مرحبا بالعالم hello world שלום עולם\n"
4280 "שלום עולם hello world demo.\n"
4281 "hello world مرحبا بالعالم שלום עולם\n"
4282 "Hello world demo שלום עולם.\n"
4283 "שלום עולם hello world مرحبا بالعالم\n",
4286 fontDescriptionRuns.Begin(),
4292 Layout::Engine::MULTI_LINE_BOX,
4296 DevelText::EllipsisPosition::END,
4299 if(!LayoutTextTest(data))
4301 tet_result(TET_FAIL);
4304 tet_result(TET_PASS);
4308 int UtcDaliTextLayoutEllipsis01(void)
4310 ToolkitTestApplication application;
4311 tet_infoline(" UtcDaliTextLayoutEllipsis01");
4313 // Layout single-line LTR text with ellipsis.
4315 const std::string fontLatin("TizenSans");
4317 // Set a known font description
4318 FontDescriptionRun fontDescriptionRun01;
4319 fontDescriptionRun01.characterRun.characterIndex = 0u;
4320 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4321 fontDescriptionRun01.familyLength = fontLatin.size();
4322 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4323 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4324 fontDescriptionRun01.familyDefined = true;
4325 fontDescriptionRun01.weightDefined = false;
4326 fontDescriptionRun01.widthDefined = false;
4327 fontDescriptionRun01.slantDefined = false;
4328 fontDescriptionRun01.sizeDefined = false;
4330 Vector<FontDescriptionRun> fontDescriptionRuns;
4331 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4333 struct LineRun line01 =
4345 Vector<LineRun> lines;
4346 lines.PushBack(line01);
4378 Size textArea(100.f, 50.f);
4379 Size layoutSize(100.f, 20.f);
4381 LayoutTextData data =
4383 "Layout single-line LTR text with ellipsis.",
4384 "Hello world demo hello world demo hello world demo.",
4387 fontDescriptionRuns.Begin(),
4393 Layout::Engine::SINGLE_LINE_BOX,
4397 DevelText::EllipsisPosition::END,
4400 if(!LayoutTextTest(data))
4402 tet_result(TET_FAIL);
4405 tet_result(TET_PASS);
4409 int UtcDaliTextLayoutEllipsis02(void)
4411 ToolkitTestApplication application;
4412 tet_infoline(" UtcDaliTextLayoutEllipsis02");
4414 // Layout multi-line LTR text with ellipsis.
4416 const std::string fontLatin("TizenSans");
4418 // Set a known font description
4419 FontDescriptionRun fontDescriptionRun01;
4420 fontDescriptionRun01.characterRun.characterIndex = 0u;
4421 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4422 fontDescriptionRun01.familyLength = fontLatin.size();
4423 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4424 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4425 fontDescriptionRun01.familyDefined = true;
4426 fontDescriptionRun01.weightDefined = false;
4427 fontDescriptionRun01.widthDefined = false;
4428 fontDescriptionRun01.slantDefined = false;
4429 fontDescriptionRun01.sizeDefined = false;
4431 Vector<FontDescriptionRun> fontDescriptionRuns;
4432 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4434 struct LineRun line01 =
4446 struct LineRun line02 =
4458 Vector<LineRun> lines;
4459 lines.PushBack(line01);
4460 lines.PushBack(line02);
4514 Size textArea(100.f, 50.f);
4515 Size layoutSize(100.f, 40.f);
4517 LayoutTextData data =
4519 "Layout multi-line LTR text with ellipsis.",
4520 "Hello world demo hello world demo hello world demo.",
4523 fontDescriptionRuns.Begin(),
4529 Layout::Engine::MULTI_LINE_BOX,
4533 DevelText::EllipsisPosition::END,
4536 if(!LayoutTextTest(data))
4538 tet_result(TET_FAIL);
4541 tet_result(TET_PASS);
4545 int UtcDaliTextLayoutEllipsis03(void)
4547 ToolkitTestApplication application;
4548 tet_infoline(" UtcDaliTextLayoutEllipsis03");
4550 // Layout single-line RTL text with ellipsis.
4552 const std::string fontHebrew("TizenSansHebrew");
4553 const std::string fontArabic("TizenSansArabic");
4555 // Set a known font description
4556 FontDescriptionRun fontDescriptionRun01;
4557 fontDescriptionRun01.characterRun.characterIndex = 0u;
4558 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4559 fontDescriptionRun01.familyLength = fontHebrew.size();
4560 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4561 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4562 fontDescriptionRun01.familyDefined = true;
4563 fontDescriptionRun01.weightDefined = false;
4564 fontDescriptionRun01.widthDefined = false;
4565 fontDescriptionRun01.slantDefined = false;
4566 fontDescriptionRun01.sizeDefined = false;
4568 FontDescriptionRun fontDescriptionRun02;
4569 fontDescriptionRun02.characterRun.characterIndex = 10u;
4570 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4571 fontDescriptionRun02.familyLength = fontArabic.size();
4572 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4573 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4574 fontDescriptionRun02.familyDefined = true;
4575 fontDescriptionRun02.weightDefined = false;
4576 fontDescriptionRun02.widthDefined = false;
4577 fontDescriptionRun02.slantDefined = false;
4578 fontDescriptionRun02.sizeDefined = false;
4580 FontDescriptionRun fontDescriptionRun03;
4581 fontDescriptionRun03.characterRun.characterIndex = 24u;
4582 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4583 fontDescriptionRun03.familyLength = fontHebrew.size();
4584 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4585 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4586 fontDescriptionRun03.familyDefined = true;
4587 fontDescriptionRun03.weightDefined = false;
4588 fontDescriptionRun03.widthDefined = false;
4589 fontDescriptionRun03.slantDefined = false;
4590 fontDescriptionRun03.sizeDefined = false;
4592 FontDescriptionRun fontDescriptionRun04;
4593 fontDescriptionRun04.characterRun.characterIndex = 34u;
4594 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4595 fontDescriptionRun04.familyLength = fontArabic.size();
4596 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4597 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4598 fontDescriptionRun04.familyDefined = true;
4599 fontDescriptionRun04.weightDefined = false;
4600 fontDescriptionRun04.widthDefined = false;
4601 fontDescriptionRun04.slantDefined = false;
4602 fontDescriptionRun04.sizeDefined = false;
4604 FontDescriptionRun fontDescriptionRun05;
4605 fontDescriptionRun05.characterRun.characterIndex = 48u;
4606 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4607 fontDescriptionRun05.familyLength = fontHebrew.size();
4608 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4609 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4610 fontDescriptionRun05.familyDefined = true;
4611 fontDescriptionRun05.weightDefined = false;
4612 fontDescriptionRun05.widthDefined = false;
4613 fontDescriptionRun05.slantDefined = false;
4614 fontDescriptionRun05.sizeDefined = false;
4616 FontDescriptionRun fontDescriptionRun06;
4617 fontDescriptionRun06.characterRun.characterIndex = 58u;
4618 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4619 fontDescriptionRun06.familyLength = fontArabic.size();
4620 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4621 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4622 fontDescriptionRun06.familyDefined = true;
4623 fontDescriptionRun06.weightDefined = false;
4624 fontDescriptionRun06.widthDefined = false;
4625 fontDescriptionRun06.slantDefined = false;
4626 fontDescriptionRun06.sizeDefined = false;
4628 Vector<FontDescriptionRun> fontDescriptionRuns;
4629 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4630 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4631 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4632 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4633 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4634 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4636 struct LineRun line01 =
4648 Vector<LineRun> lines;
4649 lines.PushBack(line01);
4687 Size textArea(100.f, 50.f);
4688 Size layoutSize(100.f, 20.f);
4690 LayoutTextData data =
4692 "Layout single-line RTL text with ellipsis.",
4693 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4696 fontDescriptionRuns.Begin(),
4702 Layout::Engine::SINGLE_LINE_BOX,
4706 DevelText::EllipsisPosition::END,
4709 if(!LayoutTextTest(data))
4711 tet_result(TET_FAIL);
4714 tet_result(TET_PASS);
4718 int UtcDaliTextLayoutEllipsis04(void)
4720 ToolkitTestApplication application;
4721 tet_infoline(" UtcDaliTextLayoutEllipsis04");
4723 // Layout multi-line RTL text with ellipsis.
4725 const std::string fontHebrew("TizenSansHebrew");
4726 const std::string fontArabic("TizenSansArabic");
4728 // Set a known font description
4729 FontDescriptionRun fontDescriptionRun01;
4730 fontDescriptionRun01.characterRun.characterIndex = 0u;
4731 fontDescriptionRun01.characterRun.numberOfCharacters = 10u;
4732 fontDescriptionRun01.familyLength = fontHebrew.size();
4733 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4734 memcpy(fontDescriptionRun01.familyName, fontHebrew.c_str(), fontDescriptionRun01.familyLength);
4735 fontDescriptionRun01.familyDefined = true;
4736 fontDescriptionRun01.weightDefined = false;
4737 fontDescriptionRun01.widthDefined = false;
4738 fontDescriptionRun01.slantDefined = false;
4739 fontDescriptionRun01.sizeDefined = false;
4741 FontDescriptionRun fontDescriptionRun02;
4742 fontDescriptionRun02.characterRun.characterIndex = 10u;
4743 fontDescriptionRun02.characterRun.numberOfCharacters = 14u;
4744 fontDescriptionRun02.familyLength = fontArabic.size();
4745 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
4746 memcpy(fontDescriptionRun02.familyName, fontArabic.c_str(), fontDescriptionRun02.familyLength);
4747 fontDescriptionRun02.familyDefined = true;
4748 fontDescriptionRun02.weightDefined = false;
4749 fontDescriptionRun02.widthDefined = false;
4750 fontDescriptionRun02.slantDefined = false;
4751 fontDescriptionRun02.sizeDefined = false;
4753 FontDescriptionRun fontDescriptionRun03;
4754 fontDescriptionRun03.characterRun.characterIndex = 24u;
4755 fontDescriptionRun03.characterRun.numberOfCharacters = 10u;
4756 fontDescriptionRun03.familyLength = fontHebrew.size();
4757 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
4758 memcpy(fontDescriptionRun03.familyName, fontHebrew.c_str(), fontDescriptionRun03.familyLength);
4759 fontDescriptionRun03.familyDefined = true;
4760 fontDescriptionRun03.weightDefined = false;
4761 fontDescriptionRun03.widthDefined = false;
4762 fontDescriptionRun03.slantDefined = false;
4763 fontDescriptionRun03.sizeDefined = false;
4765 FontDescriptionRun fontDescriptionRun04;
4766 fontDescriptionRun04.characterRun.characterIndex = 34u;
4767 fontDescriptionRun04.characterRun.numberOfCharacters = 14u;
4768 fontDescriptionRun04.familyLength = fontArabic.size();
4769 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
4770 memcpy(fontDescriptionRun04.familyName, fontArabic.c_str(), fontDescriptionRun04.familyLength);
4771 fontDescriptionRun04.familyDefined = true;
4772 fontDescriptionRun04.weightDefined = false;
4773 fontDescriptionRun04.widthDefined = false;
4774 fontDescriptionRun04.slantDefined = false;
4775 fontDescriptionRun04.sizeDefined = false;
4777 FontDescriptionRun fontDescriptionRun05;
4778 fontDescriptionRun05.characterRun.characterIndex = 48u;
4779 fontDescriptionRun05.characterRun.numberOfCharacters = 10u;
4780 fontDescriptionRun05.familyLength = fontHebrew.size();
4781 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
4782 memcpy(fontDescriptionRun05.familyName, fontHebrew.c_str(), fontDescriptionRun05.familyLength);
4783 fontDescriptionRun05.familyDefined = true;
4784 fontDescriptionRun05.weightDefined = false;
4785 fontDescriptionRun05.widthDefined = false;
4786 fontDescriptionRun05.slantDefined = false;
4787 fontDescriptionRun05.sizeDefined = false;
4789 FontDescriptionRun fontDescriptionRun06;
4790 fontDescriptionRun06.characterRun.characterIndex = 58u;
4791 fontDescriptionRun06.characterRun.numberOfCharacters = 15u;
4792 fontDescriptionRun06.familyLength = fontArabic.size();
4793 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
4794 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
4795 fontDescriptionRun06.familyDefined = true;
4796 fontDescriptionRun06.weightDefined = false;
4797 fontDescriptionRun06.widthDefined = false;
4798 fontDescriptionRun06.slantDefined = false;
4799 fontDescriptionRun06.sizeDefined = false;
4801 Vector<FontDescriptionRun> fontDescriptionRuns;
4802 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4803 fontDescriptionRuns.PushBack(fontDescriptionRun02);
4804 fontDescriptionRuns.PushBack(fontDescriptionRun03);
4805 fontDescriptionRuns.PushBack(fontDescriptionRun04);
4806 fontDescriptionRuns.PushBack(fontDescriptionRun05);
4807 fontDescriptionRuns.PushBack(fontDescriptionRun06);
4809 struct LineRun line01 =
4821 struct LineRun line02 =
4833 Vector<LineRun> lines;
4834 lines.PushBack(line01);
4835 lines.PushBack(line02);
4909 Size textArea(100.f, 50.f);
4910 Size layoutSize(100.f, 40.f);
4912 LayoutTextData data =
4914 "Layout multi-line RTL text with ellipsis.",
4915 "שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم שלום עולם مرحبا بالعالم.",
4918 fontDescriptionRuns.Begin(),
4924 Layout::Engine::MULTI_LINE_BOX,
4928 DevelText::EllipsisPosition::END,
4931 if(!LayoutTextTest(data))
4933 tet_result(TET_FAIL);
4936 tet_result(TET_PASS);
4940 int UtcDaliTextLayoutEllipsis05(void)
4942 ToolkitTestApplication application;
4943 tet_infoline(" UtcDaliTextLayoutEllipsis05");
4945 const std::string fontLatin("TizenSans");
4947 // Set a known font description
4948 FontDescriptionRun fontDescriptionRun01;
4949 fontDescriptionRun01.characterRun.characterIndex = 0u;
4950 fontDescriptionRun01.characterRun.numberOfCharacters = 51u;
4951 fontDescriptionRun01.familyLength = fontLatin.size();
4952 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
4953 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
4954 fontDescriptionRun01.familyDefined = true;
4955 fontDescriptionRun01.weightDefined = false;
4956 fontDescriptionRun01.widthDefined = false;
4957 fontDescriptionRun01.slantDefined = false;
4958 fontDescriptionRun01.sizeDefined = false;
4960 Vector<FontDescriptionRun> fontDescriptionRuns;
4961 fontDescriptionRuns.PushBack(fontDescriptionRun01);
4963 struct LineRun line01 =
4975 Vector<LineRun> lines;
4976 lines.PushBack(line01);
4982 Size textArea(100.f, 19.f);
4983 Size layoutSize(100.f, 20.f);
4985 LayoutTextData data =
4987 "Not enough height.",
4991 fontDescriptionRuns.Begin(),
4997 Layout::Engine::MULTI_LINE_BOX,
5001 DevelText::EllipsisPosition::END,
5004 if(!LayoutTextTest(data))
5006 tet_result(TET_FAIL);
5009 tet_result(TET_PASS);
5013 int UtcDaliTextAlign01(void)
5015 ToolkitTestApplication application;
5016 tet_infoline(" UtcDaliTextAlign01");
5018 // Calculate text alignment.
5020 const std::string fontLatin("TizenSans");
5021 const std::string fontHebrew("TizenSansHebrew");
5022 const std::string fontArabic("TizenSansArabic");
5024 // Set a known font description
5025 FontDescriptionRun fontDescriptionRun01;
5026 fontDescriptionRun01.characterRun.characterIndex = 0u;
5027 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5028 fontDescriptionRun01.familyLength = fontLatin.size();
5029 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5030 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5031 fontDescriptionRun01.familyDefined = true;
5032 fontDescriptionRun01.weightDefined = false;
5033 fontDescriptionRun01.widthDefined = false;
5034 fontDescriptionRun01.slantDefined = false;
5035 fontDescriptionRun01.sizeDefined = false;
5037 FontDescriptionRun fontDescriptionRun02;
5038 fontDescriptionRun02.characterRun.characterIndex = 12u;
5039 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5040 fontDescriptionRun02.familyLength = fontHebrew.size();
5041 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5042 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5043 fontDescriptionRun02.familyDefined = true;
5044 fontDescriptionRun02.weightDefined = false;
5045 fontDescriptionRun02.widthDefined = false;
5046 fontDescriptionRun02.slantDefined = false;
5047 fontDescriptionRun02.sizeDefined = false;
5049 FontDescriptionRun fontDescriptionRun03;
5050 fontDescriptionRun03.characterRun.characterIndex = 22u;
5051 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5052 fontDescriptionRun03.familyLength = fontArabic.size();
5053 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5054 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5055 fontDescriptionRun03.familyDefined = true;
5056 fontDescriptionRun03.weightDefined = false;
5057 fontDescriptionRun03.widthDefined = false;
5058 fontDescriptionRun03.slantDefined = false;
5059 fontDescriptionRun03.sizeDefined = false;
5061 FontDescriptionRun fontDescriptionRun04;
5062 fontDescriptionRun04.characterRun.characterIndex = 36u;
5063 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5064 fontDescriptionRun04.familyLength = fontLatin.size();
5065 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5066 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5067 fontDescriptionRun04.familyDefined = true;
5068 fontDescriptionRun04.weightDefined = false;
5069 fontDescriptionRun04.widthDefined = false;
5070 fontDescriptionRun04.slantDefined = false;
5071 fontDescriptionRun04.sizeDefined = false;
5073 FontDescriptionRun fontDescriptionRun05;
5074 fontDescriptionRun05.characterRun.characterIndex = 48u;
5075 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5076 fontDescriptionRun05.familyLength = fontLatin.size();
5077 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5078 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5079 fontDescriptionRun05.familyDefined = true;
5080 fontDescriptionRun05.weightDefined = false;
5081 fontDescriptionRun05.widthDefined = false;
5082 fontDescriptionRun05.slantDefined = false;
5083 fontDescriptionRun05.sizeDefined = false;
5085 FontDescriptionRun fontDescriptionRun06;
5086 fontDescriptionRun06.characterRun.characterIndex = 60u;
5087 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5088 fontDescriptionRun06.familyLength = fontArabic.size();
5089 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5090 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5091 fontDescriptionRun06.familyDefined = true;
5092 fontDescriptionRun06.weightDefined = false;
5093 fontDescriptionRun06.widthDefined = false;
5094 fontDescriptionRun06.slantDefined = false;
5095 fontDescriptionRun06.sizeDefined = false;
5097 Vector<FontDescriptionRun> fontDescriptionRuns;
5098 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5099 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5100 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5101 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5102 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5103 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5105 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5107 Size textArea(100.f, 300.f);
5110 "Begin alignment for the first paragraph.",
5111 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5114 fontDescriptionRuns.Begin(),
5115 Text::HorizontalAlignment::BEGIN,
5116 Text::VerticalAlignment::TOP,
5121 Dali::LayoutDirection::LEFT_TO_RIGHT,
5124 if(!AlignTest(data))
5126 tet_result(TET_FAIL);
5129 tet_result(TET_PASS);
5133 int UtcDaliTextAlign02(void)
5135 ToolkitTestApplication application;
5136 tet_infoline(" UtcDaliTextAlign02");
5138 // Calculate text alignment.
5140 const std::string fontLatin("TizenSans");
5141 const std::string fontHebrew("TizenSansHebrew");
5142 const std::string fontArabic("TizenSansArabic");
5144 // Set a known font description
5145 FontDescriptionRun fontDescriptionRun01;
5146 fontDescriptionRun01.characterRun.characterIndex = 0u;
5147 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5148 fontDescriptionRun01.familyLength = fontLatin.size();
5149 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5150 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5151 fontDescriptionRun01.familyDefined = true;
5152 fontDescriptionRun01.weightDefined = false;
5153 fontDescriptionRun01.widthDefined = false;
5154 fontDescriptionRun01.slantDefined = false;
5155 fontDescriptionRun01.sizeDefined = false;
5157 FontDescriptionRun fontDescriptionRun02;
5158 fontDescriptionRun02.characterRun.characterIndex = 12u;
5159 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5160 fontDescriptionRun02.familyLength = fontHebrew.size();
5161 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5162 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5163 fontDescriptionRun02.familyDefined = true;
5164 fontDescriptionRun02.weightDefined = false;
5165 fontDescriptionRun02.widthDefined = false;
5166 fontDescriptionRun02.slantDefined = false;
5167 fontDescriptionRun02.sizeDefined = false;
5169 FontDescriptionRun fontDescriptionRun03;
5170 fontDescriptionRun03.characterRun.characterIndex = 22u;
5171 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5172 fontDescriptionRun03.familyLength = fontArabic.size();
5173 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5174 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5175 fontDescriptionRun03.familyDefined = true;
5176 fontDescriptionRun03.weightDefined = false;
5177 fontDescriptionRun03.widthDefined = false;
5178 fontDescriptionRun03.slantDefined = false;
5179 fontDescriptionRun03.sizeDefined = false;
5181 FontDescriptionRun fontDescriptionRun04;
5182 fontDescriptionRun04.characterRun.characterIndex = 36u;
5183 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5184 fontDescriptionRun04.familyLength = fontLatin.size();
5185 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5186 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5187 fontDescriptionRun04.familyDefined = true;
5188 fontDescriptionRun04.weightDefined = false;
5189 fontDescriptionRun04.widthDefined = false;
5190 fontDescriptionRun04.slantDefined = false;
5191 fontDescriptionRun04.sizeDefined = false;
5193 FontDescriptionRun fontDescriptionRun05;
5194 fontDescriptionRun05.characterRun.characterIndex = 48u;
5195 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5196 fontDescriptionRun05.familyLength = fontLatin.size();
5197 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5198 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5199 fontDescriptionRun05.familyDefined = true;
5200 fontDescriptionRun05.weightDefined = false;
5201 fontDescriptionRun05.widthDefined = false;
5202 fontDescriptionRun05.slantDefined = false;
5203 fontDescriptionRun05.sizeDefined = false;
5205 FontDescriptionRun fontDescriptionRun06;
5206 fontDescriptionRun06.characterRun.characterIndex = 60u;
5207 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5208 fontDescriptionRun06.familyLength = fontArabic.size();
5209 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5210 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5211 fontDescriptionRun06.familyDefined = true;
5212 fontDescriptionRun06.weightDefined = false;
5213 fontDescriptionRun06.widthDefined = false;
5214 fontDescriptionRun06.slantDefined = false;
5215 fontDescriptionRun06.sizeDefined = false;
5217 Vector<FontDescriptionRun> fontDescriptionRuns;
5218 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5219 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5220 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5221 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5222 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5223 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5225 float positions[] = {0.f, 0.f, 33.f, 19.f, 0.f, 0.f};
5227 Size textArea(100.f, 300.f);
5230 "Begin alignment for the mid paragraph.",
5231 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5234 fontDescriptionRuns.Begin(),
5235 Text::HorizontalAlignment::BEGIN,
5236 Text::VerticalAlignment::TOP,
5241 Dali::LayoutDirection::LEFT_TO_RIGHT,
5244 if(!AlignTest(data))
5246 tet_result(TET_FAIL);
5249 tet_result(TET_PASS);
5253 int UtcDaliTextAlign03(void)
5255 ToolkitTestApplication application;
5256 tet_infoline(" UtcDaliTextAlign03");
5258 // Calculate text alignment.
5260 const std::string fontLatin("TizenSans");
5261 const std::string fontHebrew("TizenSansHebrew");
5262 const std::string fontArabic("TizenSansArabic");
5264 // Set a known font description
5265 FontDescriptionRun fontDescriptionRun01;
5266 fontDescriptionRun01.characterRun.characterIndex = 0u;
5267 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5268 fontDescriptionRun01.familyLength = fontLatin.size();
5269 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5270 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5271 fontDescriptionRun01.familyDefined = true;
5272 fontDescriptionRun01.weightDefined = false;
5273 fontDescriptionRun01.widthDefined = false;
5274 fontDescriptionRun01.slantDefined = false;
5275 fontDescriptionRun01.sizeDefined = false;
5277 FontDescriptionRun fontDescriptionRun02;
5278 fontDescriptionRun02.characterRun.characterIndex = 12u;
5279 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5280 fontDescriptionRun02.familyLength = fontHebrew.size();
5281 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5282 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5283 fontDescriptionRun02.familyDefined = true;
5284 fontDescriptionRun02.weightDefined = false;
5285 fontDescriptionRun02.widthDefined = false;
5286 fontDescriptionRun02.slantDefined = false;
5287 fontDescriptionRun02.sizeDefined = false;
5289 FontDescriptionRun fontDescriptionRun03;
5290 fontDescriptionRun03.characterRun.characterIndex = 22u;
5291 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5292 fontDescriptionRun03.familyLength = fontArabic.size();
5293 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5294 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5295 fontDescriptionRun03.familyDefined = true;
5296 fontDescriptionRun03.weightDefined = false;
5297 fontDescriptionRun03.widthDefined = false;
5298 fontDescriptionRun03.slantDefined = false;
5299 fontDescriptionRun03.sizeDefined = false;
5301 FontDescriptionRun fontDescriptionRun04;
5302 fontDescriptionRun04.characterRun.characterIndex = 36u;
5303 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5304 fontDescriptionRun04.familyLength = fontLatin.size();
5305 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5306 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5307 fontDescriptionRun04.familyDefined = true;
5308 fontDescriptionRun04.weightDefined = false;
5309 fontDescriptionRun04.widthDefined = false;
5310 fontDescriptionRun04.slantDefined = false;
5311 fontDescriptionRun04.sizeDefined = false;
5313 FontDescriptionRun fontDescriptionRun05;
5314 fontDescriptionRun05.characterRun.characterIndex = 48u;
5315 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5316 fontDescriptionRun05.familyLength = fontLatin.size();
5317 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5318 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5319 fontDescriptionRun05.familyDefined = true;
5320 fontDescriptionRun05.weightDefined = false;
5321 fontDescriptionRun05.widthDefined = false;
5322 fontDescriptionRun05.slantDefined = false;
5323 fontDescriptionRun05.sizeDefined = false;
5325 FontDescriptionRun fontDescriptionRun06;
5326 fontDescriptionRun06.characterRun.characterIndex = 60u;
5327 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5328 fontDescriptionRun06.familyLength = fontArabic.size();
5329 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5330 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5331 fontDescriptionRun06.familyDefined = true;
5332 fontDescriptionRun06.weightDefined = false;
5333 fontDescriptionRun06.widthDefined = false;
5334 fontDescriptionRun06.slantDefined = false;
5335 fontDescriptionRun06.sizeDefined = false;
5337 Vector<FontDescriptionRun> fontDescriptionRuns;
5338 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5339 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5340 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5341 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5342 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5343 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5345 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
5347 Size textArea(100.f, 300.f);
5350 "Begin alignment for the last paragraph.",
5351 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5354 fontDescriptionRuns.Begin(),
5355 Text::HorizontalAlignment::BEGIN,
5356 Text::VerticalAlignment::TOP,
5361 Dali::LayoutDirection::LEFT_TO_RIGHT,
5364 if(!AlignTest(data))
5366 tet_result(TET_FAIL);
5369 tet_result(TET_PASS);
5373 int UtcDaliTextAlign04(void)
5375 ToolkitTestApplication application;
5376 tet_infoline(" UtcDaliTextAlign04");
5378 // Calculate text alignment.
5380 const std::string fontLatin("TizenSans");
5381 const std::string fontHebrew("TizenSansHebrew");
5382 const std::string fontArabic("TizenSansArabic");
5384 // Set a known font description
5385 FontDescriptionRun fontDescriptionRun01;
5386 fontDescriptionRun01.characterRun.characterIndex = 0u;
5387 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5388 fontDescriptionRun01.familyLength = fontLatin.size();
5389 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5390 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5391 fontDescriptionRun01.familyDefined = true;
5392 fontDescriptionRun01.weightDefined = false;
5393 fontDescriptionRun01.widthDefined = false;
5394 fontDescriptionRun01.slantDefined = false;
5395 fontDescriptionRun01.sizeDefined = false;
5397 FontDescriptionRun fontDescriptionRun02;
5398 fontDescriptionRun02.characterRun.characterIndex = 12u;
5399 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5400 fontDescriptionRun02.familyLength = fontHebrew.size();
5401 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5402 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5403 fontDescriptionRun02.familyDefined = true;
5404 fontDescriptionRun02.weightDefined = false;
5405 fontDescriptionRun02.widthDefined = false;
5406 fontDescriptionRun02.slantDefined = false;
5407 fontDescriptionRun02.sizeDefined = false;
5409 FontDescriptionRun fontDescriptionRun03;
5410 fontDescriptionRun03.characterRun.characterIndex = 22u;
5411 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5412 fontDescriptionRun03.familyLength = fontArabic.size();
5413 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5414 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5415 fontDescriptionRun03.familyDefined = true;
5416 fontDescriptionRun03.weightDefined = false;
5417 fontDescriptionRun03.widthDefined = false;
5418 fontDescriptionRun03.slantDefined = false;
5419 fontDescriptionRun03.sizeDefined = false;
5421 FontDescriptionRun fontDescriptionRun04;
5422 fontDescriptionRun04.characterRun.characterIndex = 36u;
5423 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5424 fontDescriptionRun04.familyLength = fontLatin.size();
5425 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5426 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5427 fontDescriptionRun04.familyDefined = true;
5428 fontDescriptionRun04.weightDefined = false;
5429 fontDescriptionRun04.widthDefined = false;
5430 fontDescriptionRun04.slantDefined = false;
5431 fontDescriptionRun04.sizeDefined = false;
5433 FontDescriptionRun fontDescriptionRun05;
5434 fontDescriptionRun05.characterRun.characterIndex = 48u;
5435 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5436 fontDescriptionRun05.familyLength = fontLatin.size();
5437 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5438 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5439 fontDescriptionRun05.familyDefined = true;
5440 fontDescriptionRun05.weightDefined = false;
5441 fontDescriptionRun05.widthDefined = false;
5442 fontDescriptionRun05.slantDefined = false;
5443 fontDescriptionRun05.sizeDefined = false;
5445 FontDescriptionRun fontDescriptionRun06;
5446 fontDescriptionRun06.characterRun.characterIndex = 60u;
5447 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5448 fontDescriptionRun06.familyLength = fontArabic.size();
5449 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5450 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5451 fontDescriptionRun06.familyDefined = true;
5452 fontDescriptionRun06.weightDefined = false;
5453 fontDescriptionRun06.widthDefined = false;
5454 fontDescriptionRun06.slantDefined = false;
5455 fontDescriptionRun06.sizeDefined = false;
5457 Vector<FontDescriptionRun> fontDescriptionRuns;
5458 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5459 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5460 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5461 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5462 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5463 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5465 float positions[] = {9.f, 15.f, 0.f, 0.f, 0.f, 0.f};
5467 Size textArea(100.f, 300.f);
5470 "Center alignment for the first paragraph.",
5471 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5474 fontDescriptionRuns.Begin(),
5475 Text::HorizontalAlignment::CENTER,
5476 Text::VerticalAlignment::TOP,
5481 Dali::LayoutDirection::LEFT_TO_RIGHT,
5484 if(!AlignTest(data))
5486 tet_result(TET_FAIL);
5489 tet_result(TET_PASS);
5493 int UtcDaliTextAlign05(void)
5495 ToolkitTestApplication application;
5496 tet_infoline(" UtcDaliTextAlign05");
5498 // Calculate text alignment.
5500 const std::string fontLatin("TizenSans");
5501 const std::string fontHebrew("TizenSansHebrew");
5502 const std::string fontArabic("TizenSansArabic");
5504 // Set a known font description
5505 FontDescriptionRun fontDescriptionRun01;
5506 fontDescriptionRun01.characterRun.characterIndex = 0u;
5507 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5508 fontDescriptionRun01.familyLength = fontLatin.size();
5509 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5510 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5511 fontDescriptionRun01.familyDefined = true;
5512 fontDescriptionRun01.weightDefined = false;
5513 fontDescriptionRun01.widthDefined = false;
5514 fontDescriptionRun01.slantDefined = false;
5515 fontDescriptionRun01.sizeDefined = false;
5517 FontDescriptionRun fontDescriptionRun02;
5518 fontDescriptionRun02.characterRun.characterIndex = 12u;
5519 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5520 fontDescriptionRun02.familyLength = fontHebrew.size();
5521 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5522 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5523 fontDescriptionRun02.familyDefined = true;
5524 fontDescriptionRun02.weightDefined = false;
5525 fontDescriptionRun02.widthDefined = false;
5526 fontDescriptionRun02.slantDefined = false;
5527 fontDescriptionRun02.sizeDefined = false;
5529 FontDescriptionRun fontDescriptionRun03;
5530 fontDescriptionRun03.characterRun.characterIndex = 22u;
5531 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5532 fontDescriptionRun03.familyLength = fontArabic.size();
5533 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5534 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5535 fontDescriptionRun03.familyDefined = true;
5536 fontDescriptionRun03.weightDefined = false;
5537 fontDescriptionRun03.widthDefined = false;
5538 fontDescriptionRun03.slantDefined = false;
5539 fontDescriptionRun03.sizeDefined = false;
5541 FontDescriptionRun fontDescriptionRun04;
5542 fontDescriptionRun04.characterRun.characterIndex = 36u;
5543 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5544 fontDescriptionRun04.familyLength = fontLatin.size();
5545 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5546 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5547 fontDescriptionRun04.familyDefined = true;
5548 fontDescriptionRun04.weightDefined = false;
5549 fontDescriptionRun04.widthDefined = false;
5550 fontDescriptionRun04.slantDefined = false;
5551 fontDescriptionRun04.sizeDefined = false;
5553 FontDescriptionRun fontDescriptionRun05;
5554 fontDescriptionRun05.characterRun.characterIndex = 48u;
5555 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5556 fontDescriptionRun05.familyLength = fontLatin.size();
5557 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5558 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5559 fontDescriptionRun05.familyDefined = true;
5560 fontDescriptionRun05.weightDefined = false;
5561 fontDescriptionRun05.widthDefined = false;
5562 fontDescriptionRun05.slantDefined = false;
5563 fontDescriptionRun05.sizeDefined = false;
5565 FontDescriptionRun fontDescriptionRun06;
5566 fontDescriptionRun06.characterRun.characterIndex = 60u;
5567 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5568 fontDescriptionRun06.familyLength = fontArabic.size();
5569 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5570 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5571 fontDescriptionRun06.familyDefined = true;
5572 fontDescriptionRun06.weightDefined = false;
5573 fontDescriptionRun06.widthDefined = false;
5574 fontDescriptionRun06.slantDefined = false;
5575 fontDescriptionRun06.sizeDefined = false;
5577 Vector<FontDescriptionRun> fontDescriptionRuns;
5578 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5579 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5580 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5581 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5582 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5583 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5585 float positions[] = {0.f, 0.f, 14.f, 9.f, 0.f, 0.f};
5587 Size textArea(100.f, 300.f);
5590 "Center alignment for the mid paragraph.",
5591 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5594 fontDescriptionRuns.Begin(),
5595 Text::HorizontalAlignment::CENTER,
5596 Text::VerticalAlignment::TOP,
5601 Dali::LayoutDirection::LEFT_TO_RIGHT,
5604 if(!AlignTest(data))
5606 tet_result(TET_FAIL);
5609 tet_result(TET_PASS);
5613 int UtcDaliTextAlign06(void)
5615 ToolkitTestApplication application;
5616 tet_infoline(" UtcDaliTextAlign06");
5618 // Calculate text alignment.
5620 const std::string fontLatin("TizenSans");
5621 const std::string fontHebrew("TizenSansHebrew");
5622 const std::string fontArabic("TizenSansArabic");
5624 // Set a known font description
5625 FontDescriptionRun fontDescriptionRun01;
5626 fontDescriptionRun01.characterRun.characterIndex = 0u;
5627 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5628 fontDescriptionRun01.familyLength = fontLatin.size();
5629 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5630 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5631 fontDescriptionRun01.familyDefined = true;
5632 fontDescriptionRun01.weightDefined = false;
5633 fontDescriptionRun01.widthDefined = false;
5634 fontDescriptionRun01.slantDefined = false;
5635 fontDescriptionRun01.sizeDefined = false;
5637 FontDescriptionRun fontDescriptionRun02;
5638 fontDescriptionRun02.characterRun.characterIndex = 12u;
5639 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5640 fontDescriptionRun02.familyLength = fontHebrew.size();
5641 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5642 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5643 fontDescriptionRun02.familyDefined = true;
5644 fontDescriptionRun02.weightDefined = false;
5645 fontDescriptionRun02.widthDefined = false;
5646 fontDescriptionRun02.slantDefined = false;
5647 fontDescriptionRun02.sizeDefined = false;
5649 FontDescriptionRun fontDescriptionRun03;
5650 fontDescriptionRun03.characterRun.characterIndex = 22u;
5651 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5652 fontDescriptionRun03.familyLength = fontArabic.size();
5653 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5654 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5655 fontDescriptionRun03.familyDefined = true;
5656 fontDescriptionRun03.weightDefined = false;
5657 fontDescriptionRun03.widthDefined = false;
5658 fontDescriptionRun03.slantDefined = false;
5659 fontDescriptionRun03.sizeDefined = false;
5661 FontDescriptionRun fontDescriptionRun04;
5662 fontDescriptionRun04.characterRun.characterIndex = 36u;
5663 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5664 fontDescriptionRun04.familyLength = fontLatin.size();
5665 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5666 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5667 fontDescriptionRun04.familyDefined = true;
5668 fontDescriptionRun04.weightDefined = false;
5669 fontDescriptionRun04.widthDefined = false;
5670 fontDescriptionRun04.slantDefined = false;
5671 fontDescriptionRun04.sizeDefined = false;
5673 FontDescriptionRun fontDescriptionRun05;
5674 fontDescriptionRun05.characterRun.characterIndex = 48u;
5675 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5676 fontDescriptionRun05.familyLength = fontLatin.size();
5677 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5678 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5679 fontDescriptionRun05.familyDefined = true;
5680 fontDescriptionRun05.weightDefined = false;
5681 fontDescriptionRun05.widthDefined = false;
5682 fontDescriptionRun05.slantDefined = false;
5683 fontDescriptionRun05.sizeDefined = false;
5685 FontDescriptionRun fontDescriptionRun06;
5686 fontDescriptionRun06.characterRun.characterIndex = 60u;
5687 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5688 fontDescriptionRun06.familyLength = fontArabic.size();
5689 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5690 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5691 fontDescriptionRun06.familyDefined = true;
5692 fontDescriptionRun06.weightDefined = false;
5693 fontDescriptionRun06.widthDefined = false;
5694 fontDescriptionRun06.slantDefined = false;
5695 fontDescriptionRun06.sizeDefined = false;
5697 Vector<FontDescriptionRun> fontDescriptionRuns;
5698 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5699 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5700 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5701 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5702 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5703 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5705 float positions[] = {0.f, 0.f, 0.f, 0.f, 9.f, 16.f};
5707 Size textArea(100.f, 300.f);
5710 "Center alignment for the last paragraph.",
5711 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5714 fontDescriptionRuns.Begin(),
5715 Text::HorizontalAlignment::CENTER,
5716 Text::VerticalAlignment::TOP,
5721 Dali::LayoutDirection::LEFT_TO_RIGHT,
5724 if(!AlignTest(data))
5726 tet_result(TET_FAIL);
5729 tet_result(TET_PASS);
5733 int UtcDaliTextAlign07(void)
5735 ToolkitTestApplication application;
5736 tet_infoline(" UtcDaliTextAlign07");
5738 // Calculate text alignment.
5740 const std::string fontLatin("TizenSans");
5741 const std::string fontHebrew("TizenSansHebrew");
5742 const std::string fontArabic("TizenSansArabic");
5744 // Set a known font description
5745 FontDescriptionRun fontDescriptionRun01;
5746 fontDescriptionRun01.characterRun.characterIndex = 0u;
5747 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5748 fontDescriptionRun01.familyLength = fontLatin.size();
5749 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5750 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5751 fontDescriptionRun01.familyDefined = true;
5752 fontDescriptionRun01.weightDefined = false;
5753 fontDescriptionRun01.widthDefined = false;
5754 fontDescriptionRun01.slantDefined = false;
5755 fontDescriptionRun01.sizeDefined = false;
5757 FontDescriptionRun fontDescriptionRun02;
5758 fontDescriptionRun02.characterRun.characterIndex = 12u;
5759 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5760 fontDescriptionRun02.familyLength = fontHebrew.size();
5761 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5762 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5763 fontDescriptionRun02.familyDefined = true;
5764 fontDescriptionRun02.weightDefined = false;
5765 fontDescriptionRun02.widthDefined = false;
5766 fontDescriptionRun02.slantDefined = false;
5767 fontDescriptionRun02.sizeDefined = false;
5769 FontDescriptionRun fontDescriptionRun03;
5770 fontDescriptionRun03.characterRun.characterIndex = 22u;
5771 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5772 fontDescriptionRun03.familyLength = fontArabic.size();
5773 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5774 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5775 fontDescriptionRun03.familyDefined = true;
5776 fontDescriptionRun03.weightDefined = false;
5777 fontDescriptionRun03.widthDefined = false;
5778 fontDescriptionRun03.slantDefined = false;
5779 fontDescriptionRun03.sizeDefined = false;
5781 FontDescriptionRun fontDescriptionRun04;
5782 fontDescriptionRun04.characterRun.characterIndex = 36u;
5783 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5784 fontDescriptionRun04.familyLength = fontLatin.size();
5785 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5786 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5787 fontDescriptionRun04.familyDefined = true;
5788 fontDescriptionRun04.weightDefined = false;
5789 fontDescriptionRun04.widthDefined = false;
5790 fontDescriptionRun04.slantDefined = false;
5791 fontDescriptionRun04.sizeDefined = false;
5793 FontDescriptionRun fontDescriptionRun05;
5794 fontDescriptionRun05.characterRun.characterIndex = 48u;
5795 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5796 fontDescriptionRun05.familyLength = fontLatin.size();
5797 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5798 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5799 fontDescriptionRun05.familyDefined = true;
5800 fontDescriptionRun05.weightDefined = false;
5801 fontDescriptionRun05.widthDefined = false;
5802 fontDescriptionRun05.slantDefined = false;
5803 fontDescriptionRun05.sizeDefined = false;
5805 FontDescriptionRun fontDescriptionRun06;
5806 fontDescriptionRun06.characterRun.characterIndex = 60u;
5807 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5808 fontDescriptionRun06.familyLength = fontArabic.size();
5809 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5810 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5811 fontDescriptionRun06.familyDefined = true;
5812 fontDescriptionRun06.weightDefined = false;
5813 fontDescriptionRun06.widthDefined = false;
5814 fontDescriptionRun06.slantDefined = false;
5815 fontDescriptionRun06.sizeDefined = false;
5817 Vector<FontDescriptionRun> fontDescriptionRuns;
5818 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5819 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5820 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5821 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5822 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5823 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5825 float positions[] = {19.f, 30.f, 0.f, 0.f, 0.f, 0.f};
5827 Size textArea(100.f, 300.f);
5830 "End alignment for the first paragraph.",
5831 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5834 fontDescriptionRuns.Begin(),
5835 Text::HorizontalAlignment::END,
5836 Text::VerticalAlignment::TOP,
5841 Dali::LayoutDirection::LEFT_TO_RIGHT,
5844 if(!AlignTest(data))
5846 tet_result(TET_FAIL);
5849 tet_result(TET_PASS);
5853 int UtcDaliTextAlign08(void)
5855 ToolkitTestApplication application;
5856 tet_infoline(" UtcDaliTextAlign08");
5858 // Calculate text alignment.
5860 const std::string fontLatin("TizenSans");
5861 const std::string fontHebrew("TizenSansHebrew");
5862 const std::string fontArabic("TizenSansArabic");
5864 // Set a known font description
5865 FontDescriptionRun fontDescriptionRun01;
5866 fontDescriptionRun01.characterRun.characterIndex = 0u;
5867 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5868 fontDescriptionRun01.familyLength = fontLatin.size();
5869 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5870 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5871 fontDescriptionRun01.familyDefined = true;
5872 fontDescriptionRun01.weightDefined = false;
5873 fontDescriptionRun01.widthDefined = false;
5874 fontDescriptionRun01.slantDefined = false;
5875 fontDescriptionRun01.sizeDefined = false;
5877 FontDescriptionRun fontDescriptionRun02;
5878 fontDescriptionRun02.characterRun.characterIndex = 12u;
5879 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
5880 fontDescriptionRun02.familyLength = fontHebrew.size();
5881 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
5882 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
5883 fontDescriptionRun02.familyDefined = true;
5884 fontDescriptionRun02.weightDefined = false;
5885 fontDescriptionRun02.widthDefined = false;
5886 fontDescriptionRun02.slantDefined = false;
5887 fontDescriptionRun02.sizeDefined = false;
5889 FontDescriptionRun fontDescriptionRun03;
5890 fontDescriptionRun03.characterRun.characterIndex = 22u;
5891 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
5892 fontDescriptionRun03.familyLength = fontArabic.size();
5893 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
5894 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
5895 fontDescriptionRun03.familyDefined = true;
5896 fontDescriptionRun03.weightDefined = false;
5897 fontDescriptionRun03.widthDefined = false;
5898 fontDescriptionRun03.slantDefined = false;
5899 fontDescriptionRun03.sizeDefined = false;
5901 FontDescriptionRun fontDescriptionRun04;
5902 fontDescriptionRun04.characterRun.characterIndex = 36u;
5903 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
5904 fontDescriptionRun04.familyLength = fontLatin.size();
5905 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
5906 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
5907 fontDescriptionRun04.familyDefined = true;
5908 fontDescriptionRun04.weightDefined = false;
5909 fontDescriptionRun04.widthDefined = false;
5910 fontDescriptionRun04.slantDefined = false;
5911 fontDescriptionRun04.sizeDefined = false;
5913 FontDescriptionRun fontDescriptionRun05;
5914 fontDescriptionRun05.characterRun.characterIndex = 48u;
5915 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
5916 fontDescriptionRun05.familyLength = fontLatin.size();
5917 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
5918 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
5919 fontDescriptionRun05.familyDefined = true;
5920 fontDescriptionRun05.weightDefined = false;
5921 fontDescriptionRun05.widthDefined = false;
5922 fontDescriptionRun05.slantDefined = false;
5923 fontDescriptionRun05.sizeDefined = false;
5925 FontDescriptionRun fontDescriptionRun06;
5926 fontDescriptionRun06.characterRun.characterIndex = 60u;
5927 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
5928 fontDescriptionRun06.familyLength = fontArabic.size();
5929 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
5930 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
5931 fontDescriptionRun06.familyDefined = true;
5932 fontDescriptionRun06.weightDefined = false;
5933 fontDescriptionRun06.widthDefined = false;
5934 fontDescriptionRun06.slantDefined = false;
5935 fontDescriptionRun06.sizeDefined = false;
5937 Vector<FontDescriptionRun> fontDescriptionRuns;
5938 fontDescriptionRuns.PushBack(fontDescriptionRun01);
5939 fontDescriptionRuns.PushBack(fontDescriptionRun02);
5940 fontDescriptionRuns.PushBack(fontDescriptionRun03);
5941 fontDescriptionRuns.PushBack(fontDescriptionRun04);
5942 fontDescriptionRuns.PushBack(fontDescriptionRun05);
5943 fontDescriptionRuns.PushBack(fontDescriptionRun06);
5945 float positions[] = {0.f, 0.f, -4.f, 0.f, 0.f, 0.f};
5947 Size textArea(100.f, 300.f);
5950 "End alignment for the mid paragraph.",
5951 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
5954 fontDescriptionRuns.Begin(),
5955 Text::HorizontalAlignment::END,
5956 Text::VerticalAlignment::TOP,
5961 Dali::LayoutDirection::LEFT_TO_RIGHT,
5964 if(!AlignTest(data))
5966 tet_result(TET_FAIL);
5969 tet_result(TET_PASS);
5973 int UtcDaliTextAlign09(void)
5975 ToolkitTestApplication application;
5976 tet_infoline(" UtcDaliTextAlign09");
5978 // Calculate text alignment.
5980 const std::string fontLatin("TizenSans");
5981 const std::string fontHebrew("TizenSansHebrew");
5982 const std::string fontArabic("TizenSansArabic");
5984 // Set a known font description
5985 FontDescriptionRun fontDescriptionRun01;
5986 fontDescriptionRun01.characterRun.characterIndex = 0u;
5987 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
5988 fontDescriptionRun01.familyLength = fontLatin.size();
5989 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
5990 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
5991 fontDescriptionRun01.familyDefined = true;
5992 fontDescriptionRun01.weightDefined = false;
5993 fontDescriptionRun01.widthDefined = false;
5994 fontDescriptionRun01.slantDefined = false;
5995 fontDescriptionRun01.sizeDefined = false;
5997 FontDescriptionRun fontDescriptionRun02;
5998 fontDescriptionRun02.characterRun.characterIndex = 12u;
5999 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6000 fontDescriptionRun02.familyLength = fontHebrew.size();
6001 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6002 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6003 fontDescriptionRun02.familyDefined = true;
6004 fontDescriptionRun02.weightDefined = false;
6005 fontDescriptionRun02.widthDefined = false;
6006 fontDescriptionRun02.slantDefined = false;
6007 fontDescriptionRun02.sizeDefined = false;
6009 FontDescriptionRun fontDescriptionRun03;
6010 fontDescriptionRun03.characterRun.characterIndex = 22u;
6011 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6012 fontDescriptionRun03.familyLength = fontArabic.size();
6013 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6014 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6015 fontDescriptionRun03.familyDefined = true;
6016 fontDescriptionRun03.weightDefined = false;
6017 fontDescriptionRun03.widthDefined = false;
6018 fontDescriptionRun03.slantDefined = false;
6019 fontDescriptionRun03.sizeDefined = false;
6021 FontDescriptionRun fontDescriptionRun04;
6022 fontDescriptionRun04.characterRun.characterIndex = 36u;
6023 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6024 fontDescriptionRun04.familyLength = fontLatin.size();
6025 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6026 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6027 fontDescriptionRun04.familyDefined = true;
6028 fontDescriptionRun04.weightDefined = false;
6029 fontDescriptionRun04.widthDefined = false;
6030 fontDescriptionRun04.slantDefined = false;
6031 fontDescriptionRun04.sizeDefined = false;
6033 FontDescriptionRun fontDescriptionRun05;
6034 fontDescriptionRun05.characterRun.characterIndex = 48u;
6035 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6036 fontDescriptionRun05.familyLength = fontLatin.size();
6037 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6038 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6039 fontDescriptionRun05.familyDefined = true;
6040 fontDescriptionRun05.weightDefined = false;
6041 fontDescriptionRun05.widthDefined = false;
6042 fontDescriptionRun05.slantDefined = false;
6043 fontDescriptionRun05.sizeDefined = false;
6045 FontDescriptionRun fontDescriptionRun06;
6046 fontDescriptionRun06.characterRun.characterIndex = 60u;
6047 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6048 fontDescriptionRun06.familyLength = fontArabic.size();
6049 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6050 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6051 fontDescriptionRun06.familyDefined = true;
6052 fontDescriptionRun06.weightDefined = false;
6053 fontDescriptionRun06.widthDefined = false;
6054 fontDescriptionRun06.slantDefined = false;
6055 fontDescriptionRun06.sizeDefined = false;
6057 Vector<FontDescriptionRun> fontDescriptionRuns;
6058 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6059 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6060 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6061 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6062 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6063 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6065 float positions[] = {0.f, 0.f, 0.f, 0.f, 19.f, 33.f};
6067 Size textArea(100.f, 300.f);
6070 "End alignment for the last paragraph.",
6071 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6074 fontDescriptionRuns.Begin(),
6075 Text::HorizontalAlignment::END,
6076 Text::VerticalAlignment::TOP,
6081 Dali::LayoutDirection::LEFT_TO_RIGHT,
6084 if(!AlignTest(data))
6086 tet_result(TET_FAIL);
6089 tet_result(TET_PASS);
6093 int UtcDaliTextAlign10(void)
6095 ToolkitTestApplication application;
6096 tet_infoline(" UtcDaliTextAlign10");
6098 // Calculate text alignment.
6100 const std::string fontLatin("TizenSans");
6101 const std::string fontHebrew("TizenSansHebrew");
6102 const std::string fontArabic("TizenSansArabic");
6104 // Set a known font description
6105 FontDescriptionRun fontDescriptionRun01;
6106 fontDescriptionRun01.characterRun.characterIndex = 0u;
6107 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6108 fontDescriptionRun01.familyLength = fontLatin.size();
6109 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6110 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6111 fontDescriptionRun01.familyDefined = true;
6112 fontDescriptionRun01.weightDefined = false;
6113 fontDescriptionRun01.widthDefined = false;
6114 fontDescriptionRun01.slantDefined = false;
6115 fontDescriptionRun01.sizeDefined = false;
6117 FontDescriptionRun fontDescriptionRun02;
6118 fontDescriptionRun02.characterRun.characterIndex = 12u;
6119 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6120 fontDescriptionRun02.familyLength = fontHebrew.size();
6121 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6122 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6123 fontDescriptionRun02.familyDefined = true;
6124 fontDescriptionRun02.weightDefined = false;
6125 fontDescriptionRun02.widthDefined = false;
6126 fontDescriptionRun02.slantDefined = false;
6127 fontDescriptionRun02.sizeDefined = false;
6129 FontDescriptionRun fontDescriptionRun03;
6130 fontDescriptionRun03.characterRun.characterIndex = 22u;
6131 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6132 fontDescriptionRun03.familyLength = fontArabic.size();
6133 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6134 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6135 fontDescriptionRun03.familyDefined = true;
6136 fontDescriptionRun03.weightDefined = false;
6137 fontDescriptionRun03.widthDefined = false;
6138 fontDescriptionRun03.slantDefined = false;
6139 fontDescriptionRun03.sizeDefined = false;
6141 FontDescriptionRun fontDescriptionRun04;
6142 fontDescriptionRun04.characterRun.characterIndex = 36u;
6143 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6144 fontDescriptionRun04.familyLength = fontLatin.size();
6145 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6146 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6147 fontDescriptionRun04.familyDefined = true;
6148 fontDescriptionRun04.weightDefined = false;
6149 fontDescriptionRun04.widthDefined = false;
6150 fontDescriptionRun04.slantDefined = false;
6151 fontDescriptionRun04.sizeDefined = false;
6153 FontDescriptionRun fontDescriptionRun05;
6154 fontDescriptionRun05.characterRun.characterIndex = 48u;
6155 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6156 fontDescriptionRun05.familyLength = fontLatin.size();
6157 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6158 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6159 fontDescriptionRun05.familyDefined = true;
6160 fontDescriptionRun05.weightDefined = false;
6161 fontDescriptionRun05.widthDefined = false;
6162 fontDescriptionRun05.slantDefined = false;
6163 fontDescriptionRun05.sizeDefined = false;
6165 FontDescriptionRun fontDescriptionRun06;
6166 fontDescriptionRun06.characterRun.characterIndex = 60u;
6167 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6168 fontDescriptionRun06.familyLength = fontArabic.size();
6169 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6170 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6171 fontDescriptionRun06.familyDefined = true;
6172 fontDescriptionRun06.weightDefined = false;
6173 fontDescriptionRun06.widthDefined = false;
6174 fontDescriptionRun06.slantDefined = false;
6175 fontDescriptionRun06.sizeDefined = false;
6177 Vector<FontDescriptionRun> fontDescriptionRuns;
6178 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6179 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6180 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6181 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6182 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6183 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6185 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6187 Size textArea(100.f, 300.f);
6190 "Begin alignment for the first paragraph.",
6191 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6194 fontDescriptionRuns.Begin(),
6195 Text::HorizontalAlignment::END,
6196 Text::VerticalAlignment::TOP,
6201 Dali::LayoutDirection::RIGHT_TO_LEFT,
6204 if(!AlignTest(data))
6206 tet_result(TET_FAIL);
6209 tet_result(TET_PASS);
6213 int UtcDaliTextAlign11(void)
6215 ToolkitTestApplication application;
6216 tet_infoline(" UtcDaliTextAlign11");
6218 // Calculate text alignment.
6220 const std::string fontLatin("TizenSans");
6221 const std::string fontHebrew("TizenSansHebrew");
6222 const std::string fontArabic("TizenSansArabic");
6224 // Set a known font description
6225 FontDescriptionRun fontDescriptionRun01;
6226 fontDescriptionRun01.characterRun.characterIndex = 0u;
6227 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6228 fontDescriptionRun01.familyLength = fontLatin.size();
6229 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6230 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6231 fontDescriptionRun01.familyDefined = true;
6232 fontDescriptionRun01.weightDefined = false;
6233 fontDescriptionRun01.widthDefined = false;
6234 fontDescriptionRun01.slantDefined = false;
6235 fontDescriptionRun01.sizeDefined = false;
6237 FontDescriptionRun fontDescriptionRun02;
6238 fontDescriptionRun02.characterRun.characterIndex = 12u;
6239 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6240 fontDescriptionRun02.familyLength = fontHebrew.size();
6241 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6242 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6243 fontDescriptionRun02.familyDefined = true;
6244 fontDescriptionRun02.weightDefined = false;
6245 fontDescriptionRun02.widthDefined = false;
6246 fontDescriptionRun02.slantDefined = false;
6247 fontDescriptionRun02.sizeDefined = false;
6249 FontDescriptionRun fontDescriptionRun03;
6250 fontDescriptionRun03.characterRun.characterIndex = 22u;
6251 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6252 fontDescriptionRun03.familyLength = fontArabic.size();
6253 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6254 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6255 fontDescriptionRun03.familyDefined = true;
6256 fontDescriptionRun03.weightDefined = false;
6257 fontDescriptionRun03.widthDefined = false;
6258 fontDescriptionRun03.slantDefined = false;
6259 fontDescriptionRun03.sizeDefined = false;
6261 FontDescriptionRun fontDescriptionRun04;
6262 fontDescriptionRun04.characterRun.characterIndex = 36u;
6263 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6264 fontDescriptionRun04.familyLength = fontLatin.size();
6265 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6266 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6267 fontDescriptionRun04.familyDefined = true;
6268 fontDescriptionRun04.weightDefined = false;
6269 fontDescriptionRun04.widthDefined = false;
6270 fontDescriptionRun04.slantDefined = false;
6271 fontDescriptionRun04.sizeDefined = false;
6273 FontDescriptionRun fontDescriptionRun05;
6274 fontDescriptionRun05.characterRun.characterIndex = 48u;
6275 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6276 fontDescriptionRun05.familyLength = fontLatin.size();
6277 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6278 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6279 fontDescriptionRun05.familyDefined = true;
6280 fontDescriptionRun05.weightDefined = false;
6281 fontDescriptionRun05.widthDefined = false;
6282 fontDescriptionRun05.slantDefined = false;
6283 fontDescriptionRun05.sizeDefined = false;
6285 FontDescriptionRun fontDescriptionRun06;
6286 fontDescriptionRun06.characterRun.characterIndex = 60u;
6287 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6288 fontDescriptionRun06.familyLength = fontArabic.size();
6289 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6290 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6291 fontDescriptionRun06.familyDefined = true;
6292 fontDescriptionRun06.weightDefined = false;
6293 fontDescriptionRun06.widthDefined = false;
6294 fontDescriptionRun06.slantDefined = false;
6295 fontDescriptionRun06.sizeDefined = false;
6297 Vector<FontDescriptionRun> fontDescriptionRuns;
6298 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6299 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6300 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6301 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6302 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6303 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6305 float positions[] = {19.f, 30.f, 33.f, 0.f, 0.f, 0.f};
6307 Size textArea(100.f, 300.f);
6310 "End alignment for the last paragraph.",
6311 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6314 fontDescriptionRuns.Begin(),
6315 Text::HorizontalAlignment::END,
6316 Text::VerticalAlignment::TOP,
6321 Dali::LayoutDirection::LEFT_TO_RIGHT,
6324 if(!AlignTest(data))
6326 tet_result(TET_FAIL);
6329 tet_result(TET_PASS);
6333 int UtcDaliTextAlign12(void)
6335 ToolkitTestApplication application;
6336 tet_infoline(" UtcDaliTextAlign12");
6338 // Calculate text alignment.
6340 const std::string fontLatin("TizenSans");
6341 const std::string fontHebrew("TizenSansHebrew");
6342 const std::string fontArabic("TizenSansArabic");
6344 // Set a known font description
6345 FontDescriptionRun fontDescriptionRun01;
6346 fontDescriptionRun01.characterRun.characterIndex = 0u;
6347 fontDescriptionRun01.characterRun.numberOfCharacters = 12u;
6348 fontDescriptionRun01.familyLength = fontLatin.size();
6349 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6350 memcpy(fontDescriptionRun01.familyName, fontLatin.c_str(), fontDescriptionRun01.familyLength);
6351 fontDescriptionRun01.familyDefined = true;
6352 fontDescriptionRun01.weightDefined = false;
6353 fontDescriptionRun01.widthDefined = false;
6354 fontDescriptionRun01.slantDefined = false;
6355 fontDescriptionRun01.sizeDefined = false;
6357 FontDescriptionRun fontDescriptionRun02;
6358 fontDescriptionRun02.characterRun.characterIndex = 12u;
6359 fontDescriptionRun02.characterRun.numberOfCharacters = 10u;
6360 fontDescriptionRun02.familyLength = fontHebrew.size();
6361 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6362 memcpy(fontDescriptionRun02.familyName, fontHebrew.c_str(), fontDescriptionRun02.familyLength);
6363 fontDescriptionRun02.familyDefined = true;
6364 fontDescriptionRun02.weightDefined = false;
6365 fontDescriptionRun02.widthDefined = false;
6366 fontDescriptionRun02.slantDefined = false;
6367 fontDescriptionRun02.sizeDefined = false;
6369 FontDescriptionRun fontDescriptionRun03;
6370 fontDescriptionRun03.characterRun.characterIndex = 22u;
6371 fontDescriptionRun03.characterRun.numberOfCharacters = 14u;
6372 fontDescriptionRun03.familyLength = fontArabic.size();
6373 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6374 memcpy(fontDescriptionRun03.familyName, fontArabic.c_str(), fontDescriptionRun03.familyLength);
6375 fontDescriptionRun03.familyDefined = true;
6376 fontDescriptionRun03.weightDefined = false;
6377 fontDescriptionRun03.widthDefined = false;
6378 fontDescriptionRun03.slantDefined = false;
6379 fontDescriptionRun03.sizeDefined = false;
6381 FontDescriptionRun fontDescriptionRun04;
6382 fontDescriptionRun04.characterRun.characterIndex = 36u;
6383 fontDescriptionRun04.characterRun.numberOfCharacters = 12u;
6384 fontDescriptionRun04.familyLength = fontLatin.size();
6385 fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength];
6386 memcpy(fontDescriptionRun04.familyName, fontLatin.c_str(), fontDescriptionRun04.familyLength);
6387 fontDescriptionRun04.familyDefined = true;
6388 fontDescriptionRun04.weightDefined = false;
6389 fontDescriptionRun04.widthDefined = false;
6390 fontDescriptionRun04.slantDefined = false;
6391 fontDescriptionRun04.sizeDefined = false;
6393 FontDescriptionRun fontDescriptionRun05;
6394 fontDescriptionRun05.characterRun.characterIndex = 48u;
6395 fontDescriptionRun05.characterRun.numberOfCharacters = 12u;
6396 fontDescriptionRun05.familyLength = fontLatin.size();
6397 fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength];
6398 memcpy(fontDescriptionRun05.familyName, fontLatin.c_str(), fontDescriptionRun05.familyLength);
6399 fontDescriptionRun05.familyDefined = true;
6400 fontDescriptionRun05.weightDefined = false;
6401 fontDescriptionRun05.widthDefined = false;
6402 fontDescriptionRun05.slantDefined = false;
6403 fontDescriptionRun05.sizeDefined = false;
6405 FontDescriptionRun fontDescriptionRun06;
6406 fontDescriptionRun06.characterRun.characterIndex = 60u;
6407 fontDescriptionRun06.characterRun.numberOfCharacters = 14u;
6408 fontDescriptionRun06.familyLength = fontArabic.size();
6409 fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength];
6410 memcpy(fontDescriptionRun06.familyName, fontArabic.c_str(), fontDescriptionRun06.familyLength);
6411 fontDescriptionRun06.familyDefined = true;
6412 fontDescriptionRun06.weightDefined = false;
6413 fontDescriptionRun06.widthDefined = false;
6414 fontDescriptionRun06.slantDefined = false;
6415 fontDescriptionRun06.sizeDefined = false;
6417 Vector<FontDescriptionRun> fontDescriptionRuns;
6418 fontDescriptionRuns.PushBack(fontDescriptionRun01);
6419 fontDescriptionRuns.PushBack(fontDescriptionRun02);
6420 fontDescriptionRuns.PushBack(fontDescriptionRun03);
6421 fontDescriptionRuns.PushBack(fontDescriptionRun04);
6422 fontDescriptionRuns.PushBack(fontDescriptionRun05);
6423 fontDescriptionRuns.PushBack(fontDescriptionRun06);
6425 float positions[] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
6427 Size textArea(100.f, 300.f);
6430 "Begin alignment for the first paragraph.",
6431 "Hello world שלום עולם\nمرحبا بالعالم Hello world\nHello world مرحبا بالعالم.",
6434 fontDescriptionRuns.Begin(),
6435 Text::HorizontalAlignment::BEGIN,
6436 Text::VerticalAlignment::TOP,
6441 Dali::LayoutDirection::LEFT_TO_RIGHT,
6444 if(!AlignTest(data))
6446 tet_result(TET_FAIL);
6449 tet_result(TET_PASS);
6453 int UtcDaliTextLayoutSetGetDefaultLineSpacing(void)
6455 ToolkitTestApplication application;
6456 tet_infoline(" UtcDaliTextLayoutSetGetDefaultLineSpacing");
6458 Layout::Engine engine;
6459 DALI_TEST_EQUALS(0.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6461 engine.SetDefaultLineSpacing(10.f);
6462 DALI_TEST_EQUALS(10.f, engine.GetDefaultLineSpacing(), Math::MACHINE_EPSILON_1000, TEST_LOCATION);
6464 tet_result(TET_PASS);
6468 int UtcDaliTextLayoutGetGlyphMetrics(void)
6470 tet_infoline(" UtcDaliTextLayoutGetGlyphMetrics");
6472 // Test retrieving metrics from group of characters
6474 const std::string fontFamily("TizenSansHindi");
6476 // Set a known font description
6477 FontDescriptionRun fontDescriptionRun01;
6478 fontDescriptionRun01.characterRun.characterIndex = 0u;
6479 fontDescriptionRun01.characterRun.numberOfCharacters = 2u;
6480 fontDescriptionRun01.familyLength = fontFamily.size();
6481 fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength];
6482 memcpy(fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength);
6483 fontDescriptionRun01.familyDefined = true;
6484 fontDescriptionRun01.weightDefined = false;
6485 fontDescriptionRun01.widthDefined = false;
6486 fontDescriptionRun01.slantDefined = false;
6487 fontDescriptionRun01.sizeDefined = false;
6489 // Set a known font description
6490 FontDescriptionRun fontDescriptionRun02;
6491 fontDescriptionRun02.characterRun.characterIndex = 0u;
6492 fontDescriptionRun02.characterRun.numberOfCharacters = 2u;
6493 fontDescriptionRun02.familyLength = fontFamily.size();
6494 fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength];
6495 memcpy(fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength);
6496 fontDescriptionRun02.familyDefined = true;
6497 fontDescriptionRun02.weightDefined = false;
6498 fontDescriptionRun02.widthDefined = false;
6499 fontDescriptionRun02.slantDefined = false;
6500 fontDescriptionRun02.sizeDefined = false;
6502 // Set a known font description
6503 FontDescriptionRun fontDescriptionRun03;
6504 fontDescriptionRun03.characterRun.characterIndex = 0u;
6505 fontDescriptionRun03.characterRun.numberOfCharacters = 2u;
6506 fontDescriptionRun03.familyLength = fontFamily.size();
6507 fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength];
6508 memcpy(fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength);
6509 fontDescriptionRun03.familyDefined = true;
6510 fontDescriptionRun03.weightDefined = false;
6511 fontDescriptionRun03.widthDefined = false;
6512 fontDescriptionRun03.slantDefined = false;
6513 fontDescriptionRun03.sizeDefined = false;
6515 Vector<FontDescriptionRun> fontDescriptionRuns01;
6516 fontDescriptionRuns01.PushBack(fontDescriptionRun01);
6518 Vector<FontDescriptionRun> fontDescriptionRuns02;
6519 fontDescriptionRuns02.PushBack(fontDescriptionRun02);
6521 Vector<FontDescriptionRun> fontDescriptionRuns03;
6522 fontDescriptionRuns03.PushBack(fontDescriptionRun03);
6525 Size textArea(100.f, 100.f);
6527 // Group: second glyph doesn't exceed the width of the first glyph
6528 float positions01[] = {0.f, -11.f};
6530 struct LineRun line01 =
6542 Vector<LineRun> lines01;
6543 lines01.PushBack(line01);
6545 Size layoutSize01 = Vector2(11.f, 20.f);
6547 // Group: second glyph doesn't exceed the width of the first glyph
6548 float positions02[] = {
6555 struct LineRun line02 =
6567 Vector<LineRun> lines02;
6568 lines02.PushBack(line02);
6570 Size layoutSize02 = Vector2(16.f, 20.f);
6572 // Group: second glyph doesn't exceed the width of the first glyph
6573 float positions03[] = {0.f, -11.f, 2.f, -15.f};
6575 struct LineRun line03 =
6587 Vector<LineRun> lines03;
6588 lines03.PushBack(line03);
6590 Size layoutSize03 = Vector2(11.f, 20.f);
6592 /////////////////////////////
6594 struct LayoutTextData data[] =
6600 fontDescriptionRuns01.Begin(),
6606 Layout::Engine::SINGLE_LINE_BOX,
6610 DevelText::EllipsisPosition::END,
6612 {"Group: second glyph exceeds the width of the first glyph",
6616 fontDescriptionRuns02.Begin(),
6622 Layout::Engine::SINGLE_LINE_BOX,
6626 DevelText::EllipsisPosition::END,
6628 {"Group: second glyph doesn't exceed the width of the first glyph",
6632 fontDescriptionRuns03.Begin(),
6638 Layout::Engine::SINGLE_LINE_BOX,
6642 DevelText::EllipsisPosition::END,
6644 const unsigned int numberOfTests = sizeof(data) / sizeof(LayoutTextData);
6646 for(unsigned int index = 0u; index < numberOfTests; ++index)
6648 ToolkitTestApplication application;
6649 if(!LayoutTextTest(data[index]))
6651 tet_result(TET_FAIL);
6655 tet_result(TET_PASS);