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}