ruffle/src/graphic.rs

85 lines
2.3 KiB
Rust
Raw Normal View History

2019-04-26 21:11:29 +00:00
use crate::color_transform::ColorTransform;
2019-04-25 17:52:22 +00:00
use crate::display_object::DisplayObject;
2019-04-27 01:55:06 +00:00
use crate::matrix::Matrix;
use crate::player::{RenderContext, UpdateContext};
2019-04-25 17:52:22 +00:00
use bacon_rajan_cc::{Trace, Tracer};
2019-04-27 01:55:06 +00:00
#[cfg(target_arch = "wasm32")]
2019-04-25 17:52:22 +00:00
use web_sys::HtmlImageElement;
pub struct Graphic {
matrix: Matrix,
2019-04-26 21:11:29 +00:00
color_transform: ColorTransform,
2019-04-26 03:27:44 +00:00
x_min: f32,
y_min: f32,
2019-04-25 17:52:22 +00:00
}
impl Graphic {
2019-04-27 01:55:06 +00:00
pub fn new(x_min: f32, y_min: f32) -> Graphic {
2019-04-25 17:52:22 +00:00
Graphic {
2019-04-26 21:11:29 +00:00
color_transform: Default::default(),
2019-04-26 03:27:44 +00:00
x_min,
y_min,
2019-04-25 17:52:22 +00:00
matrix: std::default::Default::default(),
}
}
}
impl DisplayObject for Graphic {
2019-04-26 03:27:44 +00:00
fn run_frame(&mut self, _context: &mut UpdateContext) {
2019-04-25 17:52:22 +00:00
// Noop
}
fn render(&self, context: &mut RenderContext) {
context.matrix_stack.push(&self.matrix);
2019-04-26 21:11:29 +00:00
context.color_transform_stack.push(&self.color_transform);
2019-04-25 17:52:22 +00:00
let world_matrix = context.matrix_stack.matrix();
2019-04-26 21:11:29 +00:00
let color_transform = context.color_transform_stack.color_transform();
2019-04-27 01:55:06 +00:00
// if !color_transform.is_identity() {
// context
// .context_2d
// .set_global_alpha(color_transform.a_mult.into());
// }
2019-04-26 21:11:29 +00:00
2019-04-27 01:55:06 +00:00
// context
// .context_2d
// .set_transform(
// world_matrix.a.into(),
// world_matrix.b.into(),
// world_matrix.c.into(),
// world_matrix.d.into(),
// world_matrix.tx.into(),
// world_matrix.ty.into(),
// )
// .unwrap();
2019-04-26 21:11:29 +00:00
2019-04-27 01:55:06 +00:00
// if !color_transform.is_identity() {
// context.context_2d.set_global_alpha(1.0);
// }
2019-04-26 21:11:29 +00:00
2019-04-27 01:55:06 +00:00
// context
// .context_2d
// .draw_image_with_html_image_element(&self.image, self.x_min.into(), self.y_min.into())
// .expect("Couldn't render image");
2019-04-26 21:11:29 +00:00
2019-04-25 17:52:22 +00:00
context.matrix_stack.pop();
2019-04-26 21:11:29 +00:00
context.color_transform_stack.push(&self.color_transform);
2019-04-25 17:52:22 +00:00
}
2019-04-26 03:27:44 +00:00
fn set_matrix(&mut self, matrix: Matrix) {
self.matrix = matrix;
}
2019-04-26 21:11:29 +00:00
fn set_color_transform(&mut self, color_transform: ColorTransform) {
self.color_transform = color_transform;
}
2019-04-25 17:52:22 +00:00
}
impl Trace for Graphic {
fn trace(&mut self, _tracer: &mut Tracer) {
// Noop
}
}