From: ali198724 Date: Sun, 14 Mar 2021 13:01:35 +0000 (+0200) Subject: Allow Large font size in dali X-Git-Tag: dali_2.0.21~1^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=16dbd4627dd1aedbac74579eb1bfd6478d64a97d Allow Large font size in dali - This is done by allowing larger Atlas size, but make restriction for max 1024 size - Padding will be handled when calculating the new atlas size - If Max Atlas is not enough, we will fall back to default old behavior. - This will service rendering font size even larger 500pt which services almost all users needs Change-Id: Ib05abbc0eced6f440451b4ecf8cc8cc4640c09c8 --- diff --git a/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp b/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp index 6b1d82b..208460c 100644 --- a/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp +++ b/dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp @@ -48,6 +48,9 @@ const float HALF(0.5f); const float ONE(1.0f); const uint32_t DEFAULT_ATLAS_WIDTH = 512u; const uint32_t DEFAULT_ATLAS_HEIGHT = 512u; +const uint32_t MAX_ATLAS_WIDTH = 1024u; +const uint32_t MAX_ATLAS_HEIGHT = 1024u; +const uint32_t DOUBLE_PIXEL_PADDING = 4u;//Padding will be added twice to Atlas const uint16_t NO_OUTLINE = 0u; } // namespace @@ -245,8 +248,21 @@ struct AtlasRenderer::Impl // If CheckAtlas in AtlasManager::Add can't fit the bitmap in the current atlas it will create a new atlas // Setting the block size and size of new atlas does not mean a new one will be created. An existing atlas may still surffice. - mGlyphManager.SetNewAtlasSize(DEFAULT_ATLAS_WIDTH, - DEFAULT_ATLAS_HEIGHT, + uint32_t default_width = DEFAULT_ATLAS_WIDTH; + uint32_t default_height = DEFAULT_ATLAS_HEIGHT; + + while ( + (blockSize.mNeededBlockWidth >= (default_width - (DOUBLE_PIXEL_PADDING + 1u)) || + blockSize.mNeededBlockHeight >= (default_height - (DOUBLE_PIXEL_PADDING + 1u))) + && + (default_width < MAX_ATLAS_WIDTH && + default_height < MAX_ATLAS_HEIGHT)) + { + default_width <<= 1u; + default_height <<= 1u; + } + mGlyphManager.SetNewAtlasSize(default_width, + default_height, blockSize.mNeededBlockWidth, blockSize.mNeededBlockHeight);