UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
primitive.h
Go to the documentation of this file.
1 #ifndef UGDK_GRAPHIC_PRIMITIVE_H_
2 #define UGDK_GRAPHIC_PRIMITIVE_H_
3 
4 #include <ugdk/graphic.h>
5 
7 
8 #include <memory>
9 #include <functional>
10 
11 namespace ugdk {
12 namespace graphic {
13 
14 class Primitive {
15  public:
16  Primitive(const graphic::GLTexture* texture, const std::shared_ptr<VertexData>& data);
17  ~Primitive();
18 
19  const graphic::GLTexture* texture() const { return texture_; }
20  std::shared_ptr<VertexData> vertexdata() { return vertexdata_; }
21  std::shared_ptr<const VertexData> vertexdata() const { return vertexdata_; }
22  const std::function<void(const Primitive&, Canvas&)>& drawfunction() const {
23  return drawfunction_;
24  }
25  std::unique_ptr<PrimitiveController>& controller() { return controller_; }
26  const std::unique_ptr<PrimitiveController>& controller() const { return controller_; }
28  const ShaderProgram* shader_program() const { return shader_program_; }
29 
30  void set_texture(const graphic::GLTexture* texture) { texture_ = texture; }
31  void set_vertexdata(const std::shared_ptr<VertexData>& data) { vertexdata_ = data; }
32  void set_drawfunction(const std::function<void(const Primitive&, Canvas&)>& function) { drawfunction_ = function; }
35 
36 #ifdef _MSC_VER
37 #if _MSC_VER <= 1800
39  Primitive& operator=(Primitive&&);
40 #endif
41 #endif
42 #ifndef SWIG
43  void set_controller(std::unique_ptr<PrimitiveController>&& controller);
44 #endif
45 
46  protected:
47  const graphic::GLTexture* texture_;
48  std::shared_ptr<VertexData> vertexdata_;
49  std::function<void(const Primitive&, Canvas&)> drawfunction_;
50  std::unique_ptr<PrimitiveController> controller_;
53 };
54 
55 } // namespace graphic
56 } // namespace ugdk
57 
58 #endif // UGDK_GRAPHIC_PRIMITIVE_H_
Definition: canvas.h:28
structure::VisualEffect visual_effect_
Definition: primitive.h:51
std::shared_ptr< VertexData > vertexdata()
Definition: primitive.h:20
const ShaderProgram * shader_program() const
Definition: primitive.h:28
const ShaderProgram * shader_program_
Definition: primitive.h:52
const graphic::GLTexture * texture_
Definition: primitive.h:47
const std::unique_ptr< PrimitiveController > & controller() const
Definition: primitive.h:26
const std::function< void(const Primitive &, Canvas &)> & drawfunction() const
Definition: primitive.h:22
void set_shader_program(const ShaderProgram *shader_program)
Definition: primitive.h:34
Definition: animation.h:11
Definition: visualeffect.h:9
Primitive(const graphic::GLTexture *texture, const std::shared_ptr< VertexData > &data)
void set_controller(std::unique_ptr< PrimitiveController > &&controller)
void set_vertexdata(const std::shared_ptr< VertexData > &data)
Definition: primitive.h:31
std::unique_ptr< PrimitiveController > & controller()
Definition: primitive.h:25
void set_texture(const graphic::GLTexture *texture)
Definition: primitive.h:30
void set_drawfunction(const std::function< void(const Primitive &, Canvas &)> &function)
Definition: primitive.h:32
Definition: shaderprogram.h:11
std::shared_ptr< VertexData > vertexdata_
Definition: primitive.h:48
void set_visualeffect(const structure::VisualEffect &visual_effect)
Definition: primitive.h:33
std::function< void(const Primitive &, Canvas &)> drawfunction_
Definition: primitive.h:49
const graphic::GLTexture * texture() const
Definition: primitive.h:19
const structure::VisualEffect & visual_effect() const
Definition: primitive.h:27
std::unique_ptr< PrimitiveController > controller_
Definition: primitive.h:50
Definition: primitive.h:14
std::shared_ptr< const VertexData > vertexdata() const
Definition: primitive.h:21