#ifndef FLUTTER_EMBEDDER_H_
#define FLUTTER_EMBEDDER_H_
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef FLUTTER_EXPORT
#define FLUTTER_EXPORT
#endif
#define FLUTTER_ENGINE_VERSION 1
typedef enum {
kSuccess = 0,
kInvalidLibraryVersion,
kInvalidArguments,
kInternalInconsistency,
} FlutterEngineResult;
typedef enum {
kOpenGL,
kSoftware,
} FlutterRendererType;
typedef struct _FlutterEngine* FlutterEngine;
typedef struct {
double scaleX;
double skewX;
double transX;
double skewY;
double scaleY;
double transY;
double pers0;
double pers1;
double pers2;
} FlutterTransformation;
typedef void (*VoidCallback)(void* );
typedef struct {
uint32_t target;
uint32_t name;
uint32_t format;
void* user_data;
VoidCallback destruction_callback;
} FlutterOpenGLTexture;
typedef bool (*BoolCallback)(void* );
typedef FlutterTransformation (*TransformationCallback)(void* );
typedef uint32_t (*UIntCallback)(void* );
typedef bool (*SoftwareSurfacePresentCallback)(void* ,
const void* ,
size_t ,
size_t );
typedef void* (*ProcResolver)(void* , const char* );
typedef bool (*TextureFrameCallback)(void* ,
int64_t ,
size_t ,
size_t ,
FlutterOpenGLTexture* );
typedef struct {
size_t struct_size;
BoolCallback make_current;
BoolCallback clear_current;
BoolCallback present;
UIntCallback fbo_callback;
BoolCallback make_resource_current;
bool fbo_reset_after_present;
TransformationCallback surface_transformation;
ProcResolver gl_proc_resolver;
TextureFrameCallback gl_external_texture_frame_callback;
} FlutterOpenGLRendererConfig;
typedef struct {
size_t struct_size;
SoftwareSurfacePresentCallback surface_present_callback;
} FlutterSoftwareRendererConfig;
typedef struct {
FlutterRendererType type;
union {
FlutterOpenGLRendererConfig open_gl;
FlutterSoftwareRendererConfig software;
};
} FlutterRendererConfig;
typedef struct {
size_t struct_size;
size_t width;
size_t height;
double pixel_ratio;
} FlutterWindowMetricsEvent;
typedef enum {
kCancel,
kUp,
kDown,
kMove,
} FlutterPointerPhase;
typedef struct {
size_t struct_size;
FlutterPointerPhase phase;
size_t timestamp; double x;
double y;
int32_t device;
} FlutterPointerEvent;
struct _FlutterPlatformMessageResponseHandle;
typedef struct _FlutterPlatformMessageResponseHandle
FlutterPlatformMessageResponseHandle;
typedef struct {
size_t struct_size;
const char* channel;
const uint8_t* message;
const size_t message_size;
const FlutterPlatformMessageResponseHandle* response_handle;
} FlutterPlatformMessage;
typedef void (*FlutterPlatformMessageCallback)(
const FlutterPlatformMessage* ,
void* );
typedef struct {
size_t struct_size;
const char* assets_path;
const char* main_path__unused__;
const char* packages_path__unused__;
const char* icu_data_path;
int command_line_argc;
const char* const* command_line_argv;
FlutterPlatformMessageCallback platform_message_callback;
const uint8_t* vm_snapshot_data;
size_t vm_snapshot_data_size;
const uint8_t* vm_snapshot_instructions;
size_t vm_snapshot_instructions_size;
const uint8_t* isolate_snapshot_data;
size_t isolate_snapshot_data_size;
const uint8_t* isolate_snapshot_instructions;
size_t isolate_snapshot_instructions_size;
VoidCallback root_isolate_create_callback;
} FlutterProjectArgs;
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineRun(size_t version,
const FlutterRendererConfig* config,
const FlutterProjectArgs* args,
void* user_data,
FlutterEngine* engine_out);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineShutdown(FlutterEngine engine);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineSendWindowMetricsEvent(
FlutterEngine engine,
const FlutterWindowMetricsEvent* event);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineSendPointerEvent(
FlutterEngine engine,
const FlutterPointerEvent* events,
size_t events_count);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineSendPlatformMessage(
FlutterEngine engine,
const FlutterPlatformMessage* message);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineSendPlatformMessageResponse(
FlutterEngine engine,
const FlutterPlatformMessageResponseHandle* handle,
const uint8_t* data,
size_t data_length);
FLUTTER_EXPORT
FlutterEngineResult __FlutterEngineFlushPendingTasksNow();
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineRegisterExternalTexture(
FlutterEngine engine,
int64_t texture_identifier);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineUnregisterExternalTexture(
FlutterEngine engine,
int64_t texture_identifier);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable(
FlutterEngine engine,
int64_t texture_identifier);
#if defined(__cplusplus)
} #endif
#endif