| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| // |
| // Created by Darin on 12/02/2018. |
| // |
| |
| #ifndef WEEXV8_WEEXAPIHEADER_H |
| #define WEEXV8_WEEXAPIHEADER_H |
| |
| #include <vector> |
| #include <set> |
| #include <map> |
| #ifdef OS_ANDROID |
| #include <jni.h> |
| #include "IPC/IPCResult.h" |
| #endif |
| |
| namespace WeexCore { |
| class WXCoreMargin; |
| class WXCorePadding; |
| class WXCoreBorderWidth; |
| class WXCoreSize; |
| } // namespace WeexCore |
| using namespace WeexCore; |
| |
| struct WeexString { |
| uint32_t length; |
| uint16_t content[1]; |
| }; |
| |
| struct WeexByteArray { |
| uint32_t length; |
| char content[1]; |
| }; |
| |
| class WeexJSResult{ |
| public: |
| std::unique_ptr<char[]> data; |
| int length = 0; |
| }; |
| |
| typedef struct InitFrameworkParams { |
| WeexByteArray *type; |
| WeexByteArray *value; |
| } INIT_FRAMEWORK_PARAMS; |
| |
| |
| enum class ParamsType { |
| INT32 = 1, |
| INT64, |
| FLOAT, |
| DOUBLE, |
| JSONSTRING, |
| STRING, |
| BYTEARRAY, /* terminated with zero. */ |
| VOID, |
| JSUNDEFINED, |
| END, |
| }; |
| |
| |
| typedef union ExecJsParamValue { |
| int32_t int32Value; |
| int64_t int64Value; |
| float floatValue; |
| double doubleValue; |
| WeexString *string; |
| WeexByteArray *byteArray; |
| } EXEC_JS_PARAM_VALUE; |
| |
| typedef struct ValueWithType { |
| ParamsType type; |
| EXEC_JS_PARAM_VALUE value; |
| } VALUE_WITH_TYPE; |
| |
| |
| #ifdef OS_ANDROID |
| |
| typedef void (*FuncSetJSVersion)(const char *jsVersion); |
| |
| typedef void (*FuncReportException)(const char *pageId, const char *func, const char *exception_string); |
| typedef void (*FuncReportServerCrash)(const char *instance_id); |
| typedef void (*FuncReportNativeInitStatus)(const char *status_code, const char *error_msg); |
| |
| typedef void (*FuncCallNative)(const char *pageId, const char *task, const char *callback); |
| |
| typedef std::unique_ptr<ValueWithType> (*FuncCallNativeModule)(const char *pageId, const char *module, const char *method, |
| const char *arguments, int argumentsLen, const char *options, int optionsLen); |
| |
| typedef void (*FuncCallNativeComponent)(const char *pageId, const char *ref, |
| const char *method, const char *arguments, int argumentsLen, const char *options, int optionsLen); |
| |
| typedef void (*FuncCallAddElement)(const char *pageId, const char *parentRef, const char *domStr, int domLen, |
| const char *index_cstr); |
| |
| typedef void (*FuncSetTimeout)(const char *callbackId, const char *time); |
| |
| typedef void (*FuncCallNativeLog)(const char *str_array); |
| |
| typedef void (*FuncCallCreateBody)(const char *pageId, const char *domStr, int domStrLen); |
| |
| typedef int (*FuncCallUpdateFinish)(const char *pageId, const char *task,int taskLen, const char *callback, int callbackLen); |
| |
| typedef void (*FuncCallCreateFinish)(const char *pageId); |
| |
| typedef int (*FuncCallRefreshFinish)(const char *pageId, const char *task, const char *callback); |
| |
| typedef void (*FuncCallUpdateAttrs)(const char *pageId, const char *ref, const char *data, int dataLen); |
| |
| typedef void (*FuncCallUpdateStyle)(const char *pageId, const char *ref, const char *data, int dataLen); |
| |
| typedef void (*FuncCallRemoveElement)(const char *pageId, const char *ref); |
| |
| typedef void (*FuncCallMoveElement)(const char *pageId, const char *ref, const char *parentRef, int index); |
| |
| typedef void (*FuncCallAddEvent)(const char *pageId, const char *ref, const char *event); |
| |
| typedef void (*FuncCallRemoveEvent)(const char *pageId, const char *ref, const char *event); |
| |
| typedef int (*FuncSetInterval)(const char *pageId, const char *callbackId, const char *_time); |
| |
| typedef void (*FuncClearInterval)(const char *pageId, const char *callbackId); |
| |
| typedef const char *(*FuncCallGCanvasLinkNative)(const char *pageId, int type, const char *args); |
| |
| typedef const char *(*FuncT3dLinkNative)(int type, const char *args); |
| |
| typedef void (*FuncCallHandlePostMessage)(const char *vimId, const char *data, int dataLength); |
| |
| typedef void |
| (*FuncCallDIspatchMessage)(const char *clientId, const char *data, int dataLength, const char *callback, const char *vmId); |
| |
| typedef void |
| (*FuncOnReceivedResult)(long callback_id, std::unique_ptr<WeexJSResult>& result); |
| |
| |
| typedef struct FunctionsExposedByCore { |
| FuncSetJSVersion funcSetJSVersion; |
| FuncReportException funcReportException; |
| FuncCallNative funcCallNative; |
| FuncCallNativeModule funcCallNativeModule; |
| FuncCallNativeComponent funcCallNativeComponent; |
| FuncCallAddElement funcCallAddElement; |
| FuncSetTimeout funcSetTimeout; |
| FuncCallNativeLog funcCallNativeLog; |
| FuncCallCreateBody funcCallCreateBody; |
| FuncCallUpdateFinish funcCallUpdateFinish; |
| FuncCallCreateFinish funcCallCreateFinish; |
| FuncCallRefreshFinish funcCallRefreshFinish; |
| FuncCallUpdateAttrs funcCallUpdateAttrs; |
| FuncCallUpdateStyle funcCallUpdateStyle; |
| FuncCallRemoveElement funcCallRemoveElement; |
| FuncCallMoveElement funcCallMoveElement; |
| FuncCallAddEvent funcCallAddEvent; |
| FuncCallRemoveEvent funcCallRemoveEvent; |
| FuncSetInterval funcSetInterval; |
| FuncClearInterval funcClearInterval; |
| FuncCallGCanvasLinkNative funcCallGCanvasLinkNative; |
| FuncT3dLinkNative funcT3dLinkNative; |
| FuncCallHandlePostMessage funcCallHandlePostMessage; |
| FuncCallDIspatchMessage funcCallDIspatchMessage; |
| FuncOnReceivedResult funcOnReceivedResult; |
| } FunctionsExposedByCore; |
| |
| typedef void (*FuncCallSetJSVersion)(const char* version); |
| typedef int (*CallNative)(const char *pageId, const char *task, const char *callback); |
| typedef int (*FuncCreateBody)(const char* page_id, const char *component_type, const char* ref, |
| std::map<std::string, std::string> *styles, |
| std::map<std::string, std::string> *attributes, |
| std::set<std::string> *events, |
| const WXCoreMargin &margins, |
| const WXCorePadding &paddings, |
| const WXCoreBorderWidth &borders); |
| typedef int (*FuncCreateFinish)(const char *pageId); |
| typedef int (*FuncAddElement)(const char* page_id, const char *component_type, const char* ref, |
| int &index, const char* parentRef, |
| std::map<std::string, std::string> *styles, |
| std::map<std::string, std::string> *attributes, |
| std::set<std::string> *events, |
| const WXCoreMargin &margins, |
| const WXCorePadding &paddings, |
| const WXCoreBorderWidth &borders, |
| bool willLayout); |
| typedef int (*FuncRemoveElement)(const char *pageId, const char *ref); |
| typedef int (*FuncMoveElement)(const char *pageId, const char *ref, const char *parentRef, int index); |
| typedef int (*FuncAddEvent)(const char *pageId, const char *ref, const char *event); |
| typedef int (*FuncRemoveEvent)(const char *pageId, const char *ref, const char *event); |
| typedef int (*FuncUpdateStyle)(const char* page_id, const char* ref, |
| std::vector<std::pair<std::string, std::string>> *style, |
| std::vector<std::pair<std::string, std::string>> *margin, |
| std::vector<std::pair<std::string, std::string>> *padding, |
| std::vector<std::pair<std::string, std::string>> *border); |
| typedef int (*FuncUpdateAttr)(const char* page_id, const char* ref, |
| std::vector<std::pair<std::string, std::string>> *attrs); |
| typedef int (*FuncLayout)(const char *page_id, const char *ref, |
| int top, int bottom, int left, int right, |
| int height, int width, int index); |
| typedef int (*FuncAppendTreeCreateFinish)(const char* page_id, const char* ref); |
| typedef int (*FuncHasTransitionPros)(const char* page_id, const char* ref, |
| std::vector<std::pair<std::string, std::string>> *style); |
| typedef WXCoreSize (*InvokeMeasureFunction)(const char* page_id, long render_ptr, float width, int width_measure_mode, float height, int height_measure_mode); |
| typedef void (*InvokeLayoutBefore)(const char* page_id, long render_ptr); |
| typedef void (*InvokeLayoutAfter)(const char* page_id, long render_ptr, float width, float height); |
| typedef struct PlatformExposeFunctions { |
| FuncCallSetJSVersion set_js_version; |
| FuncReportException report_exception; |
| FuncReportServerCrash report_server_crash; |
| FuncReportNativeInitStatus report_native_Init_status; |
| CallNative call_native; |
| FuncCallNativeModule call_native_module; |
| FuncCallNativeComponent call_native_component; |
| FuncAddElement add_element; |
| FuncSetTimeout set_timeout; |
| FuncCallNativeLog native_log; |
| FuncCreateBody create_body; |
| FuncCallUpdateFinish update_finish; |
| FuncCreateFinish create_finish; |
| FuncCreateFinish render_success; |
| FuncCallRefreshFinish refresh_finish; |
| FuncUpdateAttr update_attrs; |
| FuncUpdateStyle update_style; |
| FuncRemoveElement remove_element; |
| FuncMoveElement move_element; |
| FuncAddEvent add_event; |
| FuncRemoveEvent remove_event; |
| FuncCallHandlePostMessage post_message; |
| FuncCallDIspatchMessage dispatch_message; |
| FuncLayout layout; |
| FuncAppendTreeCreateFinish append_tree_create_finish; |
| FuncHasTransitionPros has_transition_pros; |
| InvokeMeasureFunction invoke_measure_function; |
| InvokeLayoutBefore invoke_layout_before; |
| InvokeLayoutAfter invoke_layout_after; |
| } PlatformExposeFunctions; |
| |
| |
| typedef int (*FuncInitFramework)(const char *script, std::vector<INIT_FRAMEWORK_PARAMS *> ¶ms); |
| |
| |
| typedef int (*FuncInitAppFramework)(const char *instanceId, const char *appFramework, |
| std::vector<INIT_FRAMEWORK_PARAMS *> ¶ms); |
| |
| typedef int (*FuncCreateAppContext)(const char *instanceId, const char *jsBundle); |
| |
| typedef std::unique_ptr<WeexJSResult> (*FuncExeJSOnAppWithResult)(const char *instanceId, const char *jsBundle); |
| |
| typedef int (*FuncCallJSOnAppContext)(const char *instanceId, const char *func, std::vector<VALUE_WITH_TYPE *> ¶ms); |
| |
| typedef int (*FuncDestroyAppContext)(const char *instanceId); |
| |
| typedef int (*FuncExeJsService)(const char *source); |
| |
| typedef int (*FuncExeCTimeCallback)(const char *source); |
| |
| typedef int (*FuncExeJS)(const char *instanceId, const char *nameSpace, const char *func, |
| std::vector<VALUE_WITH_TYPE *> ¶ms); |
| |
| typedef std::unique_ptr<WeexJSResult>(*FuncExeJSWithResult)(const char *instanceId, const char *nameSpace, const char *func, |
| std::vector<VALUE_WITH_TYPE *> ¶ms); |
| |
| typedef void(*FuncExeJSWithResultId)(const char *instanceId, const char *nameSpace, const char *func, |
| std::vector<VALUE_WITH_TYPE *> ¶ms, long callback_id); |
| |
| typedef int (*FuncCreateInstance)(const char *instanceId, const char *func, const char *script, const char *opts, |
| const char *initData, const char *extendsApi); |
| |
| typedef std::unique_ptr<WeexJSResult> (*FuncExeJSOnInstance)(const char *instanceId, const char *script); |
| |
| typedef int (*FuncDestroyInstance)(const char *instanceId); |
| |
| typedef int (*FuncUpdateGlobalConfig)(const char *config); |
| |
| typedef struct FunctionsExposedByJS { |
| FuncInitFramework funcInitFramework; |
| FuncInitAppFramework funcInitAppFramework; |
| FuncCreateAppContext funcCreateAppContext; |
| FuncExeJSOnAppWithResult funcExeJSOnAppWithResult; |
| FuncCallJSOnAppContext funcCallJSOnAppContext; |
| FuncDestroyAppContext funcDestroyAppContext; |
| FuncExeJsService funcExeJsService; |
| FuncExeCTimeCallback funcExeCTimeCallback; |
| FuncExeJS funcExeJS; |
| FuncExeJSWithResult funcExeJSWithResult; |
| FuncExeJSWithResultId funcExeJSWithResultId; |
| FuncCreateInstance funcCreateInstance; |
| FuncExeJSOnInstance funcExeJSOnInstance; |
| FuncDestroyInstance funcDestroyInstance; |
| FuncUpdateGlobalConfig funcUpdateGlobalConfig; |
| } FunctionsExposedByJS; |
| |
| |
| typedef void (*SetDefaultHeightAndWidthIntoRootDomCallback)(const std::string &instance_id, |
| float default_width, |
| float default_height, |
| bool is_width_wrap_content, |
| bool is_height_wrap_content); |
| typedef void (*OnInstanceCloseCallback)(const std::string &instance_id); |
| typedef void (*SetStyleWidthCallback)(const std::string &instance_id, const std::string& render_ref, float width); |
| typedef void (*SetStyleHeightCallback)(const std::string &instance_id, const std::string& render_ref, float height); |
| typedef void (*SetMarginCallback)(const std::string &instance_id, const std::string& render_ref, int edge, float value); |
| typedef void (*SetPaddingCallback)(const std::string &instance_id, const std::string& render_ref, int edge, float value); |
| typedef void (*SetPositionCallback)(const std::string &instance_id, const std::string& render_ref, int edge, float value); |
| typedef void (*MarkDirtyCallback)(const std::string &instance_id, const std::string& render_ref); |
| typedef void (*SetViewPortWidthCallback)(const std::string &instance_id, float width); |
| typedef void (*ForceLayoutCallback)(const std::string &instance_id); |
| typedef bool (*NotifyLayoutCallback)(const std::string &instance_id); |
| typedef std::vector<int64_t> (*GetFirstScreenRenderTimeCallback)(const std::string &instance_id); |
| typedef std::vector<int64_t> (*GetRenderFinishTimeCallback)(const std::string &instance_id); |
| typedef void (*SetRenderContainerWrapContentCallback)(const std::string &instance_id, bool wrap); |
| typedef void (*BindMeasurementToRenderObjectCallback)(long ptr); |
| typedef void (*RegisterCoreEnvCallback)(const std::string& key, const std::string& value); |
| |
| typedef long (*GetRenderObjectCallback)(const std::string &instance_id, const std::string& render_ref); |
| typedef void (*UpdateRenderObjectStyleCallback)(long render_ptr, const std::string& key, const std::string& value); |
| typedef void (*UpdateRenderObjectAttrCallback)(long render_ptr, const std::string& key, const std::string& value); |
| typedef long (*CopyRenderObjectCallback)(long render_ptr); |
| typedef void (*SetMeasureFunctionAdapter)(); |
| typedef void (*SetPlatform)(const std::string& platformName); |
| typedef void (*SetDeviceWidthAndHeight)(float width, float height); |
| typedef void (*AddOption)(const std::string& key, const std::string& value); |
| typedef struct CoreSideFunctionsOfPlatformBridge { |
| SetDefaultHeightAndWidthIntoRootDomCallback set_default_height_and_width_into_root_dom; |
| OnInstanceCloseCallback on_instance_close; |
| SetStyleWidthCallback set_style_width; |
| SetStyleHeightCallback set_style_height; |
| SetMarginCallback set_margin; |
| SetPaddingCallback set_padding; |
| SetPositionCallback set_position; |
| MarkDirtyCallback mark_dirty; |
| SetViewPortWidthCallback set_view_port_width; |
| ForceLayoutCallback force_layout; |
| NotifyLayoutCallback notify_layout; |
| GetFirstScreenRenderTimeCallback get_first_screen_render_time; |
| GetRenderFinishTimeCallback get_render_finish_time; |
| SetRenderContainerWrapContentCallback set_render_container_wrap_content; |
| BindMeasurementToRenderObjectCallback bind_measurement_to_render_object; |
| RegisterCoreEnvCallback register_core_env; |
| GetRenderObjectCallback get_render_object; |
| UpdateRenderObjectStyleCallback update_render_object_style; |
| UpdateRenderObjectAttrCallback update_render_object_attr; |
| CopyRenderObjectCallback copy_render_object; |
| SetMeasureFunctionAdapter set_measure_function_adapter; |
| SetPlatform set_platform; |
| SetDeviceWidthAndHeight set_device_width_and_height; |
| AddOption add_option; |
| |
| FuncInitFramework init_framework; |
| FuncInitAppFramework init_app_framework; |
| FuncCreateAppContext create_app_context; |
| FuncExeJSOnAppWithResult exec_js__on_app_with_result; |
| FuncCallJSOnAppContext call_js_on_app_context; |
| FuncDestroyAppContext destroy_app_context; |
| FuncExeJsService exec_js_service; |
| FuncExeCTimeCallback exec_time_callback; |
| FuncExeJS exec_js; |
| FuncExeJSWithResult exec_js_with_result; |
| FuncCreateInstance create_instance; |
| FuncExeJSOnInstance exec_js_on_instance; |
| FuncDestroyInstance destroy_instance; |
| FuncUpdateGlobalConfig update_global_config; |
| } CoreSideFunctionsOfPlatformBridge; |
| #endif |
| |
| #endif //WEEXV8_WEEXAPIHEADER_H |