mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #26009 - SasiDharKM:master, r=jdm
Implementation for ImageBitmap <!-- Please describe your changes on the following line: --> Created the boilerplate code for the image bitmap implementation. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #20650 <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
77b02393fb
8 changed files with 99 additions and 30 deletions
58
components/script/dom/imagebitmap.rs
Normal file
58
components/script/dom/imagebitmap.rs
Normal file
|
@ -0,0 +1,58 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use crate::dom::bindings::cell::DomRefCell;
|
||||
|
||||
use crate::dom::bindings::codegen::Bindings::ImageBitmapBinding::ImageBitmapMethods;
|
||||
use crate::dom::bindings::root::DomRoot;
|
||||
use crate::dom::globalscope::GlobalScope;
|
||||
|
||||
use crate::dom::bindings::error::Fallible;
|
||||
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
|
||||
use dom_struct::dom_struct;
|
||||
|
||||
use std::vec::Vec;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct ImageBitmap {
|
||||
reflector_: Reflector,
|
||||
width: u32,
|
||||
height: u32,
|
||||
bitmap_data: DomRefCell<Vec<u8>>,
|
||||
}
|
||||
|
||||
impl ImageBitmap {
|
||||
fn new_inherited(width_arg: u32, height_arg: u32) -> ImageBitmap {
|
||||
ImageBitmap {
|
||||
reflector_: Reflector::new(),
|
||||
width: width_arg,
|
||||
height: height_arg,
|
||||
bitmap_data: DomRefCell::new(vec![]),
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn new(global: &GlobalScope, width: u32, height: u32) -> Fallible<DomRoot<ImageBitmap>> {
|
||||
//assigning to a variable the return object of new_inherited
|
||||
let imagebitmap = Box::new(ImageBitmap::new_inherited(width, height));
|
||||
|
||||
Ok(reflect_dom_object(imagebitmap, global))
|
||||
}
|
||||
}
|
||||
|
||||
impl ImageBitmapMethods for ImageBitmap {
|
||||
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-height
|
||||
fn Height(&self) -> u32 {
|
||||
//to do: add a condition for checking detached internal slot
|
||||
//and return 0 if set to true
|
||||
self.height
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-imagebitmap-width
|
||||
fn Width(&self) -> u32 {
|
||||
//to do: add a condition to check detached internal slot
|
||||
////and return 0 if set to true
|
||||
self.width
|
||||
}
|
||||
}
|
|
@ -408,6 +408,7 @@ pub mod htmlulistelement;
|
|||
pub mod htmlunknownelement;
|
||||
pub mod htmlvideoelement;
|
||||
pub mod identityhub;
|
||||
pub mod imagebitmap;
|
||||
pub mod imagedata;
|
||||
pub mod inputevent;
|
||||
pub mod keyboardevent;
|
||||
|
|
36
components/script/dom/webidls/ImageBitmap.webidl
Normal file
36
components/script/dom/webidls/ImageBitmap.webidl
Normal file
|
@ -0,0 +1,36 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
/*
|
||||
* The origin of this IDL file is
|
||||
* https://html.spec.whatwg.org/multipage/#imagebitmap
|
||||
*
|
||||
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA.
|
||||
* You are granted a license to use, reproduce and create derivative works of this document.
|
||||
*/
|
||||
|
||||
//[Exposed=(Window,Worker), Serializable, Transferable]
|
||||
[Exposed=(Window,Worker)]
|
||||
interface ImageBitmap {
|
||||
readonly attribute unsigned long width;
|
||||
readonly attribute unsigned long height;
|
||||
//void close();
|
||||
};
|
||||
|
||||
typedef (CanvasImageSource or
|
||||
Blob or
|
||||
ImageData) ImageBitmapSource;
|
||||
|
||||
enum ImageOrientation { "none", "flipY" };
|
||||
enum PremultiplyAlpha { "none", "premultiply", "default" };
|
||||
enum ColorSpaceConversion { "none", "default" };
|
||||
enum ResizeQuality { "pixelated", "low", "medium", "high" };
|
||||
|
||||
dictionary ImageBitmapOptions {
|
||||
ImageOrientation imageOrientation = "none";
|
||||
PremultiplyAlpha premultiplyAlpha = "default";
|
||||
ColorSpaceConversion colorSpaceConversion = "default";
|
||||
[EnforceRange] unsigned long resizeWidth;
|
||||
[EnforceRange] unsigned long resizeHeight;
|
||||
ResizeQuality resizeQuality = "low";
|
||||
};
|
|
@ -29,9 +29,6 @@
|
|||
[SVGElement interface: attribute onmouseout]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -386,9 +383,6 @@
|
|||
[DataTransferItemList interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[DataTransfer interface: attribute items]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -662,9 +656,6 @@
|
|||
[SVGAElement interface: attribute hostname]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[SVGElement interface: attribute oncut]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -824,9 +815,6 @@
|
|||
[OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[SVGElement interface: attribute onauxclick]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -974,15 +962,9 @@
|
|||
[OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[History interface: attribute scrollRestoration]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: attribute height]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1145,9 +1127,6 @@
|
|||
[SVGSVGElement interface: attribute ononline]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface: attribute width]
|
||||
expected: FAIL
|
||||
|
||||
[DataTransfer interface: attribute types]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1262,9 +1241,6 @@
|
|||
[SVGElement interface: attribute onkeypress]
|
||||
expected: FAIL
|
||||
|
||||
[ImageBitmap interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
[The SharedWorker interface object should be exposed.]
|
||||
expected: FAIL
|
||||
|
||||
[The ImageBitmap interface object should be exposed.]
|
||||
expected: FAIL
|
||||
|
||||
[The CanvasPath interface object should be exposed.]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -56,4 +53,3 @@
|
|||
|
||||
[The IDBTransaction interface object should be exposed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -13863,14 +13863,14 @@
|
|||
]
|
||||
],
|
||||
"interfaces.html": [
|
||||
"12f1d0b7f17be6575d4527423aed0ec845c4c2d5",
|
||||
"dc9a1f5f378bc50487bfb7dc3db6d121d2f325ca",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"interfaces.worker.js": [
|
||||
"c1223084790b2980c8184e3cd9ab5ae17bc8b303",
|
||||
"a74a91489541ab99ae58001e3f63afc9ecc5c553",
|
||||
[
|
||||
"mozilla/interfaces.worker.html",
|
||||
{}
|
||||
|
|
|
@ -161,6 +161,7 @@ test_interfaces([
|
|||
"HTMLUnknownElement",
|
||||
"HTMLVideoElement",
|
||||
"ImageData",
|
||||
"ImageBitmap",
|
||||
"Image",
|
||||
"InputEvent",
|
||||
"KeyboardEvent",
|
||||
|
|
|
@ -35,6 +35,7 @@ test_interfaces([
|
|||
"Headers",
|
||||
"History",
|
||||
"ImageData",
|
||||
"ImageBitmap",
|
||||
"MessageChannel",
|
||||
"MessageEvent",
|
||||
"MessagePort",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue