X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Text-Shaping.cpp;h=9dd7d57650264aeccbbcda264ae74c102d60c6fa;hp=e4464fd6a8189bde7b5781961c34a5cce2dea67b;hb=80101813efffed23b09ba72af9f65e36cccfbd58;hpb=ee431c9e2b342243f9e0e2b6bafca7505d321457 diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp old mode 100644 new mode 100755 index e4464fd..9dd7d57 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Shaping.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -44,6 +45,7 @@ using namespace Text; namespace { +const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); struct GlyphInfoData { @@ -55,6 +57,8 @@ struct GlyphInfoData float yBearing; ///< The distance from the baseline to the topmost border of the glyph float advance; ///< The distance to move the cursor for this glyph float scaleFactor; ///< The scaling applied (fixed-size fonts only) + bool isItalicRequired; ///< Whether the italic style is required. + bool isBoldRequired; ///< Whether the bold style is required. }; bool IsEqualGlyph ( const GlyphInfoData& glyphData, const GlyphInfo& glyph ) @@ -91,6 +95,14 @@ bool IsEqualGlyph ( const GlyphInfoData& glyphData, const GlyphInfo& glyph ) { return false; } + if( glyphData.isItalicRequired != glyph.isItalicRequired ) + { + return false; + } + if( glyphData.isBoldRequired != glyph.isBoldRequired ) + { + return false; + } return true; } @@ -107,27 +119,31 @@ struct ShapeInfoData Length* charactersPerGlyph; ///< The characters per glyph. uint32_t expectedNumberOfNewParagraphGlyphs; ///< The expected number of glyphs. GlyphIndex* newParagraphGlyphs; ///< Indices to the new paragraphs glyphs. + Vector fontDescriptions; ///< Fonts which is used for text. }; bool ShapeInfoTest( const ShapeInfoData& data ) { // 1) Create the model. - LogicalModelPtr logicalModel; - VisualModelPtr visualModel; + ModelPtr textModel; MetricsPtr metrics; Size textArea(100.f, 60.f); Size layoutSize; const Vector fontDescriptions; const LayoutOptions options; + CreateTextModel( data.text, textArea, - fontDescriptions, + data.fontDescriptions, options, layoutSize, - logicalModel, - visualModel, - metrics ); + textModel, + metrics, + false ); + + LogicalModelPtr logicalModel = textModel->mLogicalModel; + VisualModelPtr visualModel = textModel->mVisualModel; // 2) Clear the model. @@ -223,6 +239,33 @@ bool ShapeInfoTest( const ShapeInfoData& data ) if( !IsEqualGlyph( data.glyphs[index], glyphs[index] ) ) { std::cout << " different glyph info, index : " << index << std::endl; + + const GlyphInfo& glyphInfo = glyphs[index]; + std::cout << " fontId : " << glyphInfo.fontId << std::endl; + std::cout << " index : " << glyphInfo.index << std::endl; + std::cout << " width : " << glyphInfo.width << std::endl; + std::cout << " height : " << glyphInfo.height << std::endl; + std::cout << " xBearing : " << glyphInfo.xBearing << std::endl; + std::cout << " yBearing : " << glyphInfo.yBearing << std::endl; + std::cout << " advance : " << glyphInfo.advance << std::endl; + std::cout << " scaleFactor : " << glyphInfo.scaleFactor << std::endl; + std::cout << " isItalicRequired : " << glyphInfo.isItalicRequired << std::endl; + std::cout << " isBoldRequired : " << glyphInfo.isBoldRequired << std::endl; + + std::cout << " Expected : " << std::endl; + const GlyphInfoData& expectedGlyphInfo = data.glyphs[index]; + std::cout << " fontId : " << expectedGlyphInfo.fontId << std::endl; + std::cout << " index : " << expectedGlyphInfo.index << std::endl; + std::cout << " width : " << expectedGlyphInfo.width << std::endl; + std::cout << " height : " << expectedGlyphInfo.height << std::endl; + std::cout << " xBearing : " << expectedGlyphInfo.xBearing << std::endl; + std::cout << " yBearing : " << expectedGlyphInfo.yBearing << std::endl; + std::cout << " advance : " << expectedGlyphInfo.advance << std::endl; + std::cout << " scaleFactor : " << expectedGlyphInfo.scaleFactor << std::endl; + std::cout << " isItalicRequired : " << expectedGlyphInfo.isItalicRequired << std::endl; + std::cout << " isBoldRequired : " << expectedGlyphInfo.isBoldRequired << std::endl; + + return false; } } @@ -263,6 +306,34 @@ bool ShapeInfoTest( const ShapeInfoData& data ) return true; } +void LoadTextShapeFonts() +{ + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.SetDpi( 96u, 96u ); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName( pathNamePtr ); + free( pathNamePtr ); + + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/noto/NotoSansMalayalam-Regular.ttf" ); +} + +void LoadSoftwareStylingFonts() +{ + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.SetDpi( 96u, 96u ); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName( pathNamePtr ); + free( pathNamePtr ); + + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Regular.ttf" ); + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Bold.ttf" ); + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-Italic.ttf" ); + fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/roboto/Roboto-BoldItalic.ttf" ); +} + } // namespace ////////////////////////////////////////////////////////// @@ -273,17 +344,17 @@ int UtcDaliTextShape(void) struct GlyphInfoData glyphs02[] = { - { 1u, 43u, 0.f, 0.f, 0.f, 0.f, 12.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 90u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 85u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, + { 1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, }; CharacterIndex characterIndices02[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u }; @@ -291,23 +362,23 @@ int UtcDaliTextShape(void) struct GlyphInfoData glyphs03[] = { - { 1u, 43u, 0.f, 0.f, 0.f, 0.f, 12.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 90u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 85u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, + { 1u, 276u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 317u, 0.f, 0.f, 0.f, 0.f, 11.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, }; CharacterIndex characterIndices03[] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, 16u }; @@ -316,18 +387,18 @@ int UtcDaliTextShape(void) struct GlyphInfoData glyphs04[] = { - { 2u, 160u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 123u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 2u, 153u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 160u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 150u, 0.f, 0.f, 0.f, 0.f, 14.f, 0.f }, - { 2u, 153u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 160u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 151u, 0.f, 0.f, 0.f, 0.f, 12.f, 0.f }, - { 2u, 153u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 160u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 2u, 147u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 2u, 153u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, + { 2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 2u, 27u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, + { 2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 2u, 55u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f }, + { 2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 2u, 56u, 0.f, 0.f, 0.f, 0.f, 19.f, 0.f }, + { 2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 2u, 67u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 2u, 52u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, + { 2u, 59u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, }; CharacterIndex characterIndices04[] = { 0u, 0u, 0u, 2u, 2u, 2u, 4u, 4u, 4u, 6u, 6u, 6u }; @@ -335,79 +406,79 @@ int UtcDaliTextShape(void) struct GlyphInfoData glyphs05[] = { - { 1u, 47u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 85u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 83u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 86u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 88u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 79u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 85u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 86u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 87u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 87u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, + { 1u, 280u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 312u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 310u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 306u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 312u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 314u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 314u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 84u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 88u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 5034u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 81u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 69u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 86u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 311u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 403u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 296u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, - { 1u, 83u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 82u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 86u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 86u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 85u, 0.f, 0.f, 0.f, 0.f, 6.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 70u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 88u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 81u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 71u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 76u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, - { 1u, 68u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 81u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 72u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, - { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, - { 1u, 70u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, - { 1u, 88u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f }, - { 1u, 80u, 0.f, 0.f, 0.f, 0.f, 15.f, 0.f }, - { 1u, 17u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, + { 1u, 310u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 309u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 313u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 312u, 0.f, 0.f, 0.f, 0.f, 5.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 297u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 298u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 303u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 295u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 308u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f }, + { 1u, 299u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 3u, 0.f, 0.f, 0.f, 0.f, 4.f, 0.f }, + { 1u, 297u, 0.f, 0.f, 0.f, 0.f, 7.f, 0.f }, + { 1u, 315u, 0.f, 0.f, 0.f, 0.f, 8.f, 0.f }, + { 1u, 307u, 0.f, 0.f, 0.f, 0.f, 13.f, 0.f }, + { 1u, 4u, 0.f, 0.f, 0.f, 0.f, 3.f, 0.f }, { 1u, 0u, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f }, }; @@ -431,6 +502,160 @@ int UtcDaliTextShape(void) CharacterIndex newParagraphGlyphs06[] = { 49u }; CharacterIndex newParagraphGlyphs07[] = { 73u }; + Vector fontDescriptions01; + Vector fontDescriptions02; + Vector fontDescriptions03; + Vector fontDescriptions04; + Vector fontDescriptions05; + Vector fontDescriptions06; + + const std::string fontFamily( "TizenSans" ); + const std::string fontFamilyMalayalam( "Noto Sans Malayalam" ); + + FontDescriptionRun fontDescriptionRun01 = + { + { + 0u, + 11u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun01.familyLength = fontFamily.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength ); + + fontDescriptions01.PushBack( fontDescriptionRun01 ); + + FontDescriptionRun fontDescriptionRun02 = + { + { + 0u, + 17u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun02.familyLength = fontFamily.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength ); + + fontDescriptions02.PushBack( fontDescriptionRun02 ); + + FontDescriptionRun fontDescriptionRun03 = + { + { + 0u, + 8u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun03.familyLength = fontFamilyMalayalam.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy( fontDescriptionRun03.familyName, fontFamilyMalayalam.c_str(), fontDescriptionRun03.familyLength ); + + fontDescriptions03.PushBack( fontDescriptionRun03 ); + + FontDescriptionRun fontDescriptionRun04 = + { + { + 0u, + 75u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun04.familyLength = fontFamily.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy( fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength ); + + fontDescriptions04.PushBack( fontDescriptionRun04 ); + + FontDescriptionRun fontDescriptionRun05 = + { + { + 0u, + 75u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun05.familyLength = fontFamily.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy( fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength ); + + fontDescriptions05.PushBack( fontDescriptionRun05 ); + + FontDescriptionRun fontDescriptionRun06 = + { + { + 0u, + 75u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun06.familyLength = fontFamily.size(); + fontDescriptionRun06.familyName = new char[fontDescriptionRun06.familyLength]; + memcpy( fontDescriptionRun06.familyName, fontFamily.c_str(), fontDescriptionRun06.familyLength ); + + fontDescriptions06.PushBack( fontDescriptionRun06 ); + struct ShapeInfoData data[] = { { @@ -439,11 +664,11 @@ int UtcDaliTextShape(void) 0u, 0u, 0u, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, 0u, - NULL + nullptr }, { "Latin script", @@ -455,7 +680,8 @@ int UtcDaliTextShape(void) characterIndices02, charactersPerGlyph02, 0u, - NULL + nullptr, + fontDescriptions01 }, { "Latin script. Some paragraphs.", @@ -467,7 +693,8 @@ int UtcDaliTextShape(void) characterIndices03, charactersPerGlyph03, 2u, - newParagraphGlyphs03 + newParagraphGlyphs03, + fontDescriptions02 }, { "Malayalam script. More glyphs than characters.", @@ -479,7 +706,8 @@ int UtcDaliTextShape(void) characterIndices04, charactersPerGlyph04, 0u, - NULL + nullptr, + fontDescriptions03 }, { "Latin script with some paragraphs. Update initial paragraph.", @@ -491,7 +719,8 @@ int UtcDaliTextShape(void) characterIndices05, charactersPerGlyph05, 1u, - newParagraphGlyphs05 + newParagraphGlyphs05, + fontDescriptions04 }, { "Latin script with some paragraphs. Update mid paragraph.", @@ -503,7 +732,8 @@ int UtcDaliTextShape(void) characterIndices05, charactersPerGlyph05, 1u, - newParagraphGlyphs06 + newParagraphGlyphs06, + fontDescriptions05 }, { "Latin script with some paragraphs. Update final paragraph.", @@ -515,7 +745,8 @@ int UtcDaliTextShape(void) characterIndices05, charactersPerGlyph05, 1u, - newParagraphGlyphs07 + newParagraphGlyphs07, + fontDescriptions06 }, }; const unsigned int numberOfTests = 7u; @@ -523,6 +754,200 @@ int UtcDaliTextShape(void) for( unsigned int index = 0u; index < numberOfTests; ++index ) { ToolkitTestApplication application; + LoadTextShapeFonts(); + + if( !ShapeInfoTest( data[index] ) ) + { + tet_result(TET_FAIL); + } + } + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextSoftwareStyling(void) +{ + tet_infoline(" UtcDaliTextSoftwareStyling"); + + struct GlyphInfoData glyphs01[] = + { + { 4u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true }, + { 4u, 39u, 0.f, 0.f, 0.f, 0.f, 9.f, 0.f, true, true }, + { 4u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true }, + { 4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true }, + }; + struct GlyphInfoData glyphs02[] = + { + { 1u, 38u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false, false }, + { 2u, 39u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, false, true }, + { 3u, 40u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, false }, + { 4u, 41u, 0.f, 0.f, 0.f, 0.f, 10.f, 0.f, true, true }, + }; + + CharacterIndex characterIndices[] = { 0u, 1u, 2u, 3u }; + Length charactersPerGlyph[] = { 1u, 1u, 1u, 1u }; + + Vector fontDescriptions01; + Vector fontDescriptions02; + + const std::string fontFamily( "Roboto" ); + + FontDescriptionRun fontDescriptionRun01 = + { + { + 0u, + 4u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::BOLD, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::ITALIC, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + true, + false, + true, + false + }; + fontDescriptionRun01.familyLength = fontFamily.size(); + fontDescriptionRun01.familyName = new char[fontDescriptionRun01.familyLength]; + memcpy( fontDescriptionRun01.familyName, fontFamily.c_str(), fontDescriptionRun01.familyLength ); + + fontDescriptions01.PushBack(fontDescriptionRun01); + + FontDescriptionRun fontDescriptionRun02 = + { + { + 0u, + 1u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + false, + false + }; + fontDescriptionRun02.familyLength = fontFamily.size(); + fontDescriptionRun02.familyName = new char[fontDescriptionRun02.familyLength]; + memcpy( fontDescriptionRun02.familyName, fontFamily.c_str(), fontDescriptionRun02.familyLength ); + + FontDescriptionRun fontDescriptionRun03 = + { + { + 1u, + 1u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::BOLD, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::NONE, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + true, + false, + false, + false + }; + fontDescriptionRun03.familyLength = fontFamily.size(); + fontDescriptionRun03.familyName = new char[fontDescriptionRun03.familyLength]; + memcpy( fontDescriptionRun03.familyName, fontFamily.c_str(), fontDescriptionRun03.familyLength ); + + FontDescriptionRun fontDescriptionRun04 = + { + { + 2u, + 1u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::NONE, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::ITALIC, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + false, + false, + true, + false + }; + fontDescriptionRun04.familyLength = fontFamily.size(); + fontDescriptionRun04.familyName = new char[fontDescriptionRun04.familyLength]; + memcpy( fontDescriptionRun04.familyName, fontFamily.c_str(), fontDescriptionRun04.familyLength ); + + FontDescriptionRun fontDescriptionRun05 = + { + { + 3u, + 1u + }, + nullptr, + 0u, + TextAbstraction::FontWeight::BOLD, + TextAbstraction::FontWidth::NONE, + TextAbstraction::FontSlant::ITALIC, + TextAbstraction::FontClient::DEFAULT_POINT_SIZE, + true, + true, + false, + true, + false + }; + fontDescriptionRun05.familyLength = fontFamily.size(); + fontDescriptionRun05.familyName = new char[fontDescriptionRun05.familyLength]; + memcpy( fontDescriptionRun05.familyName, fontFamily.c_str(), fontDescriptionRun05.familyLength ); + + fontDescriptions02.PushBack(fontDescriptionRun02); + fontDescriptions02.PushBack(fontDescriptionRun03); + fontDescriptions02.PushBack(fontDescriptionRun04); + fontDescriptions02.PushBack(fontDescriptionRun05); + + + struct ShapeInfoData data[] = + { + { + "Latin script. Characters have same font description", + "ABCD", + 0u, + 4u, + 4u, + glyphs01, + characterIndices, + charactersPerGlyph, + 0u, + nullptr, + fontDescriptions01 + }, + { + "Latin script. Each character has different font description.", + "ABCD", + 0u, + 4u, + 4u, + glyphs02, + characterIndices, + charactersPerGlyph, + 0u, + nullptr, + fontDescriptions02 + } + }; + + const unsigned int numberOfTests = 2u; + + for( unsigned int index = 0u; index < numberOfTests; ++index ) + { + ToolkitTestApplication application; + LoadSoftwareStylingFonts(); + if( !ShapeInfoTest( data[index] ) ) { tet_result(TET_FAIL);