rsciter/api/
graphics.rs

1use super::call_method;
2use crate::{bindings, Error, Result};
3
4#[derive(Debug, Clone, Copy)]
5pub struct GraphicsApi<'api> {
6    raw: &'api bindings::SciterGraphicsAPI,
7}
8
9impl<'api> From<&'api bindings::SciterGraphicsAPI> for GraphicsApi<'api> {
10    fn from(value: &'api bindings::SciterGraphicsAPI) -> Self {
11        Self { raw: value }
12    }
13}
14
15impl GraphicsApi<'_> {
16    pub fn image_add_ref(&self, himg: bindings::HIMG) -> Result<()> {
17        let res = call_method!(self, imageAddRef(himg))?;
18        res.into()
19    }
20}
21
22#[repr(i32)]
23#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
24pub enum GraphinError {
25    Panic = bindings::GRAPHIN_RESULT::GRAPHIN_PANIC as i32,
26    BadParam = bindings::GRAPHIN_RESULT::GRAPHIN_BAD_PARAM as i32,
27    Failure = bindings::GRAPHIN_RESULT::GRAPHIN_FAILURE as i32,
28    NotSupported = bindings::GRAPHIN_RESULT::GRAPHIN_NOTSUPPORTED as i32,
29}
30
31impl From<bindings::GRAPHIN_RESULT> for Result<()> {
32    fn from(value: bindings::GRAPHIN_RESULT) -> Self {
33        match value {
34            bindings::GRAPHIN_RESULT::GRAPHIN_OK => Ok(()),
35            bindings::GRAPHIN_RESULT::GRAPHIN_PANIC => {
36                Err(Error::GraphinError(GraphinError::Panic))
37            }
38            bindings::GRAPHIN_RESULT::GRAPHIN_BAD_PARAM => {
39                Err(Error::GraphinError(GraphinError::BadParam))
40            }
41            bindings::GRAPHIN_RESULT::GRAPHIN_FAILURE => {
42                Err(Error::GraphinError(GraphinError::Failure))
43            }
44            bindings::GRAPHIN_RESULT::GRAPHIN_NOTSUPPORTED => {
45                Err(Error::GraphinError(GraphinError::NotSupported))
46            }
47        }
48    }
49}