AIR扩展类 For Delphi

{*******************************************************}
{ }
{ Adobe AIR 扩展函数声明 }
{ }
{ 版权所有 (C) 2012 成都博大教育科技 }
{ }
{ 作者:冯明强 }
{ }
{ 主要函数说明: }
{ 1.FREInitializer 扩展初始化 }
{ 2.FREFinalizer 扩展终止化 }
{ 3.FREContextFinalizer上下文初始化 }
{ 4.FREContextFinalizer上下文终止化 }
{ 5._FREFunction所有自定义函数必须是这个结构 }
{ }
{ }
{*******************************************************}


unit ADOBE_CONFIDENTIAL;


interface

uses
Windows,SysUtils;

type
uint32_t = Cardinal;
uint8_t = Byte;
int32_t = Integer;
puint8_t = ^uint8_t;
pint32_t = ^int32_t;
puint32_t = ^uint32_t;
ppuint8_t = ^puint8_t;

{$IFNDEF FRNATIVEEXTENSIONS_H_}
{$DEFINE FRNATIVEEXTENSIONS_H_}
{$ENDIF}

{$IFDEF __cplusplus}
{$DEFINE __cplusplus}
{$ENDIF}

FREContext = Pointer;
FREObject = Pointer;
PFREObject = ^FREObject;
ArrayOfFREObject = array of FREObject;

type
FREFunction = function(ctx : FREContext; functionData :Pointer; argc : uint32_t;
argv : ArrayOfFREObject):FREObject;

PFREFunction = ^FREFunction;

FRENamedFunction = packed record
name : puint8_t;
funcdata : Pointer;
func : PFREFunction;
end;

ArrayFRENamedFunction = array of FRENamedFunction;
PArrayFRENamedFunction = ^ArrayFRENamedFunction;

FREContextInitializer = procedure( extData: Pointer; ctxType: puint8_t; ctx : FREContext;
numFunctionsToSet : puint32_t; functionsToSet : PArrayFRENamedFunction );cdecl;

FREContextFinalizer = procedure( ctx: FREContext );cdecl;

PFREContextInitializer = ^FREContextInitializer;
PFREContextFinalizer = ^FREContextFinalizer;

FREInitializer = procedure(extDataToSet : PPointer ; ctxInitializerToSet : PFREContextInitializer ;
ctxFinalizerToSet : PFREContextFinalizer );cdecl;

FREFinalizer = procedure(var extData : Pointer);cdecl;

const
FRE_OK = 0;
FRE_NO_SUCH_NAME = 1;
FRE_INVALID_OBJECT = 2;
FRE_TYPE_MISMATCH = 3;
FRE_ACTIONSCRIPT_ERROR = 4;
FRE_INVALID_ARGUMENT = 5;
FRE_READ_ONLY = 6;
FRE_WRONG_THREAD = 7;
FRE_ILLEGAL_STATE = 8;
FRE_INSUFFICIENT_MEMORY = 9;
FREResult_ENUMPADDING = $FFFFF; //* will ensure that C and C++ treat this enum as the same size. */

type
FREResult =

Integer;

///* Context Data ************************************************************/
//
///**
// * @returns FRE_OK
// * FRE_WRONG_THREAD
// * FRE_INVALID_ARGUMENT If nativeData is null.
// */

FREGetContextNativeData = function(ctx : FREContext ;nativeData : PPointer ):FREResult;
//FREResult FREGetContextNativeData( FREContext ctx, void** nativeData );

///**
// * @returns FRE_OK
// * FRE_INVALID_ARGUMENT
// * FRE_WRONG_THREAD
// */

FRESetContextNativeData = function(ctx : FREContext ;nativeData : Pointer):FREResult;
//FREResult FRESetContextNativeData( FREContext ctx, void* nativeData );

///**
// * @returns FRE_OK
// * FRE_WRONG_THREAD
// * FRE_INVALID_ARGUMENT If actionScriptData is null.
// */

FREGetContextActionScriptData = function(ctx : FREContext ; actionScriptData : PFREObject):FREResult;
//FREResult FREGetContextActionScriptData( FREContext ctx, FREObject *actionScriptData );

///* Primitive Types ************************************************************/
///**
// * These values must not be changed.
// */

FREObjectType = Integer;
PFREObjectType = PInteger;

const
FRE_TYPE_OBJECT = 0;
FRE_TYPE_NUMBER = 1;
FRE_TYPE_STRING = 2;
FRE_TYPE_BYTEARRAY = 3;
FRE_TYPE_ARRAY = 4;
FRE_TYPE_VECTOR = 5;
FRE_TYPE_BITMAPDATA = 6;
FRE_TYPE_BOOLEAN = 7;
FRE_TYPE_NULL = 8;
FREObjectType_ENUMPADDING = $FFFFF;

//typedef enum {
// FRE_TYPE_OBJECT = 0,
// FRE_TYPE_NUMBER = 1,
// FRE_TYPE_STRING = 2,
// FRE_TYPE_BYTEARRAY = 3,
// FRE_TYPE_ARRAY = 4,
// FRE_TYPE_VECTOR = 5,
// FRE_TYPE_BITMAPDATA = 6,
// FRE_TYPE_BOOLEAN = 7,
// FRE_TYPE_NULL = 8,
// FREObjectType_ENUMPADDING = 0xfffff /* will ensure that C and C++ treat this enum as the same size. */
//} FREObjectType;

type

///**
// * @returns FRE_OK
// * FRE_INVALID_OBJECT
// * FRE_WRONG_THREAD
// * FRE_INVALID_ARGUMENT If objectType is null.
// */
FREGetObjectType = function(Aobject :FREObject; objectType : PFREObjectType ):FREResult;
//FREResult FREGetObjectType( FREObject object, FREObjectType *objectType );


///**
// * @return FRE_OK
// * FRE_TYPE_MISMATCH
// * FRE_INVALID_OBJECT
// * FRE_INVALID_ARGUMENT
// * FRE_WRONG_THREAD
// */

FREGetObjectAsInt32 = function(Aobject : FREObject; value : pint32_t):FREResult;
FREGetObjectAsUint32 = function(Aobject : FREObject; value : puint32_t):FREResult;
FREGetObjectAsDouble = function(Aobject : FREObject; value : pdouble):FREResult;
FREGetObjectAsBool = function(Aobject : FREObject; value : puint32_t):FREResult;
//FREResult FREGetObjectAsInt32 ( FREObject object, int32_t *value );
//FREResult FREGetObjec

tAsUint32( FREObject object, uint32_t *value );
//FREResult FREGetObjectAsDouble( FREObject object, double *value );
//FREResult FREGetObjectAsBool ( FREObject object, uint32_t *value );

///**
// * @return FRE_OK
// * FRE_INVALID_ARGUMENT
// * FRE_WRONG_THREAD
// */

FRENewObjectFromInt32 = function( value : int32_t; Aobject : FREObject ):FREResult;
FRENewObjectFromUint32 = function(value : uint32_t ; Aobject : FREObject):FREResult;
FRENewObjectFromDouble = function(value : double; Aobject : FREObject):FREResult;
FRENewObjectFromBool = function(value : uint32_t ; Aobject : FREObject):FREResult;
//FREResult FRENewObjectFromInt32 ( int32_t value, FREObject *object );
//FREResult FRENewObjectFromUint32( uint32_t value, FREObject *object );
//FREResult FRENewObjectFromDouble( double value, FREObject *object );
//FREResult FRENewObjectFromBool ( uint32_t value, FREObject *object );

///**
// * Retrieves a string representation of the object referred to by
// * the given object. The referenced string is immutable and valid
// * only for duration of the call to a registered function. If the
// * caller wishes to keep the the string, they must keep a copy of it.
// *
// * @param object The string to be retrieved.
// *
// * @param length The size, in bytes, of the string. Includes the
// * null terminator.
// *
// * @param value A pointer to a possibly temporary copy of the string.
// *
// * @return FRE_OK
// * FRE_TYPE_MISMATCH
// * FRE_INVALID_OBJECT
// * FRE_INVALID_ARGUMENT
// * FRE_WRONG_THREAD
// */


FREGetObjectAsUTF8 = function(Aobject : FREObject ; length : puint32_t; value : ppuint8_t ):FREResult;
//FREResult FREGetObjectAsUTF8(
// FREObject object,
// uint32_t* length,
// const uint8_t** value
//);


FRENewObjectFromUTF8 = function(length : uint32_t ; value : puint8_t ; Aobject : PFREObject ):FREResult;
//FREResult FRENewObjectFromUTF8(
// uint32_t length,
// const uint8_t* value ,
// FREObject* object
//);



//FREResult FRENewObject(
// const uint8_t* className ,
// uint32_t argc ,
// FREObject argv[] ,
// FREObject* object ,
// FREObject* thrownException
//);
//
//FREResult FREGetObjectProperty(
// FREObject object ,
// const uint8_t* propertyName ,
// FREObject* propertyValue ,
// FREObject* thrownException
//);
//
//FREResult FRESetObjectProperty(
// FREObject object ,
// const uint8_t* propertyName ,
// FREObject propertyValue ,
// FREObject* thrownException
//);
//
//FREResult FRECallObjectMethod (
// FREObject object ,
// const uint8_t* methodName ,
// uint32_t

argc ,
// FREObject argv[] ,
// FREObject* result ,
// FREObject* thrownException
//);
//
////typedef struct {
//// uint32_t width; /* width of the BitmapData bitmap */
//// uint32_t height; /* height of the BitmapData bitmap */
//// uint32_t hasAlpha; /* if non-zero, pixel format is ARGB32, otherwise pixel format is _RGB32, host endianness */
//// uint32_t isPremultiplied; /* pixel color values are premultiplied with alpha if non-zero, un-multiplied if zero */
//// uint32_t lineStride32; /* line stride in number of 32 bit values, typically the same as nWidth */
//// uint32_t* bits32; /* pointer to the first 32-bit pixel of the bitmap data */
////} FREBitmapData;
//
//FREResult FREAcquireBitmapData(
// FREObject object ,
// FREBitmapData* descriptorToSet
//);
//
//FREResult FREInvalidateBitmapDataRect(
// FREObject object,
// uint32_t x ,
// uint32_t y ,
// uint32_t width ,
// uint32_t height
//);
//
//FREResult FREReleaseBitmapData( FREObject object );
//
////typedef struct {
//// uint32_t length;
//// uint8_t* bytes;
////} FREByteArray;
//
//FREResult FREAcquireByteArray(
// FREObject object ,
// FREByteArray* byteArrayToSet
//);
//
//FREResult FREReleaseByteArray( FREObject object );
//
//FREResult FREGetArrayLength(
// FREObject arrayOrVector,
// uint32_t* length
//);
//
//
//FREResult FRESetArrayLength(
// FREObject arrayOrVector,
// uint32_t length
//);
//
//
//FREResult FREGetArrayElementAt(
// FREObject arrayOrVector,
// uint32_t index ,
// FREObject* value
//);
//
//
//FREResult FRESetArrayElementAt(
// FREObject arrayOrVector,
// uint32_t index ,
// FREObject value
//);
//
//FREResult FREDispatchStatusEventAsync(
// FREContext ctx ,
// const uint8_t* code ,
// const uint8_t* level
//);


implementation

end.

相关文档
最新文档