#![allow(non_snake_case)]
use crate::markers::*;
use crate::types::*;
pub type FREFunction = unsafe extern "C" fn (
ctx: FREContext,
functionData: FREData,
argc: uint32_t,
argv: *const FREObject,
) -> FREObject;
#[derive(Debug)]
#[repr(C)]
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 = unsafe extern "C" fn (ctx: FREContext);
pub type FREInitializer = unsafe extern "C" fn (
extDataToSet: *mut FREData,
ctxInitializerToSet: *mut FREContextInitializer,
ctxFinalizerToSet: *mut Option<FREContextFinalizer>,
);
pub type FREFinalizer = unsafe extern "C" fn (extData: FREData);
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(transparent)]
#[must_use]
pub struct FREResult(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}
pub fn as_i32(self) -> i32 {self.0}
pub fn as_u32(self) -> u32 {self.0 as u32}
}
impl std::fmt::Display for FREResult {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {write!(f, "{:#010X}", self.as_u32())}}
unsafe extern "C" {
pub fn FREGetContextNativeData(ctx: FREContext, nativeData: *mut FREData) -> FREResult;
pub fn FRESetContextNativeData(ctx: FREContext, nativeData: FREData) -> FREResult;
pub fn FREGetContextAS3Data(ctx: FREContext, actionScriptData: *mut FREObject) -> FREResult;
pub fn FRESetContextAS3Data(ctx: FREContext, actionScriptData: FREObject) -> FREResult;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(transparent)]
pub struct FREObjectType(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}
pub fn as_i32(self) -> i32 {self.0}
pub fn as_u32(self) -> u32 {self.0 as u32}
}
impl std::fmt::Display for FREObjectType {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {write!(f, "{:#010X}", self.as_u32())}}
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(uint8_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);
pub fn as_i32(self) -> i32 {self.0 as i32}
pub fn as_u32(self) -> u32 {self.0 as u32}
}
impl std::fmt::Display for FRERenderMode {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {write!(f, "{:#010X}", self.as_u32())}}
unsafe extern "C" {
pub fn FREGetRenderMode(ctx: FREContext, stage: FREObject, pRenderMode: *mut FRERenderMode) -> 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)]
#[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)]
#[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;
}