| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef EMBEDDERS_OPENGLUI_COMMON_VM_GLUE_H_ |
| #define EMBEDDERS_OPENGLUI_COMMON_VM_GLUE_H_ |
| |
| #include <stdlib.h> |
| |
| #include "embedders/openglui/common/events.h" |
| #include "embedders/openglui/common/isized.h" |
| #include "include/dart_api.h" |
| |
| class VMGlue { |
| public: |
| explicit VMGlue(ISized* surface, |
| const char* script_path, |
| const char* extension_script = NULL, |
| const char* main_script = NULL, |
| int setup_flag = 0); |
| ~VMGlue() { |
| delete[] main_script_; |
| delete[] extension_script_; |
| } |
| |
| int InitializeVM(); |
| int StartMainIsolate(); |
| int CallSetup(bool force = false); |
| int CallUpdate(); |
| int CallShutdown(); |
| int OnMotionEvent(const char* funtion, int64_t when, |
| float move_x, float move_y); |
| int OnKeyEvent(const char* funtion, int64_t when, int32_t key_code, |
| bool isAltKeyDown, bool isCtrlKeyDown, bool isShiftKeyDown, |
| int32_t repeat); |
| inline void OnAccelerometerEvent(float x, float y, float z) { |
| if (x != x_ || y != y_ || z != z_) { |
| x_ = x; |
| y_ = y; |
| z_ = z; |
| accelerometer_changed_ = true; |
| } |
| } |
| |
| void FinishMainIsolate(); |
| |
| private: |
| int Invoke(const char *function, int argc, Dart_Handle* args, |
| bool failIfNotDefined = true); |
| |
| static Dart_Handle CheckError(Dart_Handle); |
| |
| static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri, |
| const char* main, |
| void* data, |
| char** error); |
| static Dart_Isolate CreateIsolateAndSetup(const char* script_uri, |
| const char* main, |
| void* data, char** error); |
| static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, |
| Dart_Handle library, |
| Dart_Handle urlHandle); |
| static Dart_Handle LoadSourceFromFile(const char* url); |
| static void ShutdownIsolate(void* callback_data); |
| |
| static bool initialized_vm_; |
| static char* extension_script_; |
| ISized* surface_; |
| Dart_Isolate isolate_; |
| bool initialized_script_; |
| char* main_script_; |
| float x_, y_, z_; // Last values from accelerometer. |
| bool accelerometer_changed_; |
| int setup_flag_; |
| }; |
| |
| #endif // EMBEDDERS_OPENGLUI_COMMON_VM_GLUE_H_ |
| |