#![allow(non_snake_case)]
use super::markers::*;
use super::types::*;
pub type FREFunction = unsafe extern "C" fn (
ctx: FREContext,
functionData: FREData,
argc: uint32_t,
argv: *const FREObject,
) -> FREObject;
#[repr(C)]
#[derive(Debug)]
pub struct FRENamedFunction {
pub name: FREStr,
pub functionData: FREData,
pub function: FREFunction,
}
pub type FREContextInitializer = unsafe extern "C" fn (
extData: FREData,
ctxType: FREStr,
ctx: FREContext,
numFunctionsToSet: *mut uint32_t,
functionsToSet: *mut *const FRENamedFunction,
);
pub type FREContextFinalizer = Option<unsafe extern "C" fn (
ctx: FREContext
)>;
pub type FREInitializer = unsafe extern "C" fn (
extDataToSet: *mut FREData,
ctxInitializerToSet: *mut FREContextInitializer,
ctxFinalizerToSet: *mut FREContextFinalizer,
);
pub type FREFinalizer = Option<unsafe extern "C" fn (
extData: FREData,
)>;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(transparent)]
pub struct FREResult(pub int32_t);
impl FREResult {
pub const FRE_OK: Self = Self(0);
pub const FRE_NO_SUCH_NAME: Self = Self(1);
pub const FRE_INVALID_OBJECT: Self = Self(2);
pub const FRE_TYPE_MISMATCH: Self = Self(3);
pub const FRE_ACTIONSCRIPT_ERROR: Self = Self(4);
pub const FRE_INVALID_ARGUMENT: Self = Self(5);
pub const FRE_READ_ONLY: Self = Self(6);
pub const FRE_WRONG_THREAD: Self = Self(7);
pub const FRE_ILLEGAL_STATE: Self = Self(8);
pub const FRE_INSUFFICIENT_MEMORY: Self = Self(9);
pub fn is_ok(self) -> bool {self == Self::FRE_OK}
pub fn is_err(self) -> bool {self != Self::FRE_OK}
}
impl std::fmt::Display for FREResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
impl std::fmt::UpperHex for FREResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
unsafe extern "C" {
pub fn FREGetContextNativeData(ctx: FREContext, nativeData: *mut FREData) -> FREResult;
pub fn FRESetContextNativeData(ctx: FREContext, nativeData: FREData) -> FREResult;
pub fn FREGetContextActionScriptData(ctx: FREContext, actionScriptData: *mut FREObject) -> FREResult;
pub fn FRESetContextActionScriptData(ctx: FREContext, actionScriptData: FREObject) -> FREResult;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(transparent)]
pub struct FREObjectType(pub int32_t);
impl FREObjectType {
pub const FRE_TYPE_OBJECT: Self = Self(0);
pub const FRE_TYPE_NUMBER: Self = Self(1);
pub const FRE_TYPE_STRING: Self = Self(2);
pub const FRE_TYPE_BYTEARRAY: Self = Self(3);
pub const FRE_TYPE_ARRAY: Self = Self(4);
pub const FRE_TYPE_VECTOR: Self = Self(5);
pub const FRE_TYPE_BITMAPDATA: Self = Self(6);
pub const FRE_TYPE_BOOLEAN: Self = Self(7);
pub const FRE_TYPE_NULL: Self = Self(8);
pub fn is_null(self) -> bool {self == Self::FRE_TYPE_NULL}
}
impl std::fmt::Display for FREObjectType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
impl std::fmt::UpperHex for FREObjectType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
unsafe extern "C" {
pub fn FREGetObjectType(object: FREObject, objectType: *mut FREObjectType) -> FREResult;
pub fn FREGetObjectAsInt32(object: FREObject, value: *mut int32_t) -> FREResult;
pub fn FREGetObjectAsUint32(object: FREObject, value: *mut uint32_t) -> FREResult;
pub fn FREGetObjectAsDouble(object: FREObject, value: *mut double) -> FREResult;
pub fn FREGetObjectAsBool(object: FREObject, value: *mut FREBoolean) -> FREResult;
pub fn FRENewObjectFromInt32(value: int32_t, object: *mut FREObject) -> FREResult;
pub fn FRENewObjectFromUint32(value: uint32_t, object: *mut FREObject) -> FREResult;
pub fn FRENewObjectFromDouble(value: double, object: *mut FREObject) -> FREResult;
pub fn FRENewObjectFromBool(value: FREBoolean, object: *mut FREObject) -> FREResult;
pub fn FREGetObjectAsUTF8(object: FREObject, length: *mut uint32_t, value: *mut FREStr) -> FREResult;
pub fn FRENewObjectFromUTF8(length: uint32_t, value: FREStr, object: *mut FREObject) -> FREResult;
pub fn FRETrace(ctx: FREContext, strTrace: FREStr) -> FREResult;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(transparent)]
pub struct FRERenderMode(pub int32_t);
impl FRERenderMode {
pub const FRE_RENDERMODE_UNKNOWN: Self = Self(0);
pub const FRE_RENDERMODE_NONE: Self = Self(1);
pub const FRE_RENDERMODE_CPU: Self = Self(2);
pub const FRE_RENDERMODE_DIRECT_OGLES: Self = Self(3);
pub const FRE_RENDERMODE_DIRECT_OGL: Self = Self(4);
pub const FRE_RENDERMODE_DIRECT_D3D9: Self = Self(5);
pub const FRE_RENDERMODE_DIRECT_D3D10: Self = Self(6);
pub const FRE_RENDERMODE_DIRECT_D3D11: Self = Self(7);
pub const FRE_RENDERMODE_SOFTWARE_GDI: Self = Self(8);
pub const FRE_RENDERMODE_GPU_OGLES: Self = Self(9);
}
impl std::fmt::Display for FRERenderMode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
impl std::fmt::UpperHex for FRERenderMode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {self.0.fmt(f)}
}
unsafe extern "C" {
pub fn FREGetRenderMode(ctx: FREContext, stage: FREObject, pRenderMode: *mut uint8_t) -> FREResult;
pub fn FRESetRenderSource(ctx: FREContext, source: FREObject, target: FREObject) -> FREResult;
pub fn FREMediaBufferLock(
ctx: FREContext,
mediaBuffer: FREObject,
pData: *mut FREBytes,
pWidth: *mut uint32_t,
pHeight: *mut uint32_t,
pStride: *mut uint32_t,
pFormat: *mut uint32_t,
) -> FREResult;
pub fn FREMediaBufferUnlock(ctx: FREContext, mediaBuffer: FREObject, bUpdate: uint32_t) -> FREResult;
pub fn FRENewObject(
className: FREStr,
argc: uint32_t,
argv: *mut FREObject,
object: *mut FREObject,
thrownException: *mut FREObject,
) -> FREResult;
pub fn FREGetObjectProperty(
object: FREObject,
propertyName: FREStr,
propertyValue: *mut FREObject,
thrownException: *mut FREObject,
) -> FREResult;
pub fn FRESetObjectProperty(
object: FREObject,
propertyName: FREStr,
propertyValue: FREObject,
thrownException: *mut FREObject,
) -> FREResult;
pub fn FRECallObjectMethod(
object: FREObject,
methodName: FREStr,
argc: uint32_t,
argv: *mut FREObject,
result: *mut FREObject,
thrownException: *mut FREObject,
) -> FREResult;
}
#[derive(Debug, Default)]
#[repr(C)]
pub struct FREBitmapData {
pub width: uint32_t,
pub height: uint32_t,
pub hasAlpha: FREBoolean,
pub isPremultiplied: FREBoolean,
pub lineStride32: uint32_t,
pub bits32: *mut uint32_t,
}
#[derive(Debug, Default)]
#[repr(C)]
pub struct FREBitmapData2 {
pub width: uint32_t,
pub height: uint32_t,
pub hasAlpha: FREBoolean,
pub isPremultiplied: FREBoolean,
pub lineStride32: uint32_t,
pub isInvertedY: FREBoolean,
pub bits32: *mut uint32_t,
}
unsafe extern "C" {
pub fn FREAcquireBitmapData(
object: FREObject,
descriptorToSet: *mut FREBitmapData,
) -> FREResult;
pub fn FREAcquireBitmapData2(
object: FREObject,
descriptorToSet: *mut FREBitmapData2
) -> FREResult;
pub fn FREInvalidateBitmapDataRect(
object: FREObject,
x: uint32_t,
y: uint32_t,
width: uint32_t,
height: uint32_t,
) -> FREResult;
pub fn FREReleaseBitmapData(object: FREObject) -> FREResult;
}
#[derive(Debug)]
#[repr(C)]
pub struct FREByteArray {
pub length: uint32_t,
pub bytes: FREBytes,
}
unsafe extern "C" {
pub fn FRENewByteArray(
byteArrayData: *mut FREByteArray,
handle: *mut FREObject,
) -> FREResult;
pub fn FREAcquireByteArray(
object: FREObject,
byteArrayToSet: *mut FREByteArray,
) -> FREResult;
pub fn FREReleaseByteArray(object: FREObject) -> FREResult;
pub fn FREGetArrayLength(
arrayOrVector: FREObject,
length: *mut uint32_t,
) -> FREResult;
pub fn FRESetArrayLength(
arrayOrVector: FREObject,
length: uint32_t,
) -> FREResult;
pub fn FREGetArrayElementAt(
arrayOrVector: FREObject,
index: uint32_t,
value: *mut FREObject,
) -> FREResult;
pub fn FRESetArrayElementAt(
arrayOrVector: FREObject,
index: uint32_t,
value: FREObject,
) -> FREResult;
pub fn FREAcquireNativeWindowHandle(
nativeWindow: FREObject,
handle: *mut FRENativeWindow,
) -> FREResult;
pub fn FREReleaseNativeWindowHandle(nativeWindow: FREObject) -> FREResult;
pub fn FREGetNativeContext3DHandle(
context3D: FREObject,
handle: *mut FREHandle,
) -> FREResult;
pub fn FREGetFREContextFromExtensionContext(
objExtensionContext: FREObject,
pContext: *mut FREContext,
) -> FREResult;
pub fn FREDispatchStatusEventAsync(
ctx: FREContext,
code: FREStr,
level: FREStr,
) -> FREResult;
}