X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Frendering%2Fatlas%2Fatlas-glyph-manager-impl.cpp;h=a3f7efd5eecccc25299680e1bd850de1b19bfbc4;hb=6b0ebeb01bd36475054ec211311763cd82390dd1;hp=0d72be9dde0cfaa7eb7036529a3b980e84e1fdc4;hpb=cf663b87397be0327b7eef6062e01f5d6542cefc;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/rendering/atlas/atlas-glyph-manager-impl.cpp b/dali-toolkit/internal/text/rendering/atlas/atlas-glyph-manager-impl.cpp old mode 100644 new mode 100755 index 0d72be9..a3f7efd --- a/dali-toolkit/internal/text/rendering/atlas/atlas-glyph-manager-impl.cpp +++ b/dali-toolkit/internal/text/rendering/atlas/atlas-glyph-manager-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 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. @@ -41,9 +41,12 @@ namespace Internal AtlasGlyphManager::AtlasGlyphManager() { mAtlasManager = Dali::Toolkit::AtlasManager::New(); + mSampler = Sampler::New(); + mSampler.SetFilterMode( FilterMode::LINEAR, FilterMode::LINEAR ); } void AtlasGlyphManager::Add( const Text::GlyphInfo& glyph, + const Toolkit::AtlasGlyphManager::GlyphStyle& style, const PixelData& bitmap, Dali::Toolkit::AtlasManager::AtlasSlot& slot ) { @@ -57,6 +60,7 @@ void AtlasGlyphManager::Add( const Text::GlyphInfo& glyph, Dali::Texture atlas = mAtlasManager.GetAtlasContainer( slot.mAtlasId ); TextureSet textureSet = TextureSet::New(); textureSet.SetTexture( 0u, atlas ); + textureSet.SetSampler( 0u, mSampler); mAtlasManager.SetTextures( slot.mAtlasId, textureSet ); } @@ -64,6 +68,9 @@ void AtlasGlyphManager::Add( const Text::GlyphInfo& glyph, record.mIndex = glyph.index; record.mImageId = slot.mImageId; record.mCount = 1; + record.mOutlineWidth = style.outline; + record.isItalic = style.isItalic; + record.isBold = style.isBold; // Have glyph records been created for this fontId ? bool foundGlyph = false; @@ -97,8 +104,9 @@ void AtlasGlyphManager::GenerateMeshData( uint32_t imageId, } bool AtlasGlyphManager::IsCached( Text::FontId fontId, - Text::GlyphIndex index, - Dali::Toolkit::AtlasManager::AtlasSlot& slot ) + Text::GlyphIndex index, + const Toolkit::AtlasGlyphManager::GlyphStyle& style, + Dali::Toolkit::AtlasManager::AtlasSlot& slot ) { for ( std::vector< FontGlyphRecord >::iterator fontGlyphRecordIt = mFontGlyphRecords.begin(); fontGlyphRecordIt != mFontGlyphRecords.end(); @@ -110,7 +118,10 @@ bool AtlasGlyphManager::IsCached( Text::FontId fontId, glyphRecordIt != fontGlyphRecordIt->mGlyphRecords.End(); ++glyphRecordIt ) { - if ( glyphRecordIt->mIndex == index ) + if ( ( glyphRecordIt->mIndex == index ) && + ( glyphRecordIt->mOutlineWidth == style.outline ) && + ( glyphRecordIt->isItalic == style.isItalic ) && + ( glyphRecordIt->isBold == style.isBold ) ) { slot.mImageId = glyphRecordIt->mImageId; slot.mAtlasId = mAtlasManager.GetAtlas( slot.mImageId ); @@ -171,7 +182,7 @@ const Toolkit::AtlasGlyphManager::Metrics& AtlasGlyphManager::GetMetrics() return mMetrics; } -void AtlasGlyphManager::AdjustReferenceCount( Text::FontId fontId, Text::GlyphIndex index, int32_t delta ) +void AtlasGlyphManager::AdjustReferenceCount( Text::FontId fontId, Text::GlyphIndex index, const Toolkit::AtlasGlyphManager::GlyphStyle& style, int32_t delta ) { if( 0 != delta ) { @@ -187,7 +198,10 @@ void AtlasGlyphManager::AdjustReferenceCount( Text::FontId fontId, Text::GlyphIn glyphRecordIt != fontGlyphRecordIt->mGlyphRecords.End(); ++glyphRecordIt ) { - if ( glyphRecordIt->mIndex == index ) + if ( ( glyphRecordIt->mIndex == index ) && + ( glyphRecordIt->mOutlineWidth == style.outline ) && + ( glyphRecordIt->isItalic == style.isItalic ) && + ( glyphRecordIt->isBold == style.isBold ) ) { glyphRecordIt->mCount += delta; DALI_ASSERT_DEBUG( glyphRecordIt->mCount >= 0 && "Glyph ref-count should not be negative" );