// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.
///|
#external
pub type Texture
///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn Texture::Texture() -> Texture = "texture"
///|
pub extern "js" fn Texture::user_data(self : Texture) -> UserData =
#| (self) => self.userData
///|
pub extern "js" fn Texture::mapping(self : Texture) -> TextureMapping =
#| (self) => self.mapping
///|
pub extern "js" fn Texture::set_mapping(
self : Texture,
value : TextureMapping,
) -> Unit =
#| (self, value) => { self.mapping = value; }
///|
pub extern "js" fn Texture::same_reference(
self : Texture,
other : Texture,
) -> Bool =
#| (self, other) => self === other
///|
pub extern "js" fn Texture::clone(self : Texture) -> Texture =
#| (self) => self.clone()
///|
pub extern "js" fn Texture::name(self : Texture) -> String =
#| (self) => self.name
///|
pub extern "js" fn Texture::set_name(self : Texture, value : String) -> Unit =
#| (self, value) => { self.name = value; }
///|
pub extern "js" fn Texture::offset(self : Texture) -> Vector2 =
#| (self) => self.offset
///|
pub extern "js" fn Texture::repeat(self : Texture) -> Vector2 =
#| (self) => self.repeat
///|
pub extern "js" fn Texture::center(self : Texture) -> Vector2 =
#| (self) => self.center
///|
pub extern "js" fn Texture::rotation(self : Texture) -> Double =
#| (self) => self.rotation
///|
pub extern "js" fn Texture::set_rotation(
self : Texture,
value : Double,
) -> Unit =
#| (self, value) => { self.rotation = value; }
///|
pub extern "js" fn Texture::flip_y(self : Texture) -> Bool =
#| (self) => self.flipY
///|
pub extern "js" fn Texture::set_flip_y(self : Texture, value : Bool) -> Unit =
#| (self, value) => { self.flipY = value; }
///|
pub extern "js" fn Texture::anisotropy(self : Texture) -> Int =
#| (self) => self.anisotropy
///|
pub extern "js" fn Texture::set_anisotropy(self : Texture, value : Int) -> Unit =
#| (self, value) => { self.anisotropy = value; }
///|
pub extern "js" fn Texture::wrap_s(self : Texture) -> Wrapping =
#| (self) => self.wrapS
///|
pub extern "js" fn Texture::set_wrap_s(
self : Texture,
value : Wrapping,
) -> Unit =
#| (self, value) => { self.wrapS = value; }
///|
pub extern "js" fn Texture::wrap_t(self : Texture) -> Wrapping =
#| (self) => self.wrapT
///|
pub extern "js" fn Texture::set_wrap_t(
self : Texture,
value : Wrapping,
) -> Unit =
#| (self, value) => { self.wrapT = value; }
///|
pub extern "js" fn Texture::mag_filter(self : Texture) -> MagnificationFilter =
#| (self) => self.magFilter
///|
pub extern "js" fn Texture::set_mag_filter(
self : Texture,
value : MagnificationFilter,
) -> Unit =
#| (self, value) => { self.magFilter = value; }
///|
pub extern "js" fn Texture::min_filter(self : Texture) -> MinificationFilter =
#| (self) => self.minFilter
///|
pub extern "js" fn Texture::set_min_filter(
self : Texture,
value : MinificationFilter,
) -> Unit =
#| (self, value) => { self.minFilter = value; }
///|
pub extern "js" fn Texture::mark_needs_update(self : Texture) -> Unit =
#| (self) => { self.needsUpdate = true; }
///|
pub extern "js" fn Texture::update_matrix(self : Texture) -> Unit =
#| (self) => self.updateMatrix()
///|
pub extern "js" fn Texture::dispose(self : Texture) -> Unit =
#| (self) => self.dispose()
///|
extern "js" fn Texture::ffi_format(self : Texture) -> Nullable[TextureFormat] =
#| (self) => [1023,1028,1030].includes(self.format) ? self.format : null
///|
pub fn Texture::format(self : Texture) -> TextureFormat? {
self.ffi_format().to_option()
}
///|
pub extern "js" fn Texture::set_format(
self : Texture,
value : TextureFormat,
) -> Unit =
#| (self, value) => { self.format = value; }
///|
pub extern "js" fn Texture::generate_mipmaps(self : Texture) -> Bool =
#| (self) => self.generateMipmaps
///|
pub extern "js" fn Texture::set_generate_mipmaps(
self : Texture,
value : Bool,
) -> Unit =
#| (self, value) => { self.generateMipmaps = value; }
///|
pub extern "js" fn Texture::unpack_alignment(self : Texture) -> Int =
#| (self) => self.unpackAlignment
///|
pub extern "js" fn Texture::set_unpack_alignment(
self : Texture,
value : Int,
) -> Unit =
#| (self, value) => { self.unpackAlignment = value; }
///|
pub extern "js" fn Texture::uuid(self : Texture) -> String =
#| (self) => self.uuid
///|
extern "js" fn Texture::ffi_to_json(self : Texture) -> JsResult[String] =
#| (self) => { try { return { ok: true, value: (() => JSON.stringify(self.toJSON()))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Texture::to_json(self : Texture) -> Json raise SerializationError {
match self.ffi_to_json().into_result() {
Ok(value) =>
@json.parse(value) catch {
error => raise SerializationError((error : Error).to_string())
}
Err(message) => raise SerializationError(message)
}
}
///|
extern "js" fn Texture::ffi_to_json_string(self : Texture) -> JsResult[String] =
#| (self) => { try { return { ok: true, value: (() => JSON.stringify(self.toJSON()))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Texture::to_json_string(
self : Texture,
) -> String raise SerializationError {
match self.ffi_to_json_string().into_result() {
Ok(value) => value
Err(message) => raise SerializationError(message)
}
}
///|
pub extern "js" fn Texture::channel(self : Texture) -> Int =
#| (self) => self.channel
///|
pub extern "js" fn Texture::set_channel(self : Texture, value : Int) -> Unit =
#| (self, value) => { self.channel = value; }
///|
pub extern "js" fn Texture::matrix(self : Texture) -> Matrix3 =
#| (self) => self.matrix
///|
pub extern "js" fn Texture::matrix_auto_update(self : Texture) -> Bool =
#| (self) => self.matrixAutoUpdate
///|
pub extern "js" fn Texture::set_matrix_auto_update(
self : Texture,
value : Bool,
) -> Unit =
#| (self, value) => { self.matrixAutoUpdate = value; }
///|
pub extern "js" fn Texture::transform_uv(
self : Texture,
uv : Vector2,
) -> Vector2 =
#| (self, uv) => self.transformUv(uv)
///|
pub extern "js" fn Texture::copy(self : Texture, source : Texture) -> Texture =
#| (self, source) => self.copy(source)
///|
pub extern "js" fn Texture::source(self : Texture) -> Source =
#| (self) => self.source
///|
pub extern "js" fn Texture::set_source(self : Texture, source : Source) -> Unit =
#| (self, source) => { self.source = source; self.needsUpdate = true; }
///|
pub extern "js" fn Texture::add_update_range(
self : Texture,
start : Int,
count : Int,
) -> Unit =
#| (self, start, count) => self.addUpdateRange(start, count)
///|
pub extern "js" fn Texture::clear_update_ranges(self : Texture) -> Unit =
#| (self) => self.clearUpdateRanges()
///|
pub extern "js" fn Texture::update_ranges(
self : Texture,
) -> FixedArray[BufferUpdateRange] =
#| (self) => self.updateRanges.map(range=>({...range}))
///|
extern "js" fn Texture::ffi_write_rgba(
self : Texture,
start : Int,
data : Bytes,
) -> JsResult[Unit] =
#| (self, start, data) => { try { return { ok: true, value: (() => { const target = self.source.data?.data; if (!(target instanceof Uint8Array) || self.format !== 1023 || self.type !== 1009 || start < 0 || start + data.length > target.length) throw new RangeError("RGBA8 texture update is out of bounds or has incompatible storage"); target.set(data,start); self.addUpdateRange(start,data.length); self.needsUpdate = true; })() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Texture::write_rgba(
self : Texture,
start : Int,
data : Bytes,
) -> Unit raise ModelingError {
match self.ffi_write_rgba(start, data).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn Texture::ffi_set_rgba_mipmaps(
self : Texture,
levels : FixedArray[TextureMipLevel],
) -> JsResult[Unit] =
#| (self, levels) => { try { return { ok: true, value: (() => { if (self.format !== 1023 || self.type !== 1009) throw new TypeError("RGBA8 texture required"); self.mipmaps = levels.map(level=>({data:level.data.slice(),width:level.width,height:level.height})); self.generateMipmaps = false; self.needsUpdate = true; })() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn Texture::set_rgba_mipmaps(
self : Texture,
levels : FixedArray[TextureMipLevel],
) -> Unit raise ModelingError {
match self.ffi_set_rgba_mipmaps(levels).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
pub extern "js" fn Texture::rgba_mipmaps(
self : Texture,
) -> FixedArray[TextureMipLevel] =
#| (self) => self.mipmaps.filter(m=>m.data instanceof Uint8Array).map(m=>({data:m.data.slice(),width:m.width,height:m.height}))