aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-08-25 09:23:00 -0600
committerbors-servo <metajack+bors@gmail.com>2015-08-25 09:23:00 -0600
commita109a333f1f95d4fc677b29e3613b2615514c080 (patch)
tree3509f4dc996823641e384972baf7a22aa5ad1ad9 /components/script/dom/canvasrenderingcontext2d.rs
parent4d0b4a7b8cda681d1cd6b6cd8e690c0793532d0b (diff)
parent6341c77700fa5f914c32c6153e9c532bc69474fd (diff)
downloadservo-a109a333f1f95d4fc677b29e3613b2615514c080.tar.gz
servo-a109a333f1f95d4fc677b29e3613b2615514c080.zip
Auto merge of #6770 - ecoal95:webgl-again, r=jdm
Add multiple WebGL calls and improve error detection Since it probably won't merge until multiprocess lands, I plan to use this PR to keep improving WebGL support until it can land. Main TODOs are integration of tests, since it seems https://github.com/KhronosGroup/WebGL/issues/1105 is going nowhere, adding missing calls and proper painting via native surfaces instead of readback. I can't resolve conflicts right now because of time but I will do it soon. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6770) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs24
1 files changed, 11 insertions, 13 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 9e2ec6d1446..03f4014ee7a 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -17,11 +17,16 @@ use dom::bindings::num::Finite;
use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::canvasgradient::{CanvasGradient, CanvasGradientStyle, ToFillOrStrokeStyle};
use dom::canvaspattern::CanvasPattern;
+use dom::htmlcanvaselement::utils as canvas_utils;
use dom::htmlcanvaselement::{HTMLCanvasElement, HTMLCanvasElementHelpers};
use dom::htmlimageelement::{HTMLImageElement, HTMLImageElementHelpers};
use dom::imagedata::{ImageData, ImageDataHelpers};
use dom::node::{window_from_node, NodeHelpers, NodeDamage};
+use msg::constellation_msg::Msg as ConstellationMsg;
+use net_traits::image::base::PixelFormat;
+use net_traits::image_cache_task::ImageResponse;
+
use cssparser::Color as CSSColor;
use cssparser::{Parser, RGBA};
use euclid::matrix2d::Matrix2D;
@@ -34,10 +39,6 @@ use canvas_traits::{CanvasMsg, Canvas2dMsg, CanvasCommonMsg};
use canvas_traits::{FillOrStrokeStyle, LinearGradientStyle, RadialGradientStyle, RepetitionStyle};
use canvas_traits::{LineCapStyle, LineJoinStyle, CompositionOrBlending};
-use msg::constellation_msg::Msg as ConstellationMsg;
-use net_traits::image::base::PixelFormat;
-use net_traits::image_cache_task::{ImageCacheChan, ImageResponse};
-
use ipc_channel::ipc::{self, IpcSender};
use num::{Float, ToPrimitive};
use std::borrow::ToOwned;
@@ -201,7 +202,7 @@ impl CanvasRenderingContext2D {
Size2D::new(source_rect_clipped.size.width,
source_rect_clipped.size.height));
- return (source_rect, dest_rect)
+ (source_rect, dest_rect)
}
//
@@ -364,9 +365,10 @@ impl CanvasRenderingContext2D {
PixelFormat::KA8 => panic!("KA8 color type not supported"),
};
- return Some((image_data, image_size));
+ Some((image_data, image_size))
}
+ // TODO(ecoal95): Move this to `HTMLCanvasElement`, and support WebGL contexts
fn fetch_canvas_data(&self,
canvas_element: &HTMLCanvasElement,
source_rect: Rect<f64>)
@@ -385,18 +387,14 @@ impl CanvasRenderingContext2D {
renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::GetImageData(source_rect.to_i32(),
image_size, sender))).unwrap();
- return Some((receiver.recv().unwrap(), image_size));
+ Some((receiver.recv().unwrap(), image_size))
}
+ #[inline]
fn request_image_from_cache(&self, url: Url) -> ImageResponse {
let canvas = self.canvas.root();
let window = window_from_node(canvas.r());
- let window = window.r();
- let image_cache = window.image_cache_task();
- let (response_chan, response_port) = ipc::channel().unwrap();
- image_cache.request_image(url, ImageCacheChan(response_chan), None);
- let result = response_port.recv().unwrap();
- result.image_response
+ canvas_utils::request_image_from_cache(window.r(), url)
}
fn create_drawable_rect(&self, x: f64, y: f64, w: f64, h: f64) -> Option<Rect<f32>> {