#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 enum {
kFlutterAccessibilityFeatureAccessibleNavigation = 1 << 0,
kFlutterAccessibilityFeatureInvertColors = 1 << 1,
kFlutterAccessibilityFeatureDisableAnimations = 1 << 2,
kFlutterAccessibilityFeatureBoldText = 1 << 3,
kFlutterAccessibilityFeatureReduceMotion = 1 << 4,
} FlutterAccessibilityFeature;
typedef enum {
kFlutterSemanticsActionTap = 1 << 0,
kFlutterSemanticsActionLongPress = 1 << 1,
kFlutterSemanticsActionScrollLeft = 1 << 2,
kFlutterSemanticsActionScrollRight = 1 << 3,
kFlutterSemanticsActionScrollUp = 1 << 4,
kFlutterSemanticsActionScrollDown = 1 << 5,
kFlutterSemanticsActionIncrease = 1 << 6,
kFlutterSemanticsActionDecrease = 1 << 7,
kFlutterSemanticsActionShowOnScreen = 1 << 8,
kFlutterSemanticsActionMoveCursorForwardByCharacter = 1 << 9,
kFlutterSemanticsActionMoveCursorBackwardByCharacter = 1 << 10,
kFlutterSemanticsActionSetSelection = 1 << 11,
kFlutterSemanticsActionCopy = 1 << 12,
kFlutterSemanticsActionCut = 1 << 13,
kFlutterSemanticsActionPaste = 1 << 14,
kFlutterSemanticsActionDidGainAccessibilityFocus = 1 << 15,
kFlutterSemanticsActionDidLoseAccessibilityFocus = 1 << 16,
kFlutterSemanticsActionCustomAction = 1 << 17,
kFlutterSemanticsActionDismiss = 1 << 18,
kFlutterSemanticsActionMoveCursorForwardByWord = 1 << 19,
kFlutterSemanticsActionMoveCursorBackwardByWord = 1 << 20,
} FlutterSemanticsAction;
typedef enum {
kFlutterSemanticsFlagHasCheckedState = 1 << 0,
kFlutterSemanticsFlagIsChecked = 1 << 1,
kFlutterSemanticsFlagIsSelected = 1 << 2,
kFlutterSemanticsFlagIsButton = 1 << 3,
kFlutterSemanticsFlagIsTextField = 1 << 4,
kFlutterSemanticsFlagIsFocused = 1 << 5,
kFlutterSemanticsFlagHasEnabledState = 1 << 6,
kFlutterSemanticsFlagIsEnabled = 1 << 7,
kFlutterSemanticsFlagIsInMutuallyExclusiveGroup = 1 << 8,
kFlutterSemanticsFlagIsHeader = 1 << 9,
kFlutterSemanticsFlagIsObscured = 1 << 10,
kFlutterSemanticsFlagScopesRoute = 1 << 11,
kFlutterSemanticsFlagNamesRoute = 1 << 12,
kFlutterSemanticsFlagIsHidden = 1 << 13,
kFlutterSemanticsFlagIsImage = 1 << 14,
kFlutterSemanticsFlagIsLiveRegion = 1 << 15,
kFlutterSemanticsFlagHasToggledState = 1 << 16,
kFlutterSemanticsFlagIsToggled = 1 << 17,
kFlutterSemanticsFlagHasImplicitScrolling = 1 << 18,
} FlutterSemanticsFlag;
typedef enum {
kFlutterTextDirectionUnknown = 0,
kFlutterTextDirectionRTL = 1,
kFlutterTextDirectionLTR = 2,
} FlutterTextDirection;
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 void (*VsyncCallback)(void* , intptr_t );
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,
kAdd,
kRemove,
kHover,
} FlutterPointerPhase;
typedef enum {
kFlutterPointerSignalKindNone,
kFlutterPointerSignalKindScroll,
} FlutterPointerSignalKind;
typedef struct {
size_t struct_size;
FlutterPointerPhase phase;
size_t timestamp; double x;
double y;
int32_t device;
FlutterPointerSignalKind signal_kind;
double scroll_delta_x;
double scroll_delta_y;
} 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 {
double left;
double top;
double right;
double bottom;
} FlutterRect;
FLUTTER_EXPORT
extern const int32_t kFlutterSemanticsNodeIdBatchEnd;
typedef struct {
size_t struct_size;
int32_t id;
FlutterSemanticsFlag flags;
FlutterSemanticsAction actions;
int32_t text_selection_base;
int32_t text_selection_extent;
int32_t scroll_child_count;
int32_t scroll_index;
double scroll_position;
double scroll_extent_max;
double scroll_extent_min;
double elevation;
double thickness;
const char* label;
const char* hint;
const char* value;
const char* increased_value;
const char* decreased_value;
FlutterTextDirection text_direction;
FlutterRect rect;
FlutterTransformation transform;
size_t child_count;
const int32_t* children_in_traversal_order;
const int32_t* children_in_hit_test_order;
size_t custom_accessibility_actions_count;
const int32_t* custom_accessibility_actions;
} FlutterSemanticsNode;
FLUTTER_EXPORT
extern const int32_t kFlutterSemanticsCustomActionIdBatchEnd;
typedef struct {
size_t struct_size;
int32_t id;
FlutterSemanticsAction override_action;
const char* label;
const char* hint;
} FlutterSemanticsCustomAction;
typedef void (*FlutterUpdateSemanticsNodeCallback)(
const FlutterSemanticsNode* ,
void* );
typedef void (*FlutterUpdateSemanticsCustomActionCallback)(
const FlutterSemanticsCustomAction* ,
void* );
typedef struct _FlutterTaskRunner* FlutterTaskRunner;
typedef struct {
FlutterTaskRunner runner;
uint64_t task;
} FlutterTask;
typedef void (*FlutterTaskRunnerPostTaskCallback)(
FlutterTask ,
uint64_t ,
void* );
typedef struct {
size_t struct_size;
void* user_data;
BoolCallback runs_task_on_current_thread_callback;
FlutterTaskRunnerPostTaskCallback post_task_callback;
} FlutterTaskRunnerDescription;
typedef struct {
size_t struct_size;
const FlutterTaskRunnerDescription* platform_task_runner;
} FlutterCustomTaskRunners;
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;
FlutterUpdateSemanticsNodeCallback update_semantics_node_callback;
FlutterUpdateSemanticsCustomActionCallback
update_semantics_custom_action_callback;
const char* persistent_cache_path;
bool is_persistent_cache_read_only;
VsyncCallback vsync_callback;
const char* custom_dart_entrypoint;
const FlutterCustomTaskRunners* custom_task_runners;
} 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);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineUpdateSemanticsEnabled(FlutterEngine engine,
bool enabled);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineUpdateAccessibilityFeatures(
FlutterEngine engine,
FlutterAccessibilityFeature features);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineDispatchSemanticsAction(
FlutterEngine engine,
uint64_t id,
FlutterSemanticsAction action,
const uint8_t* data,
size_t data_length);
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineOnVsync(FlutterEngine engine,
intptr_t baton,
uint64_t frame_start_time_nanos,
uint64_t frame_target_time_nanos);
FLUTTER_EXPORT
void FlutterEngineTraceEventDurationBegin(const char* name);
FLUTTER_EXPORT
void FlutterEngineTraceEventDurationEnd(const char* name);
FLUTTER_EXPORT
void FlutterEngineTraceEventInstant(const char* name);
FLUTTER_EXPORT
FlutterEngineResult FlutterEnginePostRenderThreadTask(FlutterEngine engine,
VoidCallback callback,
void* callback_data);
FLUTTER_EXPORT
uint64_t FlutterEngineGetCurrentTime();
FLUTTER_EXPORT
FlutterEngineResult FlutterEngineRunTask(FlutterEngine engine,
const FlutterTask* task);
#if defined(__cplusplus)
} #endif
#endif