Added custom vertex shader support for NinePatch 61/134961/5
authordevrajsinghchouhan <devraj.singh@samsung.com>
Tue, 20 Jun 2017 10:30:14 +0000 (16:00 +0530)
committerHeeyong Song <heeyong.song@samsung.com>
Mon, 26 Jun 2017 02:18:48 +0000 (11:18 +0900)
Change-Id: I42e9f5bcecf5dcea0bd20d37de8cbd8ddd2f9b5b
Signed-off-by: devrajsinghchouhan <devraj.singh@samsung.com>
Enable Custom Vertex Shader Support for NinePatch Visual.

automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp
dali-toolkit/internal/visuals/npatch/npatch-visual.cpp [changed mode: 0644->0755]

index bec918e..f441dd8 100644 (file)
@@ -1770,8 +1770,10 @@ int UtcDaliNPatchVisualCustomShader(void)
   VisualFactory factory = VisualFactory::Get();
   Property::Map properties;
   Property::Map shader;
   VisualFactory factory = VisualFactory::Get();
   Property::Map properties;
   Property::Map shader;
+  const std::string vertexShader = "Foobar";
   const std::string fragmentShader = "Foobar";
   shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
   const std::string fragmentShader = "Foobar";
   shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader;
+  shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader;
 
   Property::Map transformMap;
   transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
 
   Property::Map transformMap;
   transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
@@ -1809,10 +1811,11 @@ int UtcDaliNPatchVisualCustomShader(void)
   DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
 
   Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
   DALI_TEST_EQUALS( renderer.GetProperty( index ), Property::Value(Vector2(0.5, 0.5)), 0.001, TEST_LOCATION );
 
   Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp
-  // *map["vertex"]; is default here so not verifying it
-
   DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
 
   DALI_TEST_EQUALS( fragmentShader, fragment->Get<std::string>(), TEST_LOCATION );
 
+  Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp
+  DALI_TEST_EQUALS( vertexShader, vertex->Get<std::string>(), TEST_LOCATION );
+
   END_TEST;
 }
 
   END_TEST;
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 6920c7f..9235545
@@ -443,10 +443,17 @@ Shader NPatchVisual::CreateShader()
     }
     hints = mImpl->mCustomShader->mHints;
 
     }
     hints = mImpl->mCustomShader->mHints;
 
+    /* Apply Custom Vertex Shader only if image is 9-patch */
     if( ( xStretchCount == 1 && yStretchCount == 1 ) ||
         ( xStretchCount == 0 && yStretchCount == 0 ) )
     {
     if( ( xStretchCount == 1 && yStretchCount == 1 ) ||
         ( xStretchCount == 0 && yStretchCount == 0 ) )
     {
-      shader = Shader::New( VERTEX_SHADER_3X3, fragmentShader, hints );
+      const char* vertexShader = VERTEX_SHADER_3X3;
+
+      if( !mImpl->mCustomShader->mVertexShader.empty() )
+      {
+        vertexShader = mImpl->mCustomShader->mVertexShader.c_str();
+      }
+      shader = Shader::New( vertexShader, fragmentShader, hints );
     }
     else if( xStretchCount > 0 || yStretchCount > 0)
     {
     }
     else if( xStretchCount > 0 || yStretchCount > 0)
     {