Changed all property & signal names to lowerCamelCase
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / renderers / border / border-renderer.cpp
index 6542a2c..2192016 100644 (file)
@@ -37,12 +37,12 @@ namespace Internal
 
 namespace
 {
-const char * const RENDERER_TYPE("renderer-type");
-const char * const RENDERER_TYPE_VALUE("border-renderer");
+const char * const RENDERER_TYPE("rendererType");
+const char * const RENDERER_TYPE_VALUE("borderRenderer");
 
-const char * const COLOR_NAME("border-color");
+const char * const COLOR_NAME("borderColor");
 const char * const COLOR_UNIFORM_NAME("uBorderColor");
-const char * const SIZE_NAME("border-size");
+const char * const SIZE_NAME("borderSize");
 const char * const SIZE_UNIFORM_NAME("uBorderSize");
 
 const char * const POSITION_ATTRIBUTE_NAME("aPosition");
@@ -75,8 +75,8 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
 );
 }
 
-BorderRenderer::BorderRenderer()
-: ControlRenderer(),
+BorderRenderer::BorderRenderer( RendererFactoryCache& factoryCache )
+: ControlRenderer( factoryCache ),
   mBorderColor( Color::TRANSPARENT ),
   mBorderSize( 0.f ),
   mBorderColorIndex( Property::INVALID_INDEX ),
@@ -88,10 +88,8 @@ BorderRenderer::~BorderRenderer()
 {
 }
 
-void BorderRenderer::DoInitialize( RendererFactoryCache& factoryCache, const Property::Map& propertyMap )
+void BorderRenderer::DoInitialize( Actor& actor, const Property::Map& propertyMap )
 {
-  Initialize( factoryCache );
-
   Property::Value* color = propertyMap.Find( COLOR_NAME );
   if( !( color && color->Get(mBorderColor) ) )
   {
@@ -114,6 +112,8 @@ void BorderRenderer::SetClipRect( const Rect<int>& clipRect )
 
 void BorderRenderer::DoSetOnStage( Actor& actor )
 {
+  InitializeRenderer();
+
   mBorderColorIndex = (mImpl->mRenderer).RegisterProperty( COLOR_UNIFORM_NAME, mBorderColor );
   if( mBorderColor.a < 1.f )
   {
@@ -130,28 +130,31 @@ void BorderRenderer::DoCreatePropertyMap( Property::Map& map ) const
   map.Insert( SIZE_NAME, mBorderSize );
 }
 
-void BorderRenderer::Initialize( RendererFactoryCache& factoryCache)
+void BorderRenderer::InitializeRenderer()
 {
-  mImpl->mGeometry = factoryCache.GetGeometry( RendererFactoryCache::BORDER_GEOMETRY );
-  if( !(mImpl->mGeometry) )
+  Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::BORDER_GEOMETRY );
+  if( !geometry )
   {
-    mImpl->mGeometry =  CreateBorderGeometry();
-    factoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, mImpl->mGeometry );
+    geometry =  CreateBorderGeometry();
+    mFactoryCache.SaveGeometry( RendererFactoryCache::BORDER_GEOMETRY, geometry );
   }
 
-  mImpl->mShader = factoryCache.GetShader( RendererFactoryCache::BORDER_SHADER );
-  if( !(mImpl->mShader) )
+  Shader shader = mFactoryCache.GetShader( RendererFactoryCache::BORDER_SHADER );
+  if( !shader )
   {
-    mImpl->mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
-    factoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, mImpl->mShader );
+    shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+    mFactoryCache.SaveShader( RendererFactoryCache::BORDER_SHADER, shader );
   }
+
+  Material material = Material::New( shader );
+  mImpl->mRenderer = Renderer::New( geometry, material );
 }
 
 void BorderRenderer::SetBorderColor(const Vector4& color)
 {
   mBorderColor = color;
 
-  if( mImpl->mIsOnStage )
+  if( mImpl->mRenderer )
   {
     (mImpl->mRenderer).SetProperty( mBorderColorIndex, color );
     if( color.a < 1.f &&  (mImpl->mRenderer).GetMaterial().GetBlendMode() != BlendingMode::ON)
@@ -165,7 +168,7 @@ void BorderRenderer::SetBorderSize( float size )
 {
   mBorderSize = size;
 
-  if( mImpl->mIsOnStage )
+  if( mImpl->mRenderer )
   {
     (mImpl->mRenderer).SetProperty( mBorderSizeIndex, size );
   }
@@ -180,11 +183,11 @@ void BorderRenderer::SetBorderSize( float size )
  * | /| /| /|
  * |/ |/ |/ |
  * 4--5--6--7
- * | /|  | /|
- * |/ |  |/ |
+ * |\ |  |\ |
+ * | \|  | \|
  * 8--9--10-11
- * | /| /| /|
- * |/ |/ ||
+ * | /| /||
+ * |/ |/ | \|
  * 12-13-14-15
  */
 Geometry BorderRenderer::CreateBorderGeometry()
@@ -222,19 +225,17 @@ Geometry BorderRenderer::CreateBorderGeometry()
   borderVertices.SetData(borderVertexData);
 
   // Create indices
-  unsigned int indexData[48] = { 0, 4, 1, 1, 4, 5, 1, 5, 2, 2, 5, 6, 2, 6,3, 3, 6, 7,
-                                 4, 8, 5, 5, 8, 9, 6, 10, 7, 7, 10, 11,
-                                 8, 12, 9, 9, 12, 13, 9, 13, 10, 10, 13, 14, 10, 11, 14, 11, 14, 15};
-
+  unsigned int indexData[24] = { 0,4,1,5,2,6,3,7,7,6,11,10,15,14,14,10,13,9,12,8,8,9,4,5 };
   Property::Map indexFormat;
   indexFormat[INDEX_NAME] = Property::INTEGER;
-  PropertyBuffer indices = PropertyBuffer::New( indexFormat, 48 );
+  PropertyBuffer indices = PropertyBuffer::New( indexFormat, 24 );
   indices.SetData(indexData);
 
   // Create the geometry object
   Geometry geometry = Geometry::New();
   geometry.AddVertexBuffer( borderVertices );
   geometry.SetIndexBuffer( indices );
+  geometry.SetGeometryType( Geometry::TRIANGLE_STRIP );
 
   return geometry;
 }