summaryrefslogtreecommitdiffstats
path: root/glow/src/triangle/solid.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-12-02 18:53:21 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-12-02 18:53:21 +0100
commit4029a1cdaaac1abbdcc141b20469a49670cd99b6 (patch)
tree71fa9d9c4aa1f02ce05771db43a4bb7bc6570e77 /glow/src/triangle/solid.rs
parent676d8efe03ebdbeeb95aef96b8097395b788b1ab (diff)
parent8b55e9b9e6ba0b83038dd491dd34d95b4f9a381b (diff)
downloadiced-4029a1cdaaac1abbdcc141b20469a49670cd99b6.tar.gz
iced-4029a1cdaaac1abbdcc141b20469a49670cd99b6.tar.bz2
iced-4029a1cdaaac1abbdcc141b20469a49670cd99b6.zip
Merge branch 'master' into non-uniform-border-radius-for-quads
Diffstat (limited to 'glow/src/triangle/solid.rs')
-rw-r--r--glow/src/triangle/solid.rs91
1 files changed, 0 insertions, 91 deletions
diff --git a/glow/src/triangle/solid.rs b/glow/src/triangle/solid.rs
deleted file mode 100644
index fb3d40c3..00000000
--- a/glow/src/triangle/solid.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use crate::program::Version;
-use crate::{triangle, Color};
-use glow::{Context, HasContext, NativeProgram};
-use iced_graphics::Transformation;
-
-#[derive(Debug)]
-pub struct Program {
- program: <Context as HasContext>::Program,
- uniform_data: UniformData,
-}
-
-#[derive(Debug)]
-struct UniformData {
- pub color: Color,
- pub color_location: <Context as HasContext>::UniformLocation,
- pub transform: Transformation,
- pub transform_location: <Context as HasContext>::UniformLocation,
-}
-
-impl UniformData {
- fn new(gl: &Context, program: NativeProgram) -> Self {
- Self {
- color: Color::TRANSPARENT,
- color_location: unsafe {
- gl.get_uniform_location(program, "color")
- }
- .expect("Solid - Get color."),
- transform: Transformation::identity(),
- transform_location: unsafe {
- gl.get_uniform_location(program, "u_Transform")
- }
- .expect("Solid - Get u_Transform."),
- }
- }
-}
-
-impl Program {
- pub fn new(gl: &Context, shader_version: &Version) -> Self {
- let program = triangle::program(
- gl,
- shader_version,
- include_str!("../shader/common/triangle.frag"),
- );
-
- Self {
- program,
- uniform_data: UniformData::new(gl, program),
- }
- }
-
- pub fn write_uniforms(
- &mut self,
- gl: &Context,
- color: &Color,
- transform: &Transformation,
- ) {
- if transform != &self.uniform_data.transform {
- triangle::set_transform(
- gl,
- self.uniform_data.transform_location,
- *transform,
- )
- }
-
- if color != &self.uniform_data.color {
- let [r, g, b, a] = color.into_linear();
-
- unsafe {
- gl.uniform_4_f32(
- Some(&self.uniform_data.color_location),
- r,
- g,
- b,
- a,
- );
- }
-
- self.uniform_data.color = *color;
- }
- }
-
- pub fn use_program(
- &mut self,
- gl: &Context,
- color: &Color,
- transform: &Transformation,
- ) {
- unsafe { gl.use_program(Some(self.program)) }
- self.write_uniforms(gl, color, transform)
- }
-}