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-Typesetter.cpp;h=c64458acf895908c43547697e0a1ef0a3a9810ec;hp=14f352c26b63bf90e41ab0165a915104ec2e2e5a;hb=020b07151378db83ab8e12eb3e2d51db0ed69996;hpb=2ef1ec2dc06370b206f95db44c0a59259ce2f7d1 diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Typesetter.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Typesetter.cpp index 14f352c..c64458a 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Typesetter.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Typesetter.cpp @@ -18,15 +18,19 @@ #include #include -#include #include +#include #include #include -#include +#include +#include +#include #include #include -#include +#include +#include +#include using namespace Dali; using namespace Toolkit; @@ -34,8 +38,10 @@ using namespace Text; namespace { -const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); +const std::string DEFAULT_FONT_DIR("/resources/fonts"); const PointSize26Dot6 EMOJI_FONT_SIZE = 3840u; // 60 * 64 + +constexpr auto DALI_RENDERED_GLYPH_COMPRESS_POLICY = "DALI_RENDERED_GLYPH_COMPRESS_POLICY"; } // namespace int UtcDaliTextTypesetter(void) @@ -47,8 +53,8 @@ int UtcDaliTextTypesetter(void) ControllerPtr controller = Controller::New(); // Tests the rendering controller has been created. - TypesetterPtr typesetter = Typesetter::New( controller->GetTextModel() ); - DALI_TEST_CHECK( typesetter ); + TypesetterPtr typesetter = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(typesetter); tet_result(TET_PASS); END_TEST; @@ -63,82 +69,293 @@ int UtcDaliTextTypesetterGetViewModel(void) ControllerPtr controller = Controller::New(); // Tests the rendering controller has been created. - TypesetterPtr typesetter = Typesetter::New( controller->GetTextModel() ); - DALI_TEST_CHECK( typesetter ); + TypesetterPtr typesetter = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(typesetter); // Tests the view model has been created. ViewModel* model = typesetter->GetViewModel(); - DALI_TEST_CHECK( NULL != model ); + DALI_TEST_CHECK(NULL != model); + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextRenderingControllerRenderRGBA(void) +{ + tet_infoline(" UtcDaliTextRenderingControllerRenderRGBA"); + ToolkitTestApplication application; + + // Load some fonts. + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); + + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel(controller); + + // Sets the text. + controller->SetMarkupProcessorEnabled(true); + controller->SetText("Hello world \xF0\x9F\x98\x81"); + + // Creates the text's model and relais-out the text. + const Size relayoutSize(120.f, 60.f); + controller->Relayout(relayoutSize); + + // Tests the rendering controller has been created. + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); + + // Renders the text and creates the final bitmap. + PixelData bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); + + // Changes vertical alignment. + controller->SetVerticalAlignment(Text::VerticalAlignment::CENTER); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); + + controller->SetVerticalAlignment(Text::VerticalAlignment::BOTTOM); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); tet_result(TET_PASS); END_TEST; } -int UtcDaliTextRenderingControllerRender(void) +int UtcDaliTextRenderingControllerRenderLuminance(void) { - tet_infoline(" UtcDaliTextRenderingControllerRender"); + tet_infoline(" UtcDaliTextRenderingControllerRenderLuminance"); ToolkitTestApplication application; // Load some fonts. TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - char* pathNamePtr = get_current_dir_name(); - const std::string pathName( pathNamePtr ); - free( pathNamePtr ); + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE ); - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); // Creates a text controller. ControllerPtr controller = Controller::New(); // Configures the text controller similarly to the text-label. - ConfigureTextLabel( controller ); + ConfigureTextLabel(controller); // Sets the text. - controller->SetMarkupProcessorEnabled( true ); - controller->SetText( "Hello world \xF0\x9F\x98\x81" ); + controller->SetMarkupProcessorEnabled(true); + controller->SetText("Hello world \xF0\x9F\x98\x81"); // Creates the text's model and relais-out the text. - const Size relayoutSize( 120.f, 60.f ); - controller->Relayout( relayoutSize ); + const Size relayoutSize(120.f, 60.f); + controller->Relayout(relayoutSize); // Tests the rendering controller has been created. - TypesetterPtr renderingController = Typesetter::New( controller->GetTextModel() ); - DALI_TEST_CHECK( renderingController ); + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); // Renders the text and creates the final bitmap. - PixelData bitmap = renderingController->Render( relayoutSize ); - DALI_TEST_CHECK( bitmap ); + PixelData bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); - DALI_TEST_EQUALS( 120u, bitmap.GetWidth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); - DALI_TEST_EQUALS( Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION ); + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); // Changes vertical alignment. - controller->SetVerticalAlignment( Text::VerticalAlignment::CENTER ); - controller->Relayout( relayoutSize ); + controller->SetVerticalAlignment(Text::VerticalAlignment::CENTER); + controller->Relayout(relayoutSize); // Renders the text and creates the final bitmap. - bitmap = renderingController->Render( relayoutSize ); - DALI_TEST_CHECK( bitmap ); + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); - DALI_TEST_EQUALS( 120u, bitmap.GetWidth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); - DALI_TEST_EQUALS( Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION ); + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); - controller->SetVerticalAlignment( Text::VerticalAlignment::BOTTOM ); - controller->Relayout( relayoutSize ); + controller->SetVerticalAlignment(Text::VerticalAlignment::BOTTOM); + controller->Relayout(relayoutSize); // Renders the text and creates the final bitmap. - bitmap = renderingController->Render( relayoutSize ); - DALI_TEST_CHECK( bitmap ); + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); - DALI_TEST_EQUALS( 120u, bitmap.GetWidth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); - DALI_TEST_EQUALS( Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION ); + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextRenderingControllerRenderWithCompressRGBA(void) +{ + EnvironmentVariable::SetTestEnvironmentVariable(DALI_RENDERED_GLYPH_COMPRESS_POLICY, "m"); + + tet_infoline(" UtcDaliTextRenderingControllerRenderWithCompressRGBA"); + ToolkitTestApplication application; + + // Load some fonts. + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); + + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel(controller); + + // Sets the text. + controller->SetMarkupProcessorEnabled(true); + controller->SetText("Hello world \xF0\x9F\x98\x81"); + + // Creates the text's model and relais-out the text. + const Size relayoutSize(120.f, 60.f); + controller->Relayout(relayoutSize); + + // Tests the rendering controller has been created. + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); + + // Renders the text and creates the final bitmap. + PixelData bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); + + // Changes vertical alignment. + controller->SetVerticalAlignment(Text::VerticalAlignment::CENTER); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); + + controller->SetVerticalAlignment(Text::VerticalAlignment::BOTTOM); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::RGBA8888, bitmap.GetPixelFormat(), TEST_LOCATION); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextRenderingControllerRenderWithCompressLuminance(void) +{ + EnvironmentVariable::SetTestEnvironmentVariable(DALI_RENDERED_GLYPH_COMPRESS_POLICY, "m"); + + tet_infoline(" UtcDaliTextRenderingControllerRenderWithCompressLuminance"); + ToolkitTestApplication application; + + // Load some fonts. + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); + + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/BreezeColorEmoji.ttf", EMOJI_FONT_SIZE); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf"); + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel(controller); + + // Sets the text. + controller->SetMarkupProcessorEnabled(true); + controller->SetText("Hello world \xF0\x9F\x98\x81"); + + // Creates the text's model and relais-out the text. + const Size relayoutSize(120.f, 60.f); + controller->Relayout(relayoutSize); + + // Tests the rendering controller has been created. + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); + + // Renders the text and creates the final bitmap. + PixelData bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); + + // Changes vertical alignment. + controller->SetVerticalAlignment(Text::VerticalAlignment::CENTER); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); + + controller->SetVerticalAlignment(Text::VerticalAlignment::BOTTOM); + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT, Typesetter::RENDER_TEXT_AND_STYLES, false, Pixel::L8); + DALI_TEST_CHECK(bitmap); + + DALI_TEST_EQUALS(120u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); + DALI_TEST_EQUALS(Pixel::L8, bitmap.GetPixelFormat(), TEST_LOCATION); + + tet_result(TET_PASS); + END_TEST; } @@ -151,27 +368,27 @@ int UtcDaliTextTypesetterVerticalLineAlignment(void) ControllerPtr controller = Controller::New(); // Configures the text controller similarly to the text-label. - ConfigureTextLabel( controller ); + ConfigureTextLabel(controller); // Sets the text. - controller->SetMarkupProcessorEnabled( true ); - controller->SetText( "Hello world" ); + controller->SetMarkupProcessorEnabled(true); + controller->SetText("Hello world"); // Creates the text's model and relais-out the text. - const Size relayoutSize( 120.f, 60.f ); - controller->Relayout( relayoutSize ); + const Size relayoutSize(120.f, 60.f); + controller->Relayout(relayoutSize); // Tests the rendering controller has been created. - TypesetterPtr renderingController = Typesetter::New( controller->GetTextModel() ); - DALI_TEST_CHECK( renderingController ); + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); { controller->SetVerticalLineAlignment(Dali::Toolkit::DevelText::VerticalLineAlignment::TOP); controller->Relayout(relayoutSize); // Renders the text and creates the final bitmap. - auto bitmap = renderingController->Render(relayoutSize); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); + auto bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); } { @@ -179,8 +396,8 @@ int UtcDaliTextTypesetterVerticalLineAlignment(void) controller->Relayout(relayoutSize); // Renders the text and creates the final bitmap. - auto bitmap = renderingController->Render(relayoutSize); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); + auto bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); } { @@ -188,10 +405,60 @@ int UtcDaliTextTypesetterVerticalLineAlignment(void) controller->Relayout(relayoutSize); // Renders the text and creates the final bitmap. - auto bitmap = renderingController->Render(relayoutSize); - DALI_TEST_EQUALS( 60u, bitmap.GetHeight(), TEST_LOCATION ); + auto bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + DALI_TEST_EQUALS(60u, bitmap.GetHeight(), TEST_LOCATION); } tet_result(TET_PASS); END_TEST; -} \ No newline at end of file +} + +int UtcDaliTextTypesetterBitmapFont(void) +{ + tet_infoline("UtcDaliTextTypesetterBitmapFont "); + ToolkitTestApplication application; + + DevelText::BitmapFontDescription fontDescription; + fontDescription.name = "Digits"; + fontDescription.underlinePosition = 0.f; + fontDescription.underlineThickness = 0.f; + fontDescription.isColorFont = true; + + fontDescription.glyphs.push_back({TEST_RESOURCE_DIR "/fonts/bitmap/u0031.png", "0", 34.f, 0.f}); + fontDescription.glyphs.push_back({TEST_RESOURCE_DIR "/fonts/bitmap/u0032.png", "1", 34.f, 0.f}); + + TextAbstraction::BitmapFont bitmapFont; + DevelText::CreateBitmapFont(fontDescription, bitmapFont); + + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.GetFontId(bitmapFont); + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel(controller); + + // Sets the text. + controller->SetMarkupProcessorEnabled(true); + controller->SetText("0"); + + // Creates the text's model and relais-out the text. + const Size relayoutSize(31.f, 34.f); + controller->Relayout(relayoutSize); + + // Tests the rendering controller has been created. + TypesetterPtr renderingController = Typesetter::New(controller->GetTextModel()); + DALI_TEST_CHECK(renderingController); + + controller->Relayout(relayoutSize); + + // Renders the text and creates the final bitmap. + auto bitmap = renderingController->Render(relayoutSize, Toolkit::DevelText::TextDirection::LEFT_TO_RIGHT); + + DALI_TEST_EQUALS(31u, bitmap.GetWidth(), TEST_LOCATION); + DALI_TEST_EQUALS(34u, bitmap.GetHeight(), TEST_LOCATION); + + tet_result(TET_PASS); + END_TEST; +}