rscenes_raylib_connector/ext/
texture.rs1use crate::rtextures::RtexturesImpl;
2use raylib_ffi::{enums::*, *};
3use std::fmt::Display;
4
5pub trait TextureExt: Sized {
6 fn load(filename: impl Display) -> Result<Self, String>;
8 fn load_from_image(image: Image) -> Result<Self, String>;
10
11 fn is_ready(self) -> bool;
13 fn unload(self);
15 fn update_gpu(self, pixels: &[u8]) -> Self;
17 fn update_gpu_rec(self, rec: Rectangle, pixels: &[u8]) -> Self;
19 fn gen_mipmaps(&mut self) -> &mut Self;
21 fn set_filter(self, filter: TextureFilter) -> Self;
23 fn set_wrap(self, wrap: TextureWrap) -> Self;
25}
26
27impl TextureExt for Texture2D {
28 fn load(filename: impl Display) -> Result<Self, String> {
29 RtexturesImpl::__load_texture(filename)
30 }
31
32 fn load_from_image(image: Image) -> Result<Self, String> {
33 RtexturesImpl::__load_texture_from_image(image)
34 }
35
36 fn is_ready(self) -> bool {
37 RtexturesImpl::__is_texture_ready(self)
38 }
39
40 fn unload(self) {
41 RtexturesImpl::__unload_texture(self)
42 }
43
44 fn update_gpu(self, pixels: &[u8]) -> Self {
45 RtexturesImpl::__update_texture(self, pixels);
46 self
47 }
48
49 fn update_gpu_rec(self, rec: Rectangle, pixels: &[u8]) -> Self {
50 RtexturesImpl::__update_texture_rec(self, rec, pixels);
51 self
52 }
53
54 fn gen_mipmaps(&mut self) -> &mut Self {
55 RtexturesImpl::__gen_texture_mipmaps(self);
56 self
57 }
58
59 fn set_filter(self, filter: TextureFilter) -> Self {
60 RtexturesImpl::__set_texture_filter(self, filter as usize);
61 self
62 }
63
64 fn set_wrap(self, wrap: TextureWrap) -> Self {
65 RtexturesImpl::__set_texture_wrap(self, wrap as usize);
66 self
67 }
68}
69
70pub trait TextureCubemapExt: Sized {
71 fn load(image: Image, layout: CubemapLayout) -> Result<Self, String>;
72}
73
74impl TextureCubemapExt for TextureCubemap {
75 fn load(image: Image, layout: CubemapLayout) -> Result<Self, String> {
76 RtexturesImpl::__load_texture_cubemap(image, layout as usize)
77 }
78}
79
80pub trait RenderTextureExt {
81 fn load(width: i32, height: i32) -> Self;
82
83 fn is_ready(self) -> bool;
84 fn unload(self);
85}
86
87impl RenderTextureExt for RenderTexture2D {
88 fn load(width: i32, height: i32) -> Self {
89 RtexturesImpl::__load_render_texture(width, height)
90 }
91
92 fn is_ready(self) -> bool {
93 RtexturesImpl::__is_render_texture_ready(self)
94 }
95
96 fn unload(self) {
97 RtexturesImpl::__unload_render_texture(self)
98 }
99}