raylib-cpp
C++ object-oriented wrapper library for raylib.
Texture2D.hpp
1 #ifndef RAYLIB_CPP_TEXTURE2D_HPP_
2 #define RAYLIB_CPP_TEXTURE2D_HPP_
3 
4 #include <string>
5 
6 #ifdef __cplusplus
7 extern "C"{
8 #endif
9 #include "raylib.h"
10 #ifdef __cplusplus
11 }
12 #endif
13 
14 #include "./raylib-cpp-utils.hpp"
15 #include "./Vector2.hpp"
16 #include "./Material.hpp"
17 
18 namespace raylib {
19  class Texture2D : public ::Texture2D {
20  public:
22  set(::GetTextureDefault());
23  };
24 
25  Texture2D(::Image& image) {
26  LoadFromImage(image);
27  }
28 
29  Texture2D(const std::string& fileName) {
30  Load(fileName);
31  }
32 
34  Unload();
35  };
36 
37  inline void set(::Texture2D texture) {
38  id = texture.id;
39  width = texture.width;
40  height = texture.height;
41  mipmaps = texture.mipmaps;
42  format = texture.format;
43  }
44 
45  GETTERSETTER(unsigned int,Id,id)
46  GETTERSETTER(int,Width,width)
47  GETTERSETTER(int,Height,height)
48  GETTERSETTER(int,Mipmaps,mipmaps)
49  GETTERSETTER(int,Format,format)
50 
51  Texture2D& operator=(const ::Texture2D& texture) {
52  set(texture);
53  return *this;
54  }
55 
56  Texture2D& operator=(const Texture2D& texture) {
57  set(texture);
58  return *this;
59  }
60 
61  void LoadFromImage(::Image& image) {
62  set(::LoadTextureFromImage(image));
63  }
64 
65  void LoadTextureCubemap(::Image& image, int layoutType) {
66  set(::LoadTextureCubemap(image, layoutType));
67  }
68 
69  void Load(const std::string& fileName) {
70  set(::LoadTexture(fileName.c_str()));
71  }
72 
73  inline void Unload() {
74  ::UnloadTexture(*this);
75  }
76 
77  inline Texture2D& Update(const void *pixels) {
78  ::UpdateTexture(*this, pixels);
79  return *this;
80  }
81 
82  inline Texture2D& UpdateRec(Rectangle rec, const void *pixels) {
83  UpdateTextureRec(*this, rec, pixels);
84  return *this;
85  }
86 
87  inline Image GetTextureData() {
88  return ::GetTextureData(*this);
89  }
90  inline operator raylib::Image() {
91  return GetTextureData();
92  }
93 
94  inline Texture2D& GenMipmaps() {
95  ::GenTextureMipmaps(this);
96  return *this;
97  }
98 
99  inline Texture2D& SetFilter(int filterMode) {
100  ::SetTextureFilter(*this, filterMode);
101  return *this;
102  }
103 
104  inline Texture2D& SetWrap(int wrapMode) {
105  ::SetTextureWrap(*this, wrapMode);
106  return *this;
107  }
108 
109  inline Texture2D& Draw(int posX, int posY, ::Color tint = WHITE) {
110  ::DrawTexture(*this, posX, posY, tint);
111  return *this;
112  }
113 
114  inline Texture2D& Draw(::Vector2 position, ::Color tint = WHITE) {
115  ::DrawTextureV(*this, position, tint);
116  return *this;
117  }
118  inline Texture2D& Draw(::Vector2 position, float rotation, float scale = 1.0f, ::Color tint = WHITE) {
119  ::DrawTextureEx(*this, position, rotation, scale, tint);
120  return *this;
121  }
122 
123  inline Texture2D& Draw(::Rectangle sourceRec, ::Vector2 position, ::Color tint = WHITE) {
124  ::DrawTextureRec(*this, sourceRec, position, tint);
125  return *this;
126  }
127  inline Texture2D& Draw(::Vector2 tiling, ::Vector2 offset, ::Rectangle quad, ::Color tint = WHITE) {
128  ::DrawTextureQuad(*this, tiling, offset, quad, tint);
129  return *this;
130  }
131  inline Texture2D& Draw(::Rectangle sourceRec, ::Rectangle destRec, ::Vector2 origin, float rotation = 0, ::Color tint = WHITE) {
132  ::DrawTexturePro(*this, sourceRec, destRec, origin, rotation, tint);
133  return *this;
134  }
135  inline Texture2D& Draw(::NPatchInfo nPatchInfo, ::Rectangle destRec, ::Vector2 origin, float rotation = 0, ::Color tint = WHITE) {
136  ::DrawTextureNPatch(*this, nPatchInfo, destRec, origin, rotation, tint);
137  return *this;
138  }
139 
140  inline Texture2D& Draw(::Vector3 position, float width, float height, float length, ::Color color = WHITE) {
141  ::DrawCubeTexture(*this, position, width, height, length, color);
142  return *this;
143  }
144 
145  inline Texture2D& DrawTiled(Rectangle sourceRec, Rectangle destRec, Vector2 origin, float rotation, float scale, Color tint = WHITE) {
146  ::DrawTextureTiled(*this, sourceRec, destRec, origin, rotation, scale, tint);
147  return *this;
148  }
149 
150  inline Texture2D& SetMaterialTexture(Material *material, int mapType) {
151  ::SetMaterialTexture(material, mapType, *this);
152  return *this;
153  }
154 
155  static int GetPixelDataSize(int width, int height, int format) {
156  return ::GetPixelDataSize(width, height, format);
157  }
158  };
159 
160  // Create the Texture2D aliases.
163 }
164 
165 #endif
raylib::Texture2D::LoadTextureCubemap
void LoadTextureCubemap(::Image &image, int layoutType)
Definition: Texture2D.hpp:65
raylib
Provides all the classes associated with raylib-cpp.
Definition: AudioDevice.hpp:14
raylib::TextureCubemap
Texture2D TextureCubemap
Definition: Texture2D.hpp:162
raylib::Texture2D::Load
void Load(const std::string &fileName)
Definition: Texture2D.hpp:69
raylib::Texture2D::GetTextureData
Image GetTextureData()
Definition: Texture2D.hpp:87
raylib::Texture2D::~Texture2D
~Texture2D()
Definition: Texture2D.hpp:33
raylib::Texture2D::Draw
Texture2D & Draw(::NPatchInfo nPatchInfo, ::Rectangle destRec, ::Vector2 origin, float rotation=0, ::Color tint=WHITE)
Definition: Texture2D.hpp:135
raylib::Image
Definition: Image.hpp:16
raylib::Texture2D::Texture2D
Texture2D(::Image &image)
Definition: Texture2D.hpp:25
raylib::Texture2D::Draw
Texture2D & Draw(::Vector3 position, float width, float height, float length, ::Color color=WHITE)
Definition: Texture2D.hpp:140
raylib::Texture2D::DrawTiled
Texture2D & DrawTiled(Rectangle sourceRec, Rectangle destRec, Vector2 origin, float rotation, float scale, Color tint=WHITE)
Definition: Texture2D.hpp:145
raylib::Texture2D::Update
Texture2D & Update(const void *pixels)
Definition: Texture2D.hpp:77
raylib::Texture2D::Draw
Texture2D & Draw(::Vector2 position, ::Color tint=WHITE)
Definition: Texture2D.hpp:114
raylib::Vector3
Definition: Vector3.hpp:21
raylib::Texture
Texture2D Texture
Definition: Texture2D.hpp:161
raylib::Texture2D::Draw
Texture2D & Draw(int posX, int posY, ::Color tint=WHITE)
Definition: Texture2D.hpp:109
raylib::Texture2D::SetWrap
Texture2D & SetWrap(int wrapMode)
Definition: Texture2D.hpp:104
raylib::Texture2D::GetPixelDataSize
static int GetPixelDataSize(int width, int height, int format)
Definition: Texture2D.hpp:155
raylib::Texture2D::Texture2D
Texture2D(const std::string &fileName)
Definition: Texture2D.hpp:29
raylib::Texture2D::Texture2D
Texture2D()
Definition: Texture2D.hpp:21
raylib::Rectangle
Definition: Rectangle.hpp:16
raylib::Vector2
Definition: Vector2.hpp:22
raylib::Texture2D::Unload
void Unload()
Definition: Texture2D.hpp:73
raylib::Color
Definition: Color.hpp:18
raylib::Texture2D::SetFilter
Texture2D & SetFilter(int filterMode)
Definition: Texture2D.hpp:99
raylib::Texture2D::GenMipmaps
Texture2D & GenMipmaps()
Definition: Texture2D.hpp:94
raylib::Texture2D::operator=
Texture2D & operator=(const Texture2D &texture)
Definition: Texture2D.hpp:56
raylib::Texture2D::Draw
Texture2D & Draw(::Rectangle sourceRec, ::Vector2 position, ::Color tint=WHITE)
Definition: Texture2D.hpp:123
raylib::Texture2D::LoadFromImage
void LoadFromImage(::Image &image)
Definition: Texture2D.hpp:61
raylib::Texture2D::Draw
Texture2D & Draw(::Vector2 position, float rotation, float scale=1.0f, ::Color tint=WHITE)
Definition: Texture2D.hpp:118
raylib::Texture2D::UpdateRec
Texture2D & UpdateRec(Rectangle rec, const void *pixels)
Definition: Texture2D.hpp:82
raylib::Texture2D::Draw
Texture2D & Draw(::Vector2 tiling, ::Vector2 offset, ::Rectangle quad, ::Color tint=WHITE)
Definition: Texture2D.hpp:127
raylib::Texture2D::Draw
Texture2D & Draw(::Rectangle sourceRec, ::Rectangle destRec, ::Vector2 origin, float rotation=0, ::Color tint=WHITE)
Definition: Texture2D.hpp:131
raylib::Material
Definition: Material.hpp:15
raylib::Texture2D::SetMaterialTexture
Texture2D & SetMaterialTexture(Material *material, int mapType)
Definition: Texture2D.hpp:150
raylib::Texture2D
Definition: Texture2D.hpp:19
raylib::Texture2D::set
void set(::Texture2D texture)
Definition: Texture2D.hpp:37