/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
#include <dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.h>
// EXTERNAL INCLUDES
-#include <dali/integration-api/debug.h>
-#include <dali/devel-api/rendering/renderer.h>
-#include <dali/devel-api/rendering/geometry.h>
+#include <dali/public-api/rendering/geometry.h>
+#include <dali/public-api/rendering/renderer.h>
#include <dali/devel-api/text-abstraction/font-client.h>
+#include <dali/integration-api/debug.h>
// INTERNAL INCLUDES
#include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
TextCacheEntry textCacheEntry;
mDepth = depth;
- const Vector2& actorSize( view.GetControlSize() );
const Vector2& textSize( view.GetLayoutSize() );
const Vector2 halfTextSize( textSize * 0.5f );
const Vector2& shadowOffset( view.GetShadowOffset() );
}
// Create a new image for the glyph
- BufferImage bitmap = mFontClient.CreateBitmap( glyph.fontId, glyph.index );
+ PixelData bitmap = mFontClient.CreateBitmap( glyph.fontId, glyph.index );
if( bitmap )
{
MaxBlockSize& blockSize = mBlockSizes[currentBlockSize];
// For each MeshData object, create a mesh actor and add to the renderable actor
if( !meshContainer.empty() )
{
+ if( !mActor )
+ {
+ // Create a container actor to act as a common parent for text and shadow, to avoid color inheritence issues.
+ mActor = Actor::New();
+ mActor.SetParentOrigin( ParentOrigin::TOP_LEFT );
+ mActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ mActor.SetSize( textSize );
+ }
+
for( std::vector< MeshRecord >::iterator it = meshContainer.begin(),
endIt = meshContainer.end();
it != endIt; ++it )
Actor actor = CreateMeshActor( meshRecord, textSize );
+ // Whether the actor has renderers.
+ const bool hasRenderer = actor.GetRendererCount() > 0u;
+
// Create an effect if necessary
- if( style == STYLE_DROP_SHADOW )
+ if( hasRenderer &&
+ ( style == STYLE_DROP_SHADOW ) )
{
// Change the color of the vertices.
for( Vector<AtlasManager::Vertex2D>::Iterator vIt = meshRecord.mMesh.mVertices.Begin(),
vertex.mColor = shadowColor;
}
- // Create a container actor to act as a common parent for text and shadow, to avoid color inheritence issues.
- Actor containerActor = Actor::New();
- containerActor.SetParentOrigin( ParentOrigin::CENTER );
- containerActor.SetSize( actorSize );
-
Actor shadowActor = CreateMeshActor( meshRecord, textSize );
#if defined(DEBUG_ENABLED)
shadowActor.SetName( "Text Shadow renderable actor" );
#endif
// Offset shadow in x and y
shadowActor.RegisterProperty("uOffset", shadowOffset );
- if( actor.GetRendererCount() )
- {
- Dali::Renderer renderer( shadowActor.GetRendererAt( 0 ) );
- int depthIndex = renderer.GetProperty<int>(Dali::Renderer::Property::DEPTH_INDEX);
- renderer.SetProperty( Dali::Renderer::Property::DEPTH_INDEX, depthIndex - 1 );
- containerActor.Add( shadowActor );
- containerActor.Add( actor );
-#if defined(DEBUG_ENABLED)
- containerActor.SetName("TextContainer");
-#endif
- actor = containerActor;
- }
+ Dali::Renderer renderer( shadowActor.GetRendererAt( 0 ) );
+ int depthIndex = renderer.GetProperty<int>(Dali::Renderer::Property::DEPTH_INDEX);
+ renderer.SetProperty( Dali::Renderer::Property::DEPTH_INDEX, depthIndex - 1 );
+ mActor.Add( shadowActor );
}
- if( mActor )
+ if( hasRenderer )
{
mActor.Add( actor );
}
- else
- {
- mActor = actor;
- }
}
}
#if defined(DEBUG_ENABLED)