Purge underscored header file barriers
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / shader-effects / alpha-discard-effect.h
index c96f143..ec2fe78 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H__
-#define __DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H__
+#ifndef DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H
+#define DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H
 
 /*
- * 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.
  */
 
 // EXTERNAL INCLUDES
-#include <dali/public-api/shader-effects/shader-effect.h>
+#include <dali/public-api/object/property-map.h>
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/public-api/visuals/visual-properties.h>
 
 namespace Dali
 {
@@ -28,44 +31,47 @@ namespace Toolkit
 {
 
 /**
+ * @brief Creates a new Alpha discard effect
+ *
  * Alpha discard effect is used to discard fragments when the alpha colour value is below a threshold.
  * This is useful for stenciling.
  *
  * Usage example:
  *
- *   ImageActor actor = ImageActor::New( Image( EXAMPLE_IMAGE_PATH ) );
- *   AlphaDiscardEffect alphaDiscardEffect = AlphaDiscardEffect::New();
- *   actor.SetShaderEffect( alphaDiscardEffect );
+ *   ImageView actor = ImageView::New( EXAMPLE_IMAGE_PATH );
+ *   Property::Map alphaDiscardEffect = CreateAlphaDiscardEffect();
+ *   actor.SetProperty( ImageView::Property::IMAGE, alphaDiscardEffect );
+ *
+ * @return A property map of the required shaders.
  */
-class DALI_IMPORT_API AlphaDiscardEffect : public ShaderEffect
+inline Property::Map CreateAlphaDiscardEffect()
 {
-public:
-
-  /**
-   * Create an empty AlphaDiscardEffect handle.
-   */
-  AlphaDiscardEffect();
-
-  /**
-   * @brief Destructor
-   *
-   * This is non-virtual since derived Handle types must not contain data or virtual methods.
-   */
-  ~AlphaDiscardEffect();
+  const char* ALPHA_DISCARD_FRAGMENT_SHADER_SOURCE =
+      "varying mediump vec2 vTexCoord;                                \n"
+      "                                                               \n"
+      "uniform sampler2D sTexture;                                    \n"
+      "uniform lowp vec4 uColor;                                      \n"
+      "void main()                                                    \n"
+      "{                                                              \n"
+      "  mediump vec4 color = texture2D( sTexture, vTexCoord );       \n"
+      "  if(color.a <= 0.0001)                                        \n"
+      "  {                                                            \n"
+      "    discard;                                                   \n"
+      "  }                                                            \n"
+      "  gl_FragColor = color * uColor;                               \n"
+      "}                                                              \n";
 
-  /**
-   * Create a AlphaDiscardEffect.
-   * @return A handle to a newly allocated AlphaDiscardEffect.
-   */
-  static AlphaDiscardEffect New();
+  Property::Map map;
 
-private: // Not intended for application developers
+  Property::Map customShader;
+  customShader[ Visual::Shader::Property::FRAGMENT_SHADER ] = ALPHA_DISCARD_FRAGMENT_SHADER_SOURCE;
 
-  DALI_INTERNAL AlphaDiscardEffect( ShaderEffect handle );
-};
+  map[ Toolkit::Visual::Property::SHADER ] = customShader;
+  return map;
+}
 
 } // namespace Toolkit
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H__
+#endif // DALI_TOOLKIT_ALPHA_DISCARD_EFFECT_H