mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Make HTMLCanvasElement::get_size return a Size2D<u32>
The changes keep trickling down.
This commit is contained in:
parent
b8dbf2dddd
commit
a3392610c3
15 changed files with 126 additions and 101 deletions
|
@ -16,7 +16,7 @@ use euclid::Size2D;
|
|||
pub struct CanvasPattern {
|
||||
reflector_: Reflector,
|
||||
surface_data: Vec<u8>,
|
||||
surface_size: Size2D<i32>,
|
||||
surface_size: Size2D<u32>,
|
||||
repeat_x: bool,
|
||||
repeat_y: bool,
|
||||
origin_clean: bool,
|
||||
|
@ -25,7 +25,7 @@ pub struct CanvasPattern {
|
|||
impl CanvasPattern {
|
||||
fn new_inherited(
|
||||
surface_data: Vec<u8>,
|
||||
surface_size: Size2D<i32>,
|
||||
surface_size: Size2D<u32>,
|
||||
repeat: RepetitionStyle,
|
||||
origin_clean: bool,
|
||||
) -> CanvasPattern {
|
||||
|
@ -39,7 +39,7 @@ impl CanvasPattern {
|
|||
CanvasPattern {
|
||||
reflector_: Reflector::new(),
|
||||
surface_data: surface_data,
|
||||
surface_size: surface_size,
|
||||
surface_size,
|
||||
repeat_x: x,
|
||||
repeat_y: y,
|
||||
origin_clean: origin_clean,
|
||||
|
@ -48,7 +48,7 @@ impl CanvasPattern {
|
|||
pub fn new(
|
||||
global: &GlobalScope,
|
||||
surface_data: Vec<u8>,
|
||||
surface_size: Size2D<i32>,
|
||||
surface_size: Size2D<u32>,
|
||||
repeat: RepetitionStyle,
|
||||
origin_clean: bool,
|
||||
) -> DomRoot<CanvasPattern> {
|
||||
|
|
|
@ -128,7 +128,7 @@ impl CanvasRenderingContext2D {
|
|||
canvas: Option<&HTMLCanvasElement>,
|
||||
image_cache: Arc<ImageCache>,
|
||||
base_url: ServoUrl,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
) -> CanvasRenderingContext2D {
|
||||
debug!("Creating new canvas rendering context.");
|
||||
let (sender, receiver) =
|
||||
|
@ -157,7 +157,7 @@ impl CanvasRenderingContext2D {
|
|||
pub fn new(
|
||||
global: &GlobalScope,
|
||||
canvas: &HTMLCanvasElement,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
) -> DomRoot<CanvasRenderingContext2D> {
|
||||
let window = window_from_node(canvas);
|
||||
let image_cache = window.image_cache();
|
||||
|
@ -173,7 +173,7 @@ impl CanvasRenderingContext2D {
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#concept-canvas-set-bitmap-dimensions
|
||||
pub fn set_bitmap_dimensions(&self, size: Size2D<i32>) {
|
||||
pub fn set_bitmap_dimensions(&self, size: Size2D<u32>) {
|
||||
self.reset_to_initial_state();
|
||||
self.ipc_renderer
|
||||
.send(CanvasMsg::Recreate(size, self.get_canvas_id()))
|
||||
|
@ -456,7 +456,7 @@ impl CanvasRenderingContext2D {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn fetch_image_data(&self, url: ServoUrl) -> Option<(Vec<u8>, Size2D<i32>)> {
|
||||
fn fetch_image_data(&self, url: ServoUrl) -> Option<(Vec<u8>, Size2D<u32>)> {
|
||||
let img = match self.request_image_from_cache(url) {
|
||||
ImageResponse::Loaded(img, _) => img,
|
||||
ImageResponse::PlaceholderLoaded(_, _) |
|
||||
|
@ -466,7 +466,7 @@ impl CanvasRenderingContext2D {
|
|||
},
|
||||
};
|
||||
|
||||
let image_size = Size2D::new(img.width as i32, img.height as i32);
|
||||
let image_size = Size2D::new(img.width, img.height);
|
||||
let image_data = match img.format {
|
||||
PixelFormat::BGRA8 => img.bytes.to_vec(),
|
||||
PixelFormat::K8 => panic!("K8 color type not supported"),
|
||||
|
|
|
@ -98,8 +98,8 @@ impl HTMLCanvasElement {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_size(&self) -> Size2D<i32> {
|
||||
Size2D::new(self.Width() as i32, self.Height() as i32)
|
||||
pub fn get_size(&self) -> Size2D<u32> {
|
||||
Size2D::new(self.Width(), self.Height())
|
||||
}
|
||||
|
||||
pub fn origin_is_clean(&self) -> bool {
|
||||
|
@ -277,7 +277,7 @@ impl HTMLCanvasElement {
|
|||
self.Height() != 0 && self.Width() != 0
|
||||
}
|
||||
|
||||
pub fn fetch_all_data(&self) -> Option<(Vec<u8>, Size2D<i32>)> {
|
||||
pub fn fetch_all_data(&self) -> Option<(Vec<u8>, Size2D<u32>)> {
|
||||
let size = self.get_size();
|
||||
|
||||
if size.width == 0 || size.height == 0 {
|
||||
|
|
|
@ -149,8 +149,8 @@ impl ImageData {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_size(&self) -> Size2D<i32> {
|
||||
Size2D::new(self.Width() as i32, self.Height() as i32)
|
||||
pub fn get_size(&self) -> Size2D<u32> {
|
||||
Size2D::new(self.Width(), self.Height())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -85,8 +85,7 @@ impl PaintRenderingContext2D {
|
|||
) {
|
||||
let size = size * device_pixel_ratio;
|
||||
self.device_pixel_ratio.set(device_pixel_ratio);
|
||||
self.context
|
||||
.set_bitmap_dimensions(size.to_untyped().to_i32());
|
||||
self.context.set_bitmap_dimensions(size.to_untyped().to_u32());
|
||||
self.scale_by_device_pixel_ratio();
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ impl WebGL2RenderingContext {
|
|||
fn new_inherited(
|
||||
window: &Window,
|
||||
canvas: &HTMLCanvasElement,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
attrs: GLContextAttributes,
|
||||
) -> Option<WebGL2RenderingContext> {
|
||||
let base = WebGLRenderingContext::new(window, canvas, WebGLVersion::WebGL2, size, attrs)?;
|
||||
|
@ -63,7 +63,7 @@ impl WebGL2RenderingContext {
|
|||
pub fn new(
|
||||
window: &Window,
|
||||
canvas: &HTMLCanvasElement,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
attrs: GLContextAttributes,
|
||||
) -> Option<DomRoot<WebGL2RenderingContext>> {
|
||||
WebGL2RenderingContext::new_inherited(window, canvas, size, attrs).map(|ctx| {
|
||||
|
@ -73,7 +73,7 @@ impl WebGL2RenderingContext {
|
|||
}
|
||||
|
||||
impl WebGL2RenderingContext {
|
||||
pub fn recreate(&self, size: Size2D<i32>) {
|
||||
pub fn recreate(&self, size: Size2D<u32>) {
|
||||
self.base.recreate(size)
|
||||
}
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ pub struct WebGLRenderingContext {
|
|||
#[ignore_malloc_size_of = "Because it's small"]
|
||||
current_vertex_attrib_0: Cell<(f32, f32, f32, f32)>,
|
||||
#[ignore_malloc_size_of = "Because it's small"]
|
||||
current_scissor: Cell<(i32, i32, i32, i32)>,
|
||||
current_scissor: Cell<(i32, i32, u32, u32)>,
|
||||
#[ignore_malloc_size_of = "Because it's small"]
|
||||
current_clear_color: Cell<(f32, f32, f32, f32)>,
|
||||
extension_manager: WebGLExtensions,
|
||||
|
@ -172,7 +172,7 @@ impl WebGLRenderingContext {
|
|||
window: &Window,
|
||||
canvas: &HTMLCanvasElement,
|
||||
webgl_version: WebGLVersion,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
attrs: GLContextAttributes,
|
||||
) -> Result<WebGLRenderingContext, String> {
|
||||
if let Some(true) = PREFS
|
||||
|
@ -229,7 +229,7 @@ impl WebGLRenderingContext {
|
|||
window: &Window,
|
||||
canvas: &HTMLCanvasElement,
|
||||
webgl_version: WebGLVersion,
|
||||
size: Size2D<i32>,
|
||||
size: Size2D<u32>,
|
||||
attrs: GLContextAttributes,
|
||||
) -> Option<DomRoot<WebGLRenderingContext>> {
|
||||
match WebGLRenderingContext::new_inherited(window, canvas, webgl_version, size, attrs) {
|
||||
|
@ -266,7 +266,7 @@ impl WebGLRenderingContext {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn recreate(&self, size: Size2D<i32>) {
|
||||
pub fn recreate(&self, size: Size2D<u32>) {
|
||||
let (sender, receiver) = webgl_channel().unwrap();
|
||||
self.webgl_sender.send_resize(size, sender).unwrap();
|
||||
|
||||
|
@ -517,7 +517,7 @@ impl WebGLRenderingContext {
|
|||
fn get_image_pixels(
|
||||
&self,
|
||||
source: TexImageSource,
|
||||
) -> Fallible<Option<(Vec<u8>, Size2D<i32>, bool)>> {
|
||||
) -> Fallible<Option<(Vec<u8>, Size2D<u32>, bool)>> {
|
||||
Ok(Some(match source {
|
||||
TexImageSource::ImageData(image_data) => {
|
||||
(image_data.get_data_array(), image_data.get_size(), false)
|
||||
|
@ -542,7 +542,7 @@ impl WebGLRenderingContext {
|
|||
ImageResponse::MetadataLoaded(_) => return Ok(None),
|
||||
};
|
||||
|
||||
let size = Size2D::new(img.width as i32, img.height as i32);
|
||||
let size = Size2D::new(img.width, img.height);
|
||||
|
||||
// For now Servo's images are all stored as BGRA8 internally.
|
||||
let mut data = match img.format {
|
||||
|
@ -2940,6 +2940,9 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
return self.webgl_error(InvalidValue);
|
||||
}
|
||||
|
||||
let width = width as u32;
|
||||
let height = height as u32;
|
||||
|
||||
self.current_scissor.set((x, y, width, height));
|
||||
self.send_command(WebGLCommand::Scissor(x, y, width, height));
|
||||
}
|
||||
|
@ -3791,8 +3794,8 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
target,
|
||||
level,
|
||||
internal_format,
|
||||
size.width,
|
||||
size.height,
|
||||
size.width as i32,
|
||||
size.height as i32,
|
||||
0,
|
||||
format,
|
||||
data_type,
|
||||
|
@ -4003,8 +4006,8 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
target,
|
||||
level,
|
||||
format,
|
||||
size.width,
|
||||
size.height,
|
||||
size.width as i32,
|
||||
size.height as i32,
|
||||
0,
|
||||
format,
|
||||
data_type,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue