use web_sys::ImageBitmap;
use super::{canvas::WebCanvas, device::WebDeviceContext};
use crate::{
base::Dimension,
bitmap::{BitmapBackend, BitmapPixelFormat},
error::GraphicsError,
geometry::{FSize, ISize},
Float,
};
#[derive(Clone, Debug)]
pub struct WebBitmap {
bitmap: ImageBitmap,
}
impl Dimension for WebBitmap {
fn size(&self) -> FSize {
FSize::new(self.bitmap.width() as Float, self.bitmap.height() as Float)
}
fn pixel_size(&self) -> ISize {
ISize::new(self.bitmap.width() as i32, self.bitmap.height() as i32)
}
}
impl BitmapBackend for WebBitmap {
type DeviceContextType = WebDeviceContext;
type CanvasType = WebCanvas;
fn new(
_context: Option<&Self::DeviceContextType>,
_width: usize,
_height: usize,
_pixel_format: BitmapPixelFormat,
_canvas: &Self::CanvasType,
) -> Result<Self, GraphicsError> {
Err(GraphicsError::NotImplemented)
}
fn from_buffer(
_context: Option<&Self::DeviceContextType>,
_buffer: &[u8],
_pitch: usize,
_width: usize,
_height: usize,
_pixel_format: BitmapPixelFormat,
_canvas: &Self::CanvasType,
) -> Result<Self, GraphicsError>
where
Self: Sized,
{
Err(GraphicsError::NotImplemented)
}
}
impl WebBitmap {
pub(super) fn image_bitmap(&self) -> &ImageBitmap {
&self.bitmap
}
}