From 5c4d2d792801f58b3f1a567728e5fc95d2f7382f Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 14 May 2015 13:09:13 +0200 Subject: [PATCH] Move handling of CanvasWebGLMsgs into WebGLPaintTask::handle_webgl_message. This clarifies the code flow in WebGLPaintTask::start a bit, and as a bonus, reduces the line lengths. --- components/canvas/webgl_paint_task.rs | 56 ++++++++++++++------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/components/canvas/webgl_paint_task.rs b/components/canvas/webgl_paint_task.rs index 806440db36b..155cbde2297 100644 --- a/components/canvas/webgl_paint_task.rs +++ b/components/canvas/webgl_paint_task.rs @@ -37,6 +37,34 @@ impl WebGLPaintTask { }) } + pub fn handle_webgl_message(&self, message: CanvasWebGLMsg) { + match message { + CanvasWebGLMsg::AttachShader(program_id, shader_id) => self.attach_shader(program_id, shader_id), + CanvasWebGLMsg::BindBuffer(buffer_type, buffer_id) => self.bind_buffer(buffer_type, buffer_id), + CanvasWebGLMsg::BufferData(buffer_type, data, usage) => self.buffer_data(buffer_type, data, usage), + CanvasWebGLMsg::Clear(mask) => self.clear(mask), + CanvasWebGLMsg::ClearColor(r, g, b, a) => self.clear_color(r, g, b, a), + CanvasWebGLMsg::CreateBuffer(chan) => self.create_buffer(chan), + CanvasWebGLMsg::DrawArrays(mode, first, count) => self.draw_arrays(mode, first, count), + CanvasWebGLMsg::EnableVertexAttribArray(attrib_id) => self.enable_vertex_attrib_array(attrib_id), + CanvasWebGLMsg::GetAttribLocation(program_id, name, chan) => self.get_attrib_location(program_id, name, chan), + CanvasWebGLMsg::GetShaderInfoLog(shader_id, chan) => self.get_shader_info_log(shader_id, chan), + CanvasWebGLMsg::GetShaderParameter(shader_id, param_id, chan) => self.get_shader_parameter(shader_id, param_id, chan), + CanvasWebGLMsg::GetUniformLocation(program_id, name, chan) => self.get_uniform_location(program_id, name, chan), + CanvasWebGLMsg::CompileShader(shader_id) => self.compile_shader(shader_id), + CanvasWebGLMsg::CreateProgram(chan) => self.create_program(chan), + CanvasWebGLMsg::CreateShader(shader_type, chan) => self.create_shader(shader_type, chan), + CanvasWebGLMsg::LinkProgram(program_id) => self.link_program(program_id), + CanvasWebGLMsg::ShaderSource(shader_id, source) => self.shader_source(shader_id, source), + CanvasWebGLMsg::Uniform4fv(uniform_id, data) => self.uniform_4fv(uniform_id, data), + CanvasWebGLMsg::UseProgram(program_id) => self.use_program(program_id), + CanvasWebGLMsg::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset) => { + self.vertex_attrib_pointer_f32(attrib_id, size, normalized, stride, offset); + }, + CanvasWebGLMsg::Viewport(x, y, width, height) => self.viewport(x, y, width, height), + } + } + pub fn start(size: Size2D) -> Result, &'static str> { let (chan, port) = channel::(); let mut painter = try!(WebGLPaintTask::new(size)); @@ -44,33 +72,7 @@ impl WebGLPaintTask { painter.init(); loop { match port.recv().unwrap() { - CanvasMsg::WebGL(message) => { - match message { - CanvasWebGLMsg::AttachShader(program_id, shader_id) => painter.attach_shader(program_id, shader_id), - CanvasWebGLMsg::BindBuffer(buffer_type, buffer_id) => painter.bind_buffer(buffer_type, buffer_id), - CanvasWebGLMsg::BufferData(buffer_type, data, usage) => painter.buffer_data(buffer_type, data, usage), - CanvasWebGLMsg::Clear(mask) => painter.clear(mask), - CanvasWebGLMsg::ClearColor(r, g, b, a) => painter.clear_color(r, g, b, a), - CanvasWebGLMsg::CreateBuffer(chan) => painter.create_buffer(chan), - CanvasWebGLMsg::DrawArrays(mode, first, count) => painter.draw_arrays(mode, first, count), - CanvasWebGLMsg::EnableVertexAttribArray(attrib_id) => painter.enable_vertex_attrib_array(attrib_id), - CanvasWebGLMsg::GetAttribLocation(program_id, name, chan) => painter.get_attrib_location(program_id, name, chan), - CanvasWebGLMsg::GetShaderInfoLog(shader_id, chan) => painter.get_shader_info_log(shader_id, chan), - CanvasWebGLMsg::GetShaderParameter(shader_id, param_id, chan) => painter.get_shader_parameter(shader_id, param_id, chan), - CanvasWebGLMsg::GetUniformLocation(program_id, name, chan) => painter.get_uniform_location(program_id, name, chan), - CanvasWebGLMsg::CompileShader(shader_id) => painter.compile_shader(shader_id), - CanvasWebGLMsg::CreateProgram(chan) => painter.create_program(chan), - CanvasWebGLMsg::CreateShader(shader_type, chan) => painter.create_shader(shader_type, chan), - CanvasWebGLMsg::LinkProgram(program_id) => painter.link_program(program_id), - CanvasWebGLMsg::ShaderSource(shader_id, source) => painter.shader_source(shader_id, source), - CanvasWebGLMsg::Uniform4fv(uniform_id, data) => painter.uniform_4fv(uniform_id, data), - CanvasWebGLMsg::UseProgram(program_id) => painter.use_program(program_id), - CanvasWebGLMsg::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset) => { - painter.vertex_attrib_pointer_f32(attrib_id, size, normalized, stride, offset); - }, - CanvasWebGLMsg::Viewport(x, y, width, height) => painter.viewport(x, y, width, height), - } - }, + CanvasMsg::WebGL(message) => painter.handle_webgl_message(message), CanvasMsg::Common(message) => { match message { CanvasCommonMsg::Close => break,