Create Renderer when the Visual is created
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / wireframe / wireframe-visual.cpp
index e170655..ead87c0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
@@ -15,7 +15,6 @@
  *
  */
 
-
 // CLASS HEADER
 #include "wireframe-visual.h"
 
@@ -25,6 +24,7 @@
 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
 #include <dali-toolkit/internal/visuals/visual-string-constants.h>
 #include <dali-toolkit/internal/visuals/visual-base-data-impl.h>
+#include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
 
 namespace Dali
 {
@@ -39,43 +39,6 @@ namespace
 {
 const char * const POSITION_ATTRIBUTE_NAME("aPosition");
 const char * const INDEX_NAME("indices");
-
-const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
-attribute mediump vec2  aPosition;\n
-uniform   highp   mat4  uMvpMatrix;\n
-uniform   mediump vec3  uSize;\n
-\n
-
-//Visual size and offset
-uniform mediump vec2 offset;\n
-uniform mediump vec2 size;\n
-uniform mediump vec4 offsetSizeMode;\n
-uniform mediump vec2 origin;\n
-uniform mediump vec2 anchorPoint;\n
-
-vec4 ComputeVertexPosition()\n
-{\n
-  vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );\n
-  vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n
-  return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n
-}\n
-
-void main()\n
-{\n
-  gl_Position = uMvpMatrix * ComputeVertexPosition();\n
-}\n
-);
-
-const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(\n
-  uniform lowp vec4 uColor;\n
-  uniform lowp vec3 mixColor;\n
-\n
-void main()\n
-{\n
-  gl_FragColor = uColor * vec4( mixColor, 1.0 );\n
-}\n
-);
-
 }
 
 WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties )
@@ -87,7 +50,9 @@ WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, const
 
 WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visual::BasePtr actualVisual )
 {
-  return new WireframeVisual( factoryCache, actualVisual );
+  WireframeVisualPtr wireframeVisual(new WireframeVisual(factoryCache, actualVisual));
+  wireframeVisual->Initialize();
+  return wireframeVisual;
 }
 
 WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visual::BasePtr actualVisual, const Property::Map& properties )
@@ -101,7 +66,7 @@ WireframeVisualPtr WireframeVisual::New( VisualFactoryCache& factoryCache, Visua
   {
     wireframeVisual->SetTransformAndSize( transformMap, Vector2::ZERO );
   }
-
+  wireframeVisual->Initialize();
   return wireframeVisual;
 }
 
@@ -170,20 +135,18 @@ void WireframeVisual::DoSetProperties( const Property::Map& propertyMap )
 
 void WireframeVisual::DoSetOnScene( Actor& actor )
 {
-  InitializeRenderer();
-
   actor.AddRenderer( mImpl->mRenderer );
 
   // Wireframe generated and ready to display
   ResourceReady( Toolkit::Visual::ResourceStatus::READY );
 }
 
-void WireframeVisual::InitializeRenderer()
+void WireframeVisual::OnInitialize()
 {
   Shader shader = mFactoryCache.GetShader( VisualFactoryCache::WIREFRAME_SHADER );
   if( !shader )
   {
-    shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+    shader = Shader::New( SHADER_WIREFRAME_VISUAL_SHADER_VERT, SHADER_WIREFRAME_VISUAL_SHADER_FRAG );
     mFactoryCache.SaveShader( VisualFactoryCache::WIREFRAME_SHADER, shader );
   }
 
@@ -216,7 +179,7 @@ Geometry WireframeVisual::CreateQuadWireframeGeometry()
 
   Property::Map quadVertexFormat;
   quadVertexFormat[POSITION_ATTRIBUTE_NAME] = Property::VECTOR2;
-  PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat );
+  VertexBuffer quadVertices = VertexBuffer::New( quadVertexFormat );
   quadVertices.SetData( quadVertexData, 4 );
 
   // Create indices