#![allow(non_camel_case_types, non_snake_case)]
#![allow(dead_code)]
use capi::scdom::HELEMENT;
use capi::sctypes::{BOOL, LPCBYTE, LPCWSTR, LPVOID, UINT};
use capi::scvalue::VALUE;
MAKE_HANDLE!(#[doc = "Graphics native handle."] HGFX, _HGFX);
MAKE_HANDLE!(#[doc = "Image native handle."] HIMG, _HIMG);
MAKE_HANDLE!(#[doc = "Path native handle."] HPATH, _HPATH);
MAKE_HANDLE!(#[doc = "Text native handle."] HTEXT, _HTEXT);
pub type SC_REAL = f32;
pub type SC_POS = SC_REAL;
pub type SC_DIM = SC_REAL;
pub type SC_ANGLE = SC_REAL;
pub type SC_COLOR = u32;
#[repr(C)]
#[derive(Debug, PartialEq)]
pub enum GRAPHIN_RESULT {
PANIC = -1,
OK = 0,
BAD_PARAM = 1,
FAILURE = 2,
NOTSUPPORTED = 3,
}
impl std::error::Error for GRAPHIN_RESULT {}
impl std::fmt::Display for GRAPHIN_RESULT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
#[repr(C)]
#[derive(Debug, PartialEq)]
pub enum DRAW_PATH {
FILL_ONLY = 1,
STROKE_ONLY = 2,
FILL_AND_STROKE = 3,
}
#[repr(C)]
#[derive(Debug, PartialEq)]
pub enum LINE_JOIN {
MITER = 0,
ROUND = 1,
BEVEL = 2,
MITER_OR_BEVEL = 3,
}
#[repr(C)]
#[derive(Debug, PartialEq)]
pub enum LINE_CAP {
BUTT = 0,
SQUARE = 1,
ROUND = 2,
}
#[repr(C)]
#[derive(Debug, PartialEq)]
pub enum IMAGE_ENCODING {
RAW, PNG,
JPG,
WEBP,
}
#[repr(C)]
#[derive(Debug)]
pub struct SC_COLOR_STOP {
pub color: SC_COLOR,
pub offset: f32,
}
#[repr(C)]
#[allow(missing_docs)]
pub struct SciterGraphicsAPI {
pub imageCreate: extern "system" fn(poutImg: &mut HIMG, width: UINT, height: UINT, withAlpha: BOOL) -> GRAPHIN_RESULT,
pub imageCreateFromPixmap:
extern "system" fn(poutImg: &mut HIMG, pixmapWidth: UINT, pixmapHeight: UINT, withAlpha: BOOL, pixmap: LPCBYTE) -> GRAPHIN_RESULT,
pub imageAddRef: extern "system" fn(himg: HIMG) -> GRAPHIN_RESULT,
pub imageRelease: extern "system" fn(himg: HIMG) -> GRAPHIN_RESULT,
pub imageGetInfo: extern "system" fn(himg: HIMG, width: &mut UINT, height: &mut UINT, usesAlpha: &mut BOOL) -> GRAPHIN_RESULT,
pub imageClear: extern "system" fn(himg: HIMG, byColor: SC_COLOR) -> GRAPHIN_RESULT,
pub imageLoad: extern "system" fn(bytes: LPCBYTE, num_bytes: UINT, pout_img: &mut HIMG) -> GRAPHIN_RESULT,
pub imageSave: extern "system" fn(himg: HIMG, pfn: ImageWriteFunction, prm: LPVOID, encoding: IMAGE_ENCODING, quality: UINT) -> GRAPHIN_RESULT,
pub RGBA: extern "system" fn(red: UINT, green: UINT, blue: UINT, alpha: UINT) -> SC_COLOR,
pub gCreate: extern "system" fn(img: HIMG, pout_gfx: &mut HGFX) -> GRAPHIN_RESULT,
pub gAddRef: extern "system" fn(gfx: HGFX) -> GRAPHIN_RESULT,
pub gRelease: extern "system" fn(gfx: HGFX) -> GRAPHIN_RESULT,
pub gLine: extern "system" fn(hgfx: HGFX, x1: SC_POS, y1: SC_POS, x2: SC_POS, y2: SC_POS) -> GRAPHIN_RESULT,
pub gRectangle: extern "system" fn(hgfx: HGFX, x1: SC_POS, y1: SC_POS, x2: SC_POS, y2: SC_POS) -> GRAPHIN_RESULT,
pub gRoundedRectangle: extern "system" fn(
hgfx: HGFX,
x1: SC_POS,
y1: SC_POS,
x2: SC_POS,
y2: SC_POS,
radii8: *const SC_DIM,
) -> GRAPHIN_RESULT,
pub gEllipse: extern "system" fn(hgfx: HGFX, x: SC_POS, y: SC_POS, rx: SC_DIM, ry: SC_DIM) -> GRAPHIN_RESULT,
pub gArc:
extern "system" fn(hgfx: HGFX, x: SC_POS, y: SC_POS, rx: SC_POS, ry: SC_POS, start: SC_ANGLE, sweep: SC_ANGLE) -> GRAPHIN_RESULT,
pub gStar: extern "system" fn(hgfx: HGFX, x: SC_POS, y: SC_POS, r1: SC_DIM, r2: SC_DIM, start: SC_ANGLE, rays: UINT) -> GRAPHIN_RESULT,
pub gPolygon: extern "system" fn(hgfx: HGFX, xy: *const SC_POS, num_points: UINT) -> GRAPHIN_RESULT,
pub gPolyline: extern "system" fn(hgfx: HGFX, xy: *const SC_POS, num_points: UINT) -> GRAPHIN_RESULT,
pub pathCreate: extern "system" fn(path: &mut HPATH) -> GRAPHIN_RESULT,
pub pathAddRef: extern "system" fn(path: HPATH) -> GRAPHIN_RESULT,
pub pathRelease: extern "system" fn(path: HPATH) -> GRAPHIN_RESULT,
pub pathMoveTo: extern "system" fn(path: HPATH, x: SC_POS, y: SC_POS, relative: BOOL) -> GRAPHIN_RESULT,
pub pathLineTo: extern "system" fn(path: HPATH, x: SC_POS, y: SC_POS, relative: BOOL) -> GRAPHIN_RESULT,
pub pathArcTo: extern "system" fn(
path: HPATH,
x: SC_POS,
y: SC_POS,
angle: SC_ANGLE,
rx: SC_DIM,
ry: SC_DIM,
is_large_arc: BOOL,
clockwise: BOOL,
relative: BOOL,
) -> GRAPHIN_RESULT,
pub pathQuadraticCurveTo: extern "system" fn(path: HPATH, xc: SC_POS, yc: SC_POS, x: SC_POS, y: SC_POS, relative: BOOL) -> GRAPHIN_RESULT,
pub pathBezierCurveTo:
extern "system" fn(path: HPATH, xc1: SC_POS, yc1: SC_POS, xc2: SC_POS, yc2: SC_POS, x: SC_POS, y: SC_POS, relative: BOOL)
-> GRAPHIN_RESULT,
pub pathClosePath: extern "system" fn(path: HPATH) -> GRAPHIN_RESULT,
pub gDrawPath: extern "system" fn(hgfx: HGFX, path: HPATH, dpm: DRAW_PATH) -> GRAPHIN_RESULT,
pub gRotate: extern "system" fn(hgfx: HGFX, radians: SC_ANGLE, cx: Option<&SC_POS>, cy: Option<&SC_POS>) -> GRAPHIN_RESULT,
pub gTranslate: extern "system" fn(hgfx: HGFX, cx: SC_POS, cy: SC_POS) -> GRAPHIN_RESULT,
pub gScale: extern "system" fn(hgfx: HGFX, x: SC_DIM, y: SC_DIM) -> GRAPHIN_RESULT,
pub gSkew: extern "system" fn(hgfx: HGFX, dx: SC_DIM, dy: SC_DIM) -> GRAPHIN_RESULT,
pub gTransform:
extern "system" fn(hgfx: HGFX, m11: SC_POS, m12: SC_POS, m21: SC_POS, m22: SC_POS, dx: SC_POS, dy: SC_POS) -> GRAPHIN_RESULT,
pub gStateSave: extern "system" fn(hgfx: HGFX) -> GRAPHIN_RESULT,
pub gStateRestore: extern "system" fn(hgfx: HGFX) -> GRAPHIN_RESULT,
pub gLineWidth: extern "system" fn(hgfx: HGFX, width: SC_DIM) -> GRAPHIN_RESULT,
pub gLineJoin: extern "system" fn(hgfx: HGFX, join_type: LINE_JOIN) -> GRAPHIN_RESULT,
pub gLineCap: extern "system" fn(hgfx: HGFX, cap_type: LINE_CAP) -> GRAPHIN_RESULT,
pub gLineColor: extern "system" fn(hgfx: HGFX, color: SC_COLOR) -> GRAPHIN_RESULT,
pub gFillColor: extern "system" fn(hgfx: HGFX, color: SC_COLOR) -> GRAPHIN_RESULT,
pub gLineGradientLinear:
extern "system" fn(hgfx: HGFX, x1: SC_POS, y1: SC_POS, x2: SC_POS, y2: SC_POS, stops: *const SC_COLOR_STOP, nstops: UINT)
-> GRAPHIN_RESULT,
pub gFillGradientLinear:
extern "system" fn(hgfx: HGFX, x1: SC_POS, y1: SC_POS, x2: SC_POS, y2: SC_POS, stops: *const SC_COLOR_STOP, nstops: UINT)
-> GRAPHIN_RESULT,
pub gLineGradientRadial:
extern "system" fn(hgfx: HGFX, x: SC_POS, y: SC_POS, rx: SC_DIM, ry: SC_DIM, stops: *const SC_COLOR_STOP, nstops: UINT)
-> GRAPHIN_RESULT,
pub gFillGradientRadial:
extern "system" fn(hgfx: HGFX, x: SC_POS, y: SC_POS, rx: SC_DIM, ry: SC_DIM, stops: *const SC_COLOR_STOP, nstops: UINT)
-> GRAPHIN_RESULT,
pub gFillMode: extern "system" fn(hgfx: HGFX, even_odd: BOOL) -> GRAPHIN_RESULT,
pub textCreateForElement: extern "system" fn(ptext: &mut HTEXT, text: LPCWSTR, textLength: UINT, he: HELEMENT, classNameOrNull: LPCWSTR) -> GRAPHIN_RESULT,
pub textCreateForElementAndStyle:
extern "system" fn(ptext: &mut HTEXT, text: LPCWSTR, textLength: UINT, he: HELEMENT, style: LPCWSTR, styleLength: UINT) -> GRAPHIN_RESULT,
pub textAddRef: extern "system" fn(text: HTEXT) -> GRAPHIN_RESULT,
pub textRelease: extern "system" fn(text: HTEXT) -> GRAPHIN_RESULT,
pub textGetMetrics: extern "system" fn(
text: HTEXT,
minWidth: &mut SC_DIM,
maxWidth: &mut SC_DIM,
height: &mut SC_DIM,
ascent: &mut SC_DIM,
descent: &mut SC_DIM,
nLines: &mut UINT,
) -> GRAPHIN_RESULT,
pub textSetBox: extern "system" fn(text: HTEXT, width: SC_DIM, height: SC_DIM) -> GRAPHIN_RESULT,
pub gDrawText: extern "system" fn(hgfx: HGFX, text: HTEXT, px: SC_POS, py: SC_POS, position: UINT) -> GRAPHIN_RESULT,
#[allow(clippy::type_complexity)]
pub gDrawImage: extern "system" fn(
hgfx: HGFX,
himg: HIMG,
x: SC_POS,
y: SC_POS,
w: Option<&SC_DIM>,
h: Option<&SC_DIM>,
ix: Option<&UINT>,
iy: Option<&UINT>,
iw: Option<&UINT>,
ih: Option<&UINT>,
opacity: Option<&f32>,
) -> GRAPHIN_RESULT,
pub gWorldToScreen: extern "system" fn(hgfx: HGFX, inout_x: &mut SC_POS, inout_y: &mut SC_POS) -> GRAPHIN_RESULT,
pub gScreenToWorld: extern "system" fn(hgfx: HGFX, inout_x: &mut SC_POS, inout_y: &mut SC_POS) -> GRAPHIN_RESULT,
pub gPushClipBox: extern "system" fn(hgfx: HGFX, x1: SC_POS, y1: SC_POS, x2: SC_POS, y2: SC_POS, opacity: f32) -> GRAPHIN_RESULT,
pub gPushClipPath: extern "system" fn(hgfx: HGFX, hpath: HPATH, opacity: f32) -> GRAPHIN_RESULT,
pub gPopClip: extern "system" fn(hgfx: HGFX) -> GRAPHIN_RESULT,
pub imagePaint: extern "system" fn(himg: HIMG, pPainter: ImagePaintFunction, prm: LPVOID) -> GRAPHIN_RESULT,
pub vWrapGfx: extern "system" fn(hgfx: HGFX, toValue: *mut VALUE) -> GRAPHIN_RESULT,
pub vWrapImage: extern "system" fn(himg: HIMG, toValue: *mut VALUE) -> GRAPHIN_RESULT,
pub vWrapPath: extern "system" fn(hpath: HPATH, toValue: *mut VALUE) -> GRAPHIN_RESULT,
pub vWrapText: extern "system" fn(htext: HTEXT, toValue: *mut VALUE) -> GRAPHIN_RESULT,
pub vUnWrapGfx: extern "system" fn(fromValue: *const VALUE, phgfx: &mut HGFX) -> GRAPHIN_RESULT,
pub vUnWrapImage: extern "system" fn(fromValue: *const VALUE, phimg: &mut HIMG) -> GRAPHIN_RESULT,
pub vUnWrapPath: extern "system" fn(fromValue: *const VALUE, phpath: &mut HPATH) -> GRAPHIN_RESULT,
pub vUnWrapText: extern "system" fn(fromValue: *const VALUE, phtext: &mut HTEXT) -> GRAPHIN_RESULT,
pub gFlush: extern "system" fn(hgfx: HGFX) -> GRAPHIN_RESULT,
}
pub type ImageWriteFunction = extern "system" fn(prm: LPVOID, data: LPCBYTE, data_length: UINT);
pub type ImagePaintFunction = extern "system" fn(prm: LPVOID, hgfx: HGFX, width: UINT, height: UINT);