Revert "[Tizen] Add codes for Dali Windows Backend"
[platform/core/uifw/dali-core.git] / dali / internal / render / data-providers / render-data-provider.h
index ea83092..478718e 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_INTERNAL_SCENE_GRAPH_RENDER_DATA_PROVIDER_H__
 
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 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/internal/render/data-providers/geometry-data-provider.h>
-#include <dali/internal/render/data-providers/material-data-provider.h>
+#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/public-api/rendering/renderer.h>
 #include <dali/internal/render/data-providers/node-data-provider.h>
-#include <dali/internal/render/data-providers/sampler-data-provider.h>
 #include <dali/internal/render/data-providers/property-buffer-data-provider.h>
 #include <dali/internal/render/data-providers/uniform-map-data-provider.h>
+#include <dali/internal/render/renderers/render-sampler.h>
+#include <dali/internal/render/renderers/render-texture.h>
+#include <dali/internal/update/common/animatable-property.h>
 
 namespace Dali
 {
 namespace Internal
 {
+
+struct BlendingOptions;
+
 namespace SceneGraph
 {
 class PropertyBuffer;
@@ -40,21 +45,19 @@ class Shader;
  * the current render. It essentially provides double buffering of the
  * provider accessor through the message system. It does not take ownership
  * of any objects.
- *
- * @todo - Add set of bools to state what changed (For improving performance)
  */
 class RenderDataProvider
 {
 public:
   typedef Dali::Vector< const PropertyBufferDataProvider* > VertexBuffers;
-  typedef Dali::Vector< const SamplerDataProvider* > Samplers;
+  typedef std::vector< Render::Sampler* > Samplers;
 
   /**
    * Constructor.
    * The RendererAttachment that creates this object will initialize the members
    * directly.
    */
-  RenderDataProvider();
+  RenderDataProvider( AnimatableProperty< float >& opacity );
 
   /**
    * Destructor
@@ -62,29 +65,6 @@ public:
   ~RenderDataProvider();
 
 public:
-  /**
-   * Set the geometry data provider
-   * @param[in] geometryDataProvider The geometry data provider
-   */
-  void SetGeometry( const GeometryDataProvider& geometryDataProvider );
-
-  /**
-   * Get the geometry data provider
-   * @return the geometry data provider
-   */
-  const GeometryDataProvider& GetGeometry() const;
-
-  /**
-   * Set the material data provider
-   * @param[in] materialDataProvider The material data provider
-   */
-  void SetMaterial( const MaterialDataProvider& materialDataProvider );
-
-  /**
-   * Get the material data provider
-   * @return the material data provider
-   */
-  const MaterialDataProvider& GetMaterial() const;
 
   /**
    * Set the uniform map data provider
@@ -110,52 +90,33 @@ public:
   Shader& GetShader() const;
 
   /**
-   * Set the index buffer
-   * @param[in] indexBuffer the index buffer to set
-   */
-  void SetIndexBuffer( const PropertyBufferDataProvider* indexBuffer );
-
-  /**
-   * Get the index buffer of the geometry
-   * @return A const reference to the index buffer
+   * Returns the list of samplers
+   * @return The list of samplers
    */
-  const PropertyBufferDataProvider* GetIndexBuffer() const;
+  Samplers& GetSamplers();
 
   /**
-   * Set the vertex buffers
-   * @param[in] vertexBuffers The vertex buffers
+   * Returns the list of Textures
+   * @return The list of Textures
    */
-  void SetVertexBuffers( const VertexBuffers& vertexBuffers );
+  std::vector<Render::Texture*>& GetTextures();
 
   /**
-   * Get the vertex buffers of the geometry
-   * @return A const reference to the vertex buffers
+   * Get the opacity
+   * @return The opacity
    */
-  const VertexBuffers& GetVertexBuffers() const;
+  float GetOpacity( BufferIndex bufferIndex );
 
-  /**
-   * Set the sampler data providers
-   * @param[in] samplers The sampler data providers
-   */
-  void SetSamplers( const Samplers& samplers );
+private:
 
-  /**
-   * Returns the list of sampler data providers
-   * @return The list of samplers
-   */
-  const Samplers& GetSamplers() const;
+  const UniformMapDataProvider*    mUniformMapDataProvider;
+  Shader*                          mShader;
+  std::vector<Render::Texture*>    mTextures;
+  Samplers                         mSamplers;
+  AnimatableProperty< float >&     mOpacity;
 
-private:
-  const GeometryDataProvider*   mGeometryDataProvider;
-  const MaterialDataProvider*   mMaterialDataProvider;
-  const UniformMapDataProvider* mUniformMapDataProvider;
-  Shader*                       mShader;
-  const PropertyBufferDataProvider* mIndexBuffer;
-  VertexBuffers                 mVertexBuffers;
-  Samplers                      mSamplers;
-
-// Give RendererAttachment access to our private data to reduce copying vectors on construction.
-  friend class RendererAttachment;
+  // Give Renderer access to our private data to reduce copying vectors on construction.
+  friend class Renderer;
 };
 
 } // SceneGraph