X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Frender%2Fdata-providers%2Frender-data-provider.h;h=aae42628a7de1fa38b07d930220d613537b24437;hb=4d75040ab200bd306ec5a48f2a617480062eef4c;hp=d499db3fd1cbc0fa351c04dcd399c1d7e6684d50;hpb=29cd3a788524682a7ae2ed7e0bba00c084832b5d;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/render/data-providers/render-data-provider.h b/dali/internal/render/data-providers/render-data-provider.h old mode 100644 new mode 100755 index d499db3..aae4262 --- a/dali/internal/render/data-providers/render-data-provider.h +++ b/dali/internal/render/data-providers/render-data-provider.h @@ -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. @@ -18,19 +18,27 @@ * */ -#include -#include +#include +#include #include -#include +#include #include +#include +#include +#include namespace Dali { namespace Internal { + +struct BlendingOptions; + namespace SceneGraph { class PropertyBuffer; +class Shader; +class Renderer; /** * Wraps all the data providers for the renderer. This allows the @@ -38,25 +46,19 @@ class PropertyBuffer; * 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 PropertyBuffer* > VertexBuffers; - typedef Dali::Vector< const SamplerDataProvider* > Samplers; + typedef Dali::Vector< const PropertyBufferDataProvider* > VertexBuffers; + typedef std::vector< Render::Sampler* > Samplers; /** * Constructor. + * The RendererAttachment that creates this object will initialize the members + * directly. */ - RenderDataProvider( const GeometryDataProvider& mGeometryDataProvider, - const MaterialDataProvider& mMaterialDataProvider, - const UniformMapDataProvider& mUniformMapDataProvider, - Shader& mShader, - const PropertyBuffer* mIndexBuffer, - const VertexBuffers& mVertexBuffers, - const Samplers& mSamplers ); + RenderDataProvider( AnimatableProperty< float >& opacity ); /** * Destructor @@ -64,29 +66,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 @@ -112,49 +91,33 @@ public: Shader& GetShader() const; /** - * Set the index buffer - * @param[in] indexBuffer the index buffer to set - */ - void SetIndexBuffer( const PropertyBuffer* 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 PropertyBuffer* 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& 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 mTextures; + Samplers mSamplers; + AnimatableProperty< float >& mOpacity; -private: - const GeometryDataProvider* mGeometryDataProvider; - const MaterialDataProvider* mMaterialDataProvider; - const UniformMapDataProvider* mUniformMapDataProvider; - Shader* mShader; - const PropertyBuffer* mIndexBuffer; - VertexBuffers mVertexBuffers; - Samplers mSamplers; + // Give Renderer access to our private data to reduce copying vectors on construction. + friend class Renderer; }; } // SceneGraph