1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
#![allow( clippy::too_many_arguments, clippy::let_and_return, clippy::from_over_into )] use crate::{Bitmap, Context, Object, PixelFormat, Texture}; use glib::translate::*; use std::{fmt, ptr}; glib_wrapper! { pub struct Texture3D(Object<ffi::CoglTexture3D, Texture3DClass>) @extends Object, @implements Texture; match fn { get_type => || ffi::cogl_texture_3d_get_gtype(), } } impl Texture3D { pub fn from_bitmap(bitmap: &Bitmap, height: i32, depth: i32) -> Texture3D { unsafe { from_glib_full(ffi::cogl_texture_3d_new_from_bitmap( bitmap.to_glib_none().0, height, depth, )) } } pub fn from_data( context: &Context, width: i32, height: i32, depth: i32, format: PixelFormat, rowstride: i32, image_stride: i32, data: &[u8], ) -> Result<Texture3D, glib::Error> { unsafe { let mut error = ptr::null_mut(); let ret = ffi::cogl_texture_3d_new_from_data( context.to_glib_none().0, width, height, depth, format.to_glib(), rowstride, image_stride, data.as_ptr(), &mut error, ); if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) } } } pub fn with_size(context: &Context, width: i32, height: i32, depth: i32) -> Texture3D { unsafe { from_glib_full(ffi::cogl_texture_3d_new_with_size( context.to_glib_none().0, width, height, depth, )) } } } impl fmt::Display for Texture3D { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Texture3D") } }