mirror of
https://github.com/denoland/deno.git
synced 2025-03-05 10:26:44 -05:00

This commits moves all `.d.ts` files from `ext/*` to `cli/tsc/dts`. Due to TSC snapshot removal, `cargo publish` is now erroring out, unable to find the declaration files. These files were moved to "cli/tsc/dts", because it's much easier than keeping them in extension directories, while still providing them compressed or uncompressed depending on the build type.
48 lines
1.6 KiB
Rust
48 lines
1.6 KiB
Rust
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
|
|
mod image_ops;
|
|
mod op_create_image_bitmap;
|
|
pub use image;
|
|
use image::ColorType;
|
|
use op_create_image_bitmap::op_create_image_bitmap;
|
|
|
|
#[derive(Debug, thiserror::Error, deno_error::JsError)]
|
|
pub enum CanvasError {
|
|
/// Image formats that is 32-bit depth are not supported currently due to the following reasons:
|
|
/// - e.g. OpenEXR, it's not covered by the spec.
|
|
/// - JPEG XL supported by WebKit, but it cannot be called a standard today.
|
|
/// https://github.com/whatwg/mimesniff/issues/143
|
|
///
|
|
#[class(type)]
|
|
#[error("Unsupported color type and bit depth: '{0:?}'")]
|
|
UnsupportedColorType(ColorType),
|
|
#[class("DOMExceptionInvalidStateError")]
|
|
#[error("Cannot decode image '{0}'")]
|
|
InvalidImage(image::ImageError),
|
|
#[class("DOMExceptionInvalidStateError")]
|
|
#[error("The chunk data is not big enough with the specified width: {0} and height: {1}")]
|
|
NotBigEnoughChunk(u32, u32),
|
|
#[class("DOMExceptionInvalidStateError")]
|
|
#[error("The width: {0} or height: {1} could not be zero")]
|
|
InvalidSizeZero(u32, u32),
|
|
#[class(generic)]
|
|
#[error(transparent)]
|
|
Lcms(#[from] lcms2::Error),
|
|
#[class(generic)]
|
|
#[error(transparent)]
|
|
Image(#[from] image::ImageError),
|
|
}
|
|
|
|
impl CanvasError {
|
|
/// Convert an [`image::ImageError`] to an [`CanvasError::InvalidImage`].
|
|
fn image_error_to_invalid_image(error: image::ImageError) -> Self {
|
|
CanvasError::InvalidImage(error)
|
|
}
|
|
}
|
|
|
|
deno_core::extension!(
|
|
deno_canvas,
|
|
deps = [deno_webidl, deno_web, deno_webgpu],
|
|
ops = [op_create_image_bitmap],
|
|
lazy_loaded_esm = ["01_image.js"],
|
|
);
|