aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas_traits
diff options
context:
space:
mode:
Diffstat (limited to 'components/canvas_traits')
-rw-r--r--components/canvas_traits/Cargo.toml3
-rw-r--r--components/canvas_traits/lib.rs194
2 files changed, 20 insertions, 177 deletions
diff --git a/components/canvas_traits/Cargo.toml b/components/canvas_traits/Cargo.toml
index 0b5962e5802..d1985af2a6b 100644
--- a/components/canvas_traits/Cargo.toml
+++ b/components/canvas_traits/Cargo.toml
@@ -34,6 +34,9 @@ path = "../plugins"
[dependencies.util]
path = "../util"
+[dependencies.webrender_traits]
+git = "https://github.com/glennw/webrender_traits"
+
[dependencies]
cssparser = {version = "0.5.3", features = ["heap_size", "serde-serialization"]}
euclid = {version = "0.6.2", features = ["plugins"]}
diff --git a/components/canvas_traits/lib.rs b/components/canvas_traits/lib.rs
index 4dc0a5904f8..8d6769da02a 100644
--- a/components/canvas_traits/lib.rs
+++ b/components/canvas_traits/lib.rs
@@ -5,7 +5,6 @@
#![crate_name = "canvas_traits"]
#![crate_type = "rlib"]
#![feature(custom_derive)]
-#![feature(nonzero)]
#![feature(plugin)]
#![plugin(heapsize_plugin, plugins, serde_macros)]
@@ -20,13 +19,13 @@ extern crate layers;
extern crate offscreen_gl_context;
extern crate serde;
extern crate util;
+extern crate webrender_traits;
use azure::azure::{AzColor, AzFloat};
use azure::azure_hl::{CapStyle, CompositionOp, JoinStyle};
use azure::azure_hl::{ColorPattern, DrawTarget, Pattern};
use azure::azure_hl::{ExtendMode, GradientStop, LinearGradientPattern, RadialGradientPattern};
use azure::azure_hl::{SurfaceFormat, SurfacePattern};
-use core::nonzero::NonZero;
use cssparser::RGBA;
use euclid::matrix2d::Matrix2D;
use euclid::point::Point2D;
@@ -35,13 +34,14 @@ use euclid::size::Size2D;
use gfx_traits::color;
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
use layers::platform::surface::NativeSurface;
-use offscreen_gl_context::GLContextAttributes;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use std::default::Default;
-use std::fmt;
use std::str::FromStr;
use std::sync::mpsc::Sender;
+pub use webrender_traits::{WebGLFramebufferBindingRequest, WebGLError, WebGLParameter, WebGLResult, WebGLContextId};
+pub use webrender_traits::WebGLCommand as CanvasWebGLMsg;
+
#[derive(Clone, Deserialize, Serialize)]
pub enum FillRule {
Nonzero,
@@ -64,8 +64,20 @@ pub enum CanvasCommonMsg {
}
#[derive(Clone, Deserialize, Serialize)]
+pub enum CanvasData {
+ Pixels(CanvasPixelData),
+ WebGL(WebGLContextId),
+}
+
+#[derive(Clone, Deserialize, Serialize)]
+pub struct CanvasPixelData {
+ pub image_data: IpcSharedMemory,
+ pub image_key: Option<webrender_traits::ImageKey>,
+}
+
+#[derive(Clone, Deserialize, Serialize)]
pub enum FromLayoutMsg {
- SendPixelContents(IpcSender<IpcSharedMemory>),
+ SendData(IpcSender<CanvasData>),
}
#[derive(Clone)]
@@ -124,178 +136,6 @@ pub enum Canvas2dMsg {
SetShadowColor(RGBA),
}
-#[derive(Clone, Deserialize, Serialize)]
-pub enum CanvasWebGLMsg {
- GetContextAttributes(IpcSender<GLContextAttributes>),
- ActiveTexture(u32),
- BlendColor(f32, f32, f32, f32),
- BlendEquation(u32),
- BlendEquationSeparate(u32, u32),
- BlendFunc(u32, u32),
- BlendFuncSeparate(u32, u32, u32, u32),
- AttachShader(u32, u32),
- BindAttribLocation(u32, u32, String),
- BufferData(u32, Vec<u8>, u32),
- BufferSubData(u32, isize, Vec<u8>),
- Clear(u32),
- ClearColor(f32, f32, f32, f32),
- ClearDepth(f64),
- ClearStencil(i32),
- ColorMask(bool, bool, bool, bool),
- CullFace(u32),
- FrontFace(u32),
- DepthFunc(u32),
- DepthMask(bool),
- DepthRange(f64, f64),
- Enable(u32),
- Disable(u32),
- CompileShader(u32, String),
- CreateBuffer(IpcSender<Option<NonZero<u32>>>),
- CreateFramebuffer(IpcSender<Option<NonZero<u32>>>),
- CreateRenderbuffer(IpcSender<Option<NonZero<u32>>>),
- CreateTexture(IpcSender<Option<NonZero<u32>>>),
- CreateProgram(IpcSender<Option<NonZero<u32>>>),
- CreateShader(u32, IpcSender<Option<NonZero<u32>>>),
- DeleteBuffer(u32),
- DeleteFramebuffer(u32),
- DeleteRenderbuffer(u32),
- DeleteTexture(u32),
- DeleteProgram(u32),
- DeleteShader(u32),
- BindBuffer(u32, u32),
- BindFramebuffer(u32, WebGLFramebufferBindingRequest),
- BindRenderbuffer(u32, u32),
- BindTexture(u32, u32),
- DrawArrays(u32, i32, i32),
- DrawElements(u32, i32, u32, i64),
- EnableVertexAttribArray(u32),
- GetBufferParameter(u32, u32, IpcSender<WebGLResult<WebGLParameter>>),
- GetParameter(u32, IpcSender<WebGLResult<WebGLParameter>>),
- GetProgramParameter(u32, u32, IpcSender<WebGLResult<WebGLParameter>>),
- GetShaderParameter(u32, u32, IpcSender<WebGLResult<WebGLParameter>>),
- GetAttribLocation(u32, String, IpcSender<Option<i32>>),
- GetUniformLocation(u32, String, IpcSender<Option<i32>>),
- PolygonOffset(f32, f32),
- Scissor(i32, i32, i32, i32),
- Hint(u32, u32),
- LineWidth(f32),
- PixelStorei(u32, i32),
- LinkProgram(u32),
- Uniform1f(i32, f32),
- Uniform4f(i32, f32, f32, f32, f32),
- UseProgram(u32),
- VertexAttrib(u32, f32, f32, f32, f32),
- VertexAttribPointer2f(u32, i32, bool, i32, u32),
- Viewport(i32, i32, i32, i32),
- TexImage2D(u32, i32, i32, i32, i32, u32, u32, Vec<u8>),
- TexParameteri(u32, u32, i32),
- TexParameterf(u32, u32, f32),
- DrawingBufferWidth(IpcSender<i32>),
- DrawingBufferHeight(IpcSender<i32>),
-}
-
-impl fmt::Debug for CanvasWebGLMsg {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- use CanvasWebGLMsg::*;
- let name = match *self {
- GetContextAttributes(..) => "GetContextAttributes",
- ActiveTexture(..) => "ActiveTexture",
- BlendColor(..) => "BlendColor",
- BlendEquation(..) => "BlendEquation",
- BlendEquationSeparate(..) => "BlendEquationSeparate",
- BlendFunc(..) => "BlendFunc",
- BlendFuncSeparate(..) => "BlendFuncSeparate",
- AttachShader(..) => "AttachShader",
- BindAttribLocation(..) => "BindAttribLocation",
- BufferData(..) => "BufferData",
- BufferSubData(..) => "BufferSubData",
- Clear(..) => "Clear",
- ClearColor(..) => "ClearColor",
- ClearDepth(..) => "ClearDepth",
- ClearStencil(..) => "ClearStencil",
- ColorMask(..) => "ColorMask",
- CullFace(..) => "CullFace",
- FrontFace(..) => "FrontFace",
- DepthFunc(..) => "DepthFunc",
- DepthMask(..) => "DepthMask",
- DepthRange(..) => "DepthRange",
- Enable(..) => "Enable",
- Disable(..) => "Disable",
- CompileShader(..) => "CompileShader",
- CreateBuffer(..) => "CreateBuffer",
- CreateFramebuffer(..) => "CreateFramebuffer",
- CreateRenderbuffer(..) => "CreateRenderbuffer",
- CreateTexture(..) => "CreateTexture",
- CreateProgram(..) => "CreateProgram",
- CreateShader(..) => "CreateShader",
- DeleteBuffer(..) => "DeleteBuffer",
- DeleteFramebuffer(..) => "DeleteFramebuffer",
- DeleteRenderbuffer(..) => "DeleteRenderBuffer",
- DeleteTexture(..) => "DeleteTexture",
- DeleteProgram(..) => "DeleteProgram",
- DeleteShader(..) => "DeleteShader",
- BindBuffer(..) => "BindBuffer",
- BindFramebuffer(..) => "BindFramebuffer",
- BindRenderbuffer(..) => "BindRenderbuffer",
- BindTexture(..) => "BindTexture",
- DrawArrays(..) => "DrawArrays",
- DrawElements(..) => "DrawElements",
- EnableVertexAttribArray(..) => "EnableVertexAttribArray",
- GetBufferParameter(..) => "GetBufferParameter",
- GetParameter(..) => "GetParameter",
- GetProgramParameter(..) => "GetProgramParameter",
- GetShaderParameter(..) => "GetShaderParameter",
- GetAttribLocation(..) => "GetAttribLocation",
- GetUniformLocation(..) => "GetUniformLocation",
- PolygonOffset(..) => "PolygonOffset",
- Scissor(..) => "Scissor",
- Hint(..) => "Hint",
- LineWidth(..) => "LineWidth",
- PixelStorei(..) => "PixelStorei",
- LinkProgram(..) => "LinkProgram",
- Uniform4f(..) => "Uniform4f",
- Uniform1f(..) => "Uniform1f",
- UseProgram(..) => "UseProgram",
- VertexAttrib(..) => "VertexAttrib",
- VertexAttribPointer2f(..) => "VertexAttribPointer2f",
- Viewport(..) => "Viewport",
- TexImage2D(..) => "TexImage2D",
- TexParameteri(..) => "TexParameteri",
- TexParameterf(..) => "TexParameterf",
- DrawingBufferWidth(..) => "DrawingBufferWidth",
- DrawingBufferHeight(..) => "DrawingBufferHeight",
- };
-
- write!(f, "CanvasWebGLMsg::{}(..)", name)
- }
-}
-
-#[derive(Clone, Copy, PartialEq, Deserialize, Serialize, HeapSizeOf)]
-pub enum WebGLError {
- InvalidEnum,
- InvalidOperation,
- InvalidValue,
- OutOfMemory,
- ContextLost,
-}
-
-pub type WebGLResult<T> = Result<T, WebGLError>;
-
-#[derive(Clone, Deserialize, Serialize)]
-pub enum WebGLFramebufferBindingRequest {
- Explicit(u32),
- Default,
-}
-
-#[derive(Clone, Deserialize, Serialize)]
-pub enum WebGLParameter {
- Int(i32),
- Bool(bool),
- String(String),
- Float(f32),
- Invalid,
-}
-
#[derive(Clone, Deserialize, Serialize, HeapSizeOf)]
pub struct CanvasGradientStop {
pub offset: f64,