commit d4bb513d23002412b19242ddddc11814ba1520cd
Author: tianzhendong <1203886034@qq.com>
Date: Tue May 23 18:53:58 2023 +0800
first
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4733852
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+Build/
+*.user
+# *.dll
+*.a
+
+Makefile
+lib*.so*
+
+
+.idea/
+*build*/
+miniblink-20230412/
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..41ba36f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,71 @@
+cmake_minimum_required(VERSION 3.5)
+
+PROJECT(Map LANGUAGES CXX)
+
+set(CMAKE_CXX_STANDARD 17)
+
+if(WIN32)
+ MESSAGE(STATUS "WIN32")
+ set(CMAKE_PREFIX_PATH "C:/DevelopEnv/Qt/5.15.2/mingw81_64")
+ set(QT_VERSION "5.15.2")
+elseif(UNIX)
+ MESSAGE(STATUS "UNIX")
+ set(CMAKE_PREFIX_PATH "/home/tian/Qt5.12.3/5.12.3/gcc_64")
+ # solve program: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
+ set(QT_VERSION "5.12.3")
+ set(CMAKE_CXX_FLAGS -pthread)
+endif()
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+# 添加用到的qt库
+find_package(Qt5 COMPONENTS
+ Core
+ Gui
+ Widgets
+ Websockets
+ LinguistTools
+ REQUIRED)
+
+set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) #设置可执行文件生成目录
+set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/Libs) #设置链接库生成目录
+
+include_directories(${PROJECT_SOURCE_DIR}/src)
+
+FILE(GLOB_RECURSE APP_HEADER ${PROJECT_SOURCE_DIR}/Src/*.h)
+FILE(GLOB_RECURSE APP_SRC ${PROJECT_SOURCE_DIR}/Src/*.cpp)
+FILE(GLOB_RECURSE FORMS ${PROJECT_SOURCE_DIR}/Src/*.ui)
+FILE(GLOB_RECURSE RESOURCE_FILES ${PROJECT_SOURCE_DIR}/resources/*.qrc ${PROJECT_SOURCE_DIR}/resources/*.rc)
+
+# 翻译
+# 初始化要使用的列表
+set(TS_FILES)
+set(QM_FILES)
+set(PROJECT_SOURCES ${APP_SRC} ${COMMONMODULE_SRC} ${DATA_SRC} ${DECODEROUTE_SRC} ${FILEOPERATOR_SRC} ${OVERLOAD_SRC} ${PLOT_SRC} ${PYTHONPLOT_SRC} ${MATLABPLOT_SRC} ${UI_SRC}
+ ${FORMS})
+# 将要生成的翻译文件添加到列表中
+list(APPEND TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/FlightDataAnalysis_zh.ts)
+# 设置翻译文件的生成路径,如果不指定就会生成在CMakeFiles的目录里
+set_source_files_properties(${TS_FILES}
+ PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+qt5_create_translation(QM_FILES ${TS_FILES} ${PROJECT_SOURCES})
+# 添加更新翻译的目标
+add_custom_target(lupdate_task DEPENDS ${TS_FILES})
+# 添加发布翻译的目标
+add_custom_target(lrelease_task DEPENDS ${QM_FILES})
+
+SET(CMAKE_BUILD_TYPE "Release")
+add_executable(${PROJECT_NAME} ${APP_SRC} ${APP_HEADER}
+ ${FORMS} ${RESOURCE_FILES} ${TS_FILES})
+
+target_link_libraries(${PROJECT_NAME}
+ Qt5::Core
+ Qt5::Gui
+ Qt5::Widgets
+ Qt5::WebSockets
+ )
diff --git a/FlightDataAnalysis_zh.ts b/FlightDataAnalysis_zh.ts
new file mode 100644
index 0000000..dccf5e3
--- /dev/null
+++ b/FlightDataAnalysis_zh.ts
@@ -0,0 +1,32 @@
+
+
+
+
+ MapWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LibMiniBlink.pro b/LibMiniBlink.pro
new file mode 100644
index 0000000..695ca4a
--- /dev/null
+++ b/LibMiniBlink.pro
@@ -0,0 +1,32 @@
+QT += core gui websockets
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+CONFIG += c++17
+
+# You can make your code fail to compile if it uses deprecated APIs.
+# In order to do so, uncomment the following line.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+INCLUDEPATH += $$PWD
+SOURCES += \
+ $$PWD/src/main.cpp \
+ $$PWD/src/mapwidget.cpp \
+ $$PWD/src/webwidget.cpp
+
+HEADERS += \
+ $$PWD/src/mapwidget.h \
+ $$PWD/src/webwidget.h
+
+FORMS += \
+ $$PWD/src/mapwidget.ui
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
+
+RC_ICONS += $$PWD/resources/map.ico
+
+RESOURCES += \
+ resources/icons.qrc
diff --git a/miniblink-20230412.zip b/miniblink-20230412.zip
new file mode 100644
index 0000000..255bbb2
Binary files /dev/null and b/miniblink-20230412.zip differ
diff --git a/node.dll b/node.dll
new file mode 100644
index 0000000..e48101c
Binary files /dev/null and b/node.dll differ
diff --git a/resources/MAP.png b/resources/MAP.png
new file mode 100644
index 0000000..1d7a1c0
Binary files /dev/null and b/resources/MAP.png differ
diff --git a/resources/Map.rc b/resources/Map.rc
new file mode 100644
index 0000000..f951aaf
--- /dev/null
+++ b/resources/Map.rc
@@ -0,0 +1 @@
+IDI_ICON1 ICON DISCARDABLE "map.ico"
\ No newline at end of file
diff --git a/resources/icons.qrc b/resources/icons.qrc
new file mode 100644
index 0000000..240a908
--- /dev/null
+++ b/resources/icons.qrc
@@ -0,0 +1,7 @@
+
+
+ map.svg
+ map-black.svg
+ map-blue.svg
+
+
diff --git a/resources/map-black.svg b/resources/map-black.svg
new file mode 100644
index 0000000..7138232
--- /dev/null
+++ b/resources/map-black.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/map-blue.svg b/resources/map-blue.svg
new file mode 100644
index 0000000..92a64f1
--- /dev/null
+++ b/resources/map-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/map.ico b/resources/map.ico
new file mode 100644
index 0000000..8feadb8
Binary files /dev/null and b/resources/map.ico differ
diff --git a/resources/map.svg b/resources/map.svg
new file mode 100644
index 0000000..56bdf75
--- /dev/null
+++ b/resources/map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..d76d60b
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,31 @@
+#include "wke.h"
+#include "mapwidget.h"
+
+#include
+#include
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ wkeSetWkeDllPath(L"node.dll");
+ wkeInitialize();
+ /* webView在头文件里面声明了是一个wkeWebView类型
+ wkeCreateWebWindow是创建一个带真实窗口的wkeWebView
+ 第一个参数wkeWindowType type:
+ WKE_WINDOW_TYPE_POPUP: 普通窗口
+ WKE_WINDOW_TYPE_TRANSPARENT:透明窗口。mb内部通过layer window实现
+ WKE_WINDOW_TYPE_CONTROL: 嵌入在父窗口里的子窗口。此时parent需要被设置
+ 第二个参数是依附parent窗口的句柄, 在QT里面可以调用窗口的winID()方法获取
+ */
+ MapWidget w;
+
+ w.show();
+// WebWidget *w = new WebWidget("www.baidu.com");
+
+
+ int ret = a.exec();
+ wkeFinalize();
+ return ret;
+
+
+}
diff --git a/src/mapwidget.cpp b/src/mapwidget.cpp
new file mode 100644
index 0000000..5b7404d
--- /dev/null
+++ b/src/mapwidget.cpp
@@ -0,0 +1,103 @@
+#include "mapwidget.h"
+#include "ui_mapwidget.h"
+
+#include
+
+MapWidget::MapWidget(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::MapWidget)
+{
+ ui->setupUi(this);
+
+ this->showMaximized();
+ m_pWebWidget = new WebWidget("D:/4_Code/Leaflet/demo.html", this);
+ ui->verticalLayout->addWidget(m_pWebWidget);
+}
+
+MapWidget::~MapWidget()
+{
+ delete ui;
+}
+
+void MapWidget::on_btn_callWmts_clicked()
+{
+ m_pWebWidget->callJsFunction("printInformation", "tian");
+ return;
+ m_pWebWidget->startWmts();
+}
+
+
+void MapWidget::on_btn_server_clicked()
+{
+ if(!m_pWebSocketServer)
+ {
+ //构造:QWebSocketServer(const QString& serverName,QWebSocketServer::SslMode secureMode,QObject *parent=nullptr)
+ //使用给定的serverName构造一个新的QWebSocketServer。
+ //该服务器名称将在HTTP握手阶段被用来识别服务器。它可以为空,此时不会将服务器名称发送给客户端。
+ //SslMode指示服务器是通过wss(SecureMode)还是ws(NonSecureMode)运行
+ //QWebSocketServer::SecureMode服务器以安全模式运行(通过wss)
+ m_pWebSocketServer = new QWebSocketServer("Server", QWebSocketServer::NonSecureMode, this);
+ }
+// QHostAddress address = QHostAddress("127.0.0.1");
+ int port = 12345;
+ QString s;
+ if(!m_pWebSocketServer->listen(QHostAddress::Any, port))
+ {
+ s = "websocket listen error";
+ }
+ else
+ {
+ s = QString("websocket listen on port %1").arg(port);
+ connect(m_pWebSocketServer, &QWebSocketServer::newConnection, this, &MapWidget::onNewConnection);
+ connect(m_pWebSocketServer, &QWebSocketServer::closed, this, &MapWidget::onWebSocketClosed);
+ }
+ qDebug() << s;
+ m_pWebWidget->callJsFunction("printInformation", s);
+}
+
+void MapWidget::onNewConnection()
+{
+ QWebSocket *socket = m_pWebSocketServer->nextPendingConnection();
+ if(!socket)
+ return;
+ clientList.push_back(socket);
+ qDebug() << QString("[New Connect] Address:%1 Port:%2")
+ .arg(socket->peerAddress().toString())
+ .arg(socket->peerPort());
+
+ //收到消息
+ connect(socket, &QWebSocket::textMessageReceived, this, [&](const QString & msg)
+ {
+ qDebug() << msg;
+ m_pWebWidget->callJsFunction(msg);
+ });
+ //发送消息
+ connect(this, &MapWidget::doSendMessage, socket, &QWebSocket::sendTextMessage);
+ //断开连接,释放
+ connect(socket, &QWebSocket::disconnected, this, [&, socket]()
+ {
+ clientList.removeAll(socket);
+ socket->deleteLater();
+ });
+
+}
+
+void MapWidget::onWebSocketClosed()
+{
+
+}
+
+
+void MapWidget::on_pushButton_clicked()
+{
+ static int cnt = 0;
+ emit doSendMessage(QString("send message %1").arg(cnt++));
+}
+
+
+void MapWidget::on_btn_clear_clicked()
+{
+ static int cnt1 = 3;
+ m_pWebWidget->callJsFunction("clearOneLine", QString::number(cnt1--));
+}
+
diff --git a/src/mapwidget.h b/src/mapwidget.h
new file mode 100644
index 0000000..3b92f91
--- /dev/null
+++ b/src/mapwidget.h
@@ -0,0 +1,46 @@
+#ifndef MAPWIDGET_H
+#define MAPWIDGET_H
+
+#include
+#include
+#include "webwidget.h"
+
+namespace Ui
+{
+class MapWidget;
+}
+
+class MapWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit MapWidget(QWidget *parent = nullptr);
+ ~MapWidget();
+
+signals:
+ void doSendMessage(const QString & s);
+
+private slots:
+ void on_btn_callWmts_clicked();
+
+ void on_btn_server_clicked();
+
+ void onNewConnection();
+
+ void onWebSocketClosed();
+
+ void on_pushButton_clicked();
+
+ void on_btn_clear_clicked();
+
+private:
+ Ui::MapWidget *ui;
+
+ WebWidget * m_pWebWidget = nullptr;
+
+ QWebSocketServer *m_pWebSocketServer = nullptr;
+ QList clientList;
+};
+
+#endif // MAPWIDGET_H
diff --git a/src/mapwidget.ui b/src/mapwidget.ui
new file mode 100644
index 0000000..adbdddb
--- /dev/null
+++ b/src/mapwidget.ui
@@ -0,0 +1,79 @@
+
+
+ MapWidget
+
+
+
+ 0
+ 0
+ 1386
+ 1030
+
+
+
+ Form
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
-
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ GroupBox
+
+
+
-
+
+
+ PushButton
+
+
+
+ -
+
+
+ serverListen
+
+
+
+ -
+
+
+ CallWMTS
+
+
+
+ -
+
+
+ 清除所有曲线
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/webwidget.cpp b/src/webwidget.cpp
new file mode 100644
index 0000000..e6e1d49
--- /dev/null
+++ b/src/webwidget.cpp
@@ -0,0 +1,77 @@
+#include "webwidget.h"
+#include "qapplication.h"
+#include
+#include
+WebWidget::WebWidget(const QString& url, QWidget *_parent) : QWidget(_parent)
+{
+ webView = wkeCreateWebWindow(WKE_WINDOW_TYPE_CONTROL, (HWND)_parent->winId(), 0, 0, this->width(), this->height());
+ wkeShowWindow(webView, TRUE);
+ QString _sUrl = url;
+ if(_sUrl.isEmpty())
+ _sUrl = "www.baidu.com";
+ wkeLoadURL(webView, _sUrl.toUtf8());
+// connect()
+}
+
+WebWidget::~WebWidget()
+{
+ qDebug() << "in del";
+}
+void WebWidget::loadUrl(const QString& url)
+{
+ QString _sUrl = url;
+ if(_sUrl.isEmpty())
+ _sUrl = "www.baidu.com";
+ wkeLoadURL(webView, _sUrl.toLocal8Bit().data());
+}
+void WebWidget::resizeEvent(QResizeEvent *event)
+{
+ Q_UNUSED(event);
+ wkeResize(webView, this->width(), this->height());
+ QPoint pos = this->mapToGlobal(QPoint(0, 0));
+ wkeMoveWindow(webView, 0, 0, this->width() + pos.x(), this->height() + pos.y() / 2);
+}
+
+void WebWidget::statusFeedbackSlot()
+{
+
+}
+
+void WebWidget::callJsFunction(const QString &sFunctionName, const QString &sPara)
+{
+ QString s = sFunctionName + "(\"" + sPara + "\");";
+ wkeRunJS(webView, s.toUtf8());
+}
+
+void WebWidget::onMove()
+{
+ QPoint pos = this->mapToGlobal(QPoint(0, 0));
+ wkeMoveWindow(webView, pos.x(), pos.y(), this->width(), this->height());
+}
+
+void WebWidget::slotProcessQuit(int, QProcess::ExitStatus )
+{
+ if(m_pWmtsProcess)
+ {
+ disconnect(m_pWmtsProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotProcessQuit(int, QProcess::ExitStatus)));
+ // 负责进程间通信
+ disconnect(m_pWmtsProcess, &QProcess::readyReadStandardError, this, &WebWidget::statusFeedbackSlot);
+ disconnect(m_pWmtsProcess, &QProcess::readyReadStandardOutput, this, &WebWidget::statusFeedbackSlot);
+ m_pWmtsProcess->deleteLater();
+ m_pWmtsProcess = nullptr;
+ }
+}
+
+void WebWidget::startWmts()
+{
+ if(m_pWmtsProcess != nullptr)
+ return;
+ m_pWmtsProcess = new QProcess;
+ QString path = QCoreApplication::applicationDirPath();
+ m_pWmtsProcess->setProgram(path + "/wmts.exe");
+ m_pWmtsProcess->start(QProcess::ReadWrite);
+ connect(m_pWmtsProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotProcessQuit(int, QProcess::ExitStatus)));
+ // 负责进程间通信
+ connect(m_pWmtsProcess, &QProcess::readyReadStandardError, this, &WebWidget::statusFeedbackSlot);
+ connect(m_pWmtsProcess, &QProcess::readyReadStandardOutput, this, &WebWidget::statusFeedbackSlot);
+}
diff --git a/src/webwidget.h b/src/webwidget.h
new file mode 100644
index 0000000..58f4010
--- /dev/null
+++ b/src/webwidget.h
@@ -0,0 +1,49 @@
+#ifndef WEBWIDGET_H
+#define WEBWIDGET_H
+
+#include
+#include
+#include
+#include "wke.h"
+#include
+
+class WebWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit WebWidget(const QString& url = "", QWidget *parent = 0);
+ ~WebWidget();
+
+ /**
+ * @brief loadUrl 打开网页
+ * @param url 网页url
+ */
+ void loadUrl(const QString &url);
+
+ void onMove();
+
+ void startWmts();
+
+ /**
+ * @brief callJsFunction 调用js中的函数
+ * @param sFunctionName 函数名称
+ * @param sPara 函数参数,如数值a和b,传入形式为QString("%1,%2").arg(a).arg(b)
+ */
+ void callJsFunction(const QString &sFunctionName, const QString &sPara = "");
+signals:
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+
+public slots:
+ void statusFeedbackSlot();
+
+ void slotProcessQuit(int exitCode, QProcess::ExitStatus stuts);
+
+private:
+ wkeWebView webView;
+
+ QProcess *m_pWmtsProcess = nullptr;
+};
+
+#endif // WEBWIDGET_H
diff --git a/src/wke.h b/src/wke.h
new file mode 100644
index 0000000..043dcaf
--- /dev/null
+++ b/src/wke.h
@@ -0,0 +1,1548 @@
+/*
+*
+* wolar@qq.com
+* http://miniblink.net 文档地址
+* https://github.com/weolar/miniblink49
+* licence Apache-2.0
+*
+*/
+
+#ifndef WKE_DEFINE_H
+#define WKE_DEFINE_H
+
+#include
+
+//////////////////////////////////////////////////////////////////////////
+#define WKE_CALL_TYPE __cdecl
+
+typedef struct _wkeRect {
+ int x;
+ int y;
+ int w;
+ int h;
+} wkeRect;
+
+typedef struct _wkePoint {
+ int x;
+ int y;
+} wkePoint;
+
+typedef struct _wkeSize {
+ int w;
+ int h;
+} wkeSize;
+
+typedef enum _wkeMouseFlags {
+ WKE_LBUTTON = 0x01,
+ WKE_RBUTTON = 0x02,
+ WKE_SHIFT = 0x04,
+ WKE_CONTROL = 0x08,
+ WKE_MBUTTON = 0x10,
+} wkeMouseFlags;
+
+typedef enum _wkeKeyFlags {
+ WKE_EXTENDED = 0x0100,
+ WKE_REPEAT = 0x4000,
+} wkeKeyFlags;
+
+typedef enum _wkeMouseMsg {
+ WKE_MSG_MOUSEMOVE = 0x0200,
+ WKE_MSG_LBUTTONDOWN = 0x0201,
+ WKE_MSG_LBUTTONUP = 0x0202,
+ WKE_MSG_LBUTTONDBLCLK = 0x0203,
+ WKE_MSG_RBUTTONDOWN = 0x0204,
+ WKE_MSG_RBUTTONUP = 0x0205,
+ WKE_MSG_RBUTTONDBLCLK = 0x0206,
+ WKE_MSG_MBUTTONDOWN = 0x0207,
+ WKE_MSG_MBUTTONUP = 0x0208,
+ WKE_MSG_MBUTTONDBLCLK = 0x0209,
+ WKE_MSG_MOUSEWHEEL = 0x020A,
+} wkeMouseMsg;
+
+#if !defined(__cplusplus)
+#ifndef HAVE_WCHAR_T
+typedef unsigned short wchar_t;
+#endif
+
+#define bool _Bool
+#define false 0
+#define true 1
+
+#endif
+
+#if defined(__cplusplus)
+#define WKE_EXTERN_C extern "C"
+#else
+#define WKE_EXTERN_C
+#endif
+
+typedef char utf8;
+#if !defined(__cplusplus)
+typedef void* jsExecState;
+#else
+struct JsExecStateInfo;
+typedef JsExecStateInfo* jsExecState;
+#endif
+typedef __int64 jsValue;
+
+#if defined(__cplusplus)
+namespace wke { class CWebView; }
+typedef wke::CWebView* wkeWebView;
+
+namespace wke { class CString; }
+typedef wke::CString* wkeString;
+
+#else
+struct _tagWkeWebView;
+typedef struct _tagWkeWebView* wkeWebView;
+
+struct _tagWkeString;
+typedef struct _tagWkeString* wkeString;
+#endif
+
+#if defined(__cplusplus)
+namespace wke { class WkeMediaPlayer; }
+typedef wke::WkeMediaPlayer* wkeMediaPlayer;
+
+namespace wke { class WkeMediaPlayerClient; }
+typedef wke::WkeMediaPlayerClient* wkeMediaPlayerClient;
+
+namespace blink { class WebURLRequest; }
+typedef blink::WebURLRequest* blinkWebURLRequestPtr;
+
+#else
+typedef struct _tagWkeMediaPlayer* wkeMediaPlayer;
+typedef struct _tagWkeMediaPlayerClient* wkeMediaPlayerClient;
+typedef struct _tabblinkWebURLRequestPtr* blinkWebURLRequestPtr;
+#endif
+
+typedef enum _wkeProxyType {
+ WKE_PROXY_NONE,
+ WKE_PROXY_HTTP,
+ WKE_PROXY_SOCKS4,
+ WKE_PROXY_SOCKS4A,
+ WKE_PROXY_SOCKS5,
+ WKE_PROXY_SOCKS5HOSTNAME
+} wkeProxyType;
+
+typedef struct _wkeProxy {
+ wkeProxyType type;
+ char hostname[100];
+ unsigned short port;
+ char username[50];
+ char password[50];
+} wkeProxy;
+
+typedef enum _wkeSettingMask {
+ WKE_SETTING_PROXY = 1,
+ WKE_SETTING_EXTENSION = 1 << 2, // 测试功能,请勿调用
+} wkeSettingMask;
+
+typedef struct _wkeSettings {
+ wkeProxy proxy;
+ unsigned int mask;
+ const char* extension;
+} wkeSettings;
+
+typedef struct _wkeViewSettings {
+ int size;
+ unsigned int bgColor;
+} wkeViewSettings;
+
+typedef void* wkeWebFrameHandle;
+
+typedef struct _wkeGeolocationPosition{
+ double timestamp;
+ double latitude;
+ double longitude;
+ double accuracy;
+ bool providesAltitude;
+ double altitude;
+ bool providesAltitudeAccuracy;
+ double altitudeAccuracy;
+ bool providesHeading;
+ double heading;
+ bool providesSpeed;
+ double speed;
+
+#if defined(__cplusplus)
+ _wkeGeolocationPosition(const _wkeGeolocationPosition& other);
+#endif
+} wkeGeolocationPosition;
+
+#if defined(__cplusplus)
+
+inline _wkeGeolocationPosition::_wkeGeolocationPosition(const _wkeGeolocationPosition& other)
+{
+ timestamp = other.timestamp;
+ latitude = other.latitude;
+ longitude = other.longitude;
+ accuracy = other.accuracy;
+ providesAltitude = other.providesAltitude;
+ altitude = other.altitude;
+ providesAltitudeAccuracy = other.providesAltitudeAccuracy;
+ altitudeAccuracy = other.altitudeAccuracy;
+ providesHeading = other.providesHeading;
+ heading = other.heading;
+ providesSpeed = other.providesSpeed;
+ speed = other.speed;
+}
+
+#endif
+
+typedef enum _wkeMenuItemId {
+ kWkeMenuSelectedAllId = 1 << 1,
+ kWkeMenuSelectedTextId = 1 << 2,
+ kWkeMenuUndoId = 1 << 3,
+ kWkeMenuCopyImageId = 1 << 4,
+ kWkeMenuInspectElementAtId = 1 << 5,
+ kWkeMenuCutId = 1 << 6,
+ kWkeMenuPasteId = 1 << 7,
+ kWkeMenuPrintId = 1 << 8,
+ kWkeMenuGoForwardId = 1 << 9,
+ kWkeMenuGoBackId = 1 << 10,
+ kWkeMenuReloadId = 1 << 11,
+ kWkeMenuSaveImageId = 1 << 12,
+} wkeMenuItemId;
+
+typedef void* (WKE_CALL_TYPE *FILE_OPEN_) (const char* path);
+typedef void(WKE_CALL_TYPE *FILE_CLOSE_) (void* handle);
+typedef size_t(WKE_CALL_TYPE *FILE_SIZE) (void* handle);
+typedef int(WKE_CALL_TYPE *FILE_READ) (void* handle, void* buffer, size_t size);
+typedef int(WKE_CALL_TYPE *FILE_SEEK) (void* handle, int offset, int origin);
+
+typedef FILE_OPEN_ WKE_FILE_OPEN;
+typedef FILE_CLOSE_ WKE_FILE_CLOSE;
+typedef FILE_SIZE WKE_FILE_SIZE;
+typedef FILE_READ WKE_FILE_READ;
+typedef FILE_SEEK WKE_FILE_SEEK;
+typedef bool(WKE_CALL_TYPE *WKE_EXISTS_FILE)(const char * path);
+
+struct _wkeClientHandler; // declare warning fix
+typedef void(WKE_CALL_TYPE *ON_TITLE_CHANGED) (const struct _wkeClientHandler* clientHandler, const wkeString title);
+typedef void(WKE_CALL_TYPE *ON_URL_CHANGED) (const struct _wkeClientHandler* clientHandler, const wkeString url);
+
+typedef struct _wkeClientHandler {
+ ON_TITLE_CHANGED onTitleChanged;
+ ON_URL_CHANGED onURLChanged;
+} wkeClientHandler;
+
+typedef bool(WKE_CALL_TYPE * wkeCookieVisitor)(
+ void* params,
+ const char* name,
+ const char* value,
+ const char* domain,
+ const char* path, // If |path| is non-empty only URLs at or below the path will get the cookie value.
+ int secure, // If |secure| is true the cookie will only be sent for HTTPS requests.
+ int httpOnly, // If |httponly| is true the cookie will only be sent for HTTP requests.
+ int* expires // The cookie expiration date is only valid if |has_expires| is true.
+ );
+
+typedef enum _wkeCookieCommand {
+ wkeCookieCommandClearAllCookies,
+ wkeCookieCommandClearSessionCookies,
+ wkeCookieCommandFlushCookiesToFile,
+ wkeCookieCommandReloadCookiesFromFile,
+} wkeCookieCommand;
+
+typedef enum _wkeNavigationType {
+ WKE_NAVIGATION_TYPE_LINKCLICK,
+ WKE_NAVIGATION_TYPE_FORMSUBMITTE,
+ WKE_NAVIGATION_TYPE_BACKFORWARD,
+ WKE_NAVIGATION_TYPE_RELOAD,
+ WKE_NAVIGATION_TYPE_FORMRESUBMITT,
+ WKE_NAVIGATION_TYPE_OTHER
+} wkeNavigationType;
+
+typedef enum _WkeCursorInfoType {
+ WkeCursorInfoPointer,
+ WkeCursorInfoCross,
+ WkeCursorInfoHand,
+ WkeCursorInfoIBeam,
+ WkeCursorInfoWait,
+ WkeCursorInfoHelp,
+ WkeCursorInfoEastResize,
+ WkeCursorInfoNorthResize,
+ WkeCursorInfoNorthEastResize,
+ WkeCursorInfoNorthWestResize,
+ WkeCursorInfoSouthResize,
+ WkeCursorInfoSouthEastResize,
+ WkeCursorInfoSouthWestResize,
+ WkeCursorInfoWestResize,
+ WkeCursorInfoNorthSouthResize,
+ WkeCursorInfoEastWestResize,
+ WkeCursorInfoNorthEastSouthWestResize,
+ WkeCursorInfoNorthWestSouthEastResize,
+ WkeCursorInfoColumnResize,
+ WkeCursorInfoRowResize,
+ WkeCursorInfoMiddlePanning,
+ WkeCursorInfoEastPanning,
+ WkeCursorInfoNorthPanning,
+ WkeCursorInfoNorthEastPanning,
+ WkeCursorInfoNorthWestPanning,
+ WkeCursorInfoSouthPanning,
+ WkeCursorInfoSouthEastPanning,
+ WkeCursorInfoSouthWestPanning,
+ WkeCursorInfoWestPanning,
+ WkeCursorInfoMove,
+ WkeCursorInfoVerticalText,
+ WkeCursorInfoCell,
+ WkeCursorInfoContextMenu,
+ WkeCursorInfoAlias,
+ WkeCursorInfoProgress,
+ WkeCursorInfoNoDrop,
+ WkeCursorInfoCopy,
+ WkeCursorInfoNone,
+ WkeCursorInfoNotAllowed,
+ WkeCursorInfoZoomIn,
+ WkeCursorInfoZoomOut,
+ WkeCursorInfoGrab,
+ WkeCursorInfoGrabbing,
+ WkeCursorInfoCustom
+} WkeCursorInfoType;
+
+typedef struct _wkeWindowFeatures {
+ int x;
+ int y;
+ int width;
+ int height;
+
+ bool menuBarVisible;
+ bool statusBarVisible;
+ bool toolBarVisible;
+ bool locationBarVisible;
+ bool scrollbarsVisible;
+ bool resizable;
+ bool fullscreen;
+} wkeWindowFeatures;
+
+typedef struct _wkeMemBuf {
+ int unuse;
+ void* data;
+ size_t length;
+} wkeMemBuf;
+
+typedef struct _wkeWebDragData {
+ struct Item {
+ enum wkeStorageType {
+ // String data with an associated MIME type. Depending on the MIME type, there may be
+ // optional metadata attributes as well.
+ StorageTypeString,
+ // Stores the name of one file being dragged into the renderer.
+ StorageTypeFilename,
+ // An image being dragged out of the renderer. Contains a buffer holding the image data
+ // as well as the suggested name for saving the image to.
+ StorageTypeBinaryData,
+ // Stores the filesystem URL of one file being dragged into the renderer.
+ StorageTypeFileSystemFile,
+ } storageType;
+
+ // Only valid when storageType == StorageTypeString.
+ wkeMemBuf* stringType;
+ wkeMemBuf* stringData;
+
+ // Only valid when storageType == StorageTypeFilename.
+ wkeMemBuf* filenameData;
+ wkeMemBuf* displayNameData;
+
+ // Only valid when storageType == StorageTypeBinaryData.
+ wkeMemBuf* binaryData;
+
+ // Title associated with a link when stringType == "text/uri-list".
+ // Filename when storageType == StorageTypeBinaryData.
+ wkeMemBuf* title;
+
+ // Only valid when storageType == StorageTypeFileSystemFile.
+ wkeMemBuf* fileSystemURL;
+ __int64 fileSystemFileSize;
+
+ // Only valid when stringType == "text/html".
+ wkeMemBuf* baseURL;
+ };
+
+ struct Item* m_itemList;
+ int m_itemListLength;
+
+ int m_modifierKeyState; // State of Shift/Ctrl/Alt/Meta keys.
+ wkeMemBuf* m_filesystemId;
+} wkeWebDragData;
+
+typedef enum _wkeWebDragOperation {
+ wkeWebDragOperationNone = 0,
+ wkeWebDragOperationCopy = 1,
+ wkeWebDragOperationLink = 2,
+ wkeWebDragOperationGeneric = 4,
+ wkeWebDragOperationPrivate = 8,
+ wkeWebDragOperationMove = 16,
+ wkeWebDragOperationDelete = 32,
+ wkeWebDragOperationEvery = 0xffffffff
+} wkeWebDragOperation;
+
+typedef wkeWebDragOperation wkeWebDragOperationsMask;
+
+typedef enum _wkeResourceType {
+ WKE_RESOURCE_TYPE_MAIN_FRAME = 0, // top level page
+ WKE_RESOURCE_TYPE_SUB_FRAME = 1, // frame or iframe
+ WKE_RESOURCE_TYPE_STYLESHEET = 2, // a CSS stylesheet
+ WKE_RESOURCE_TYPE_SCRIPT = 3, // an external script
+ WKE_RESOURCE_TYPE_IMAGE = 4, // an image (jpg/gif/png/etc)
+ WKE_RESOURCE_TYPE_FONT_RESOURCE = 5, // a font
+ WKE_RESOURCE_TYPE_SUB_RESOURCE = 6, // an "other" subresource.
+ WKE_RESOURCE_TYPE_OBJECT = 7, // an object (or embed) tag for a plugin,
+ // or a resource that a plugin requested.
+ WKE_RESOURCE_TYPE_MEDIA = 8, // a media resource.
+ WKE_RESOURCE_TYPE_WORKER = 9, // the main resource of a dedicated
+ // worker.
+ WKE_RESOURCE_TYPE_SHARED_WORKER = 10, // the main resource of a shared worker.
+ WKE_RESOURCE_TYPE_PREFETCH = 11, // an explicitly requested prefetch
+ WKE_RESOURCE_TYPE_FAVICON = 12, // a favicon
+ WKE_RESOURCE_TYPE_XHR = 13, // a XMLHttpRequest
+ WKE_RESOURCE_TYPE_PING = 14, // a ping request for
+ WKE_RESOURCE_TYPE_SERVICE_WORKER = 15, // the main resource of a service worker.
+ WKE_RESOURCE_TYPE_LAST_TYPE
+} wkeResourceType;
+
+typedef struct _wkeWillSendRequestInfo {
+ wkeString url;
+ wkeString newUrl;
+ wkeResourceType resourceType;
+ int httpResponseCode;
+ wkeString method;
+ wkeString referrer;
+ void* headers;
+} wkeWillSendRequestInfo;
+
+typedef enum _wkeHttBodyElementType {
+ wkeHttBodyElementTypeData,
+ wkeHttBodyElementTypeFile,
+} wkeHttBodyElementType;
+
+typedef struct _wkePostBodyElement {
+ int size;
+ wkeHttBodyElementType type;
+ wkeMemBuf* data;
+ wkeString filePath;
+ __int64 fileStart;
+ __int64 fileLength; // -1 means to the end of the file.
+} wkePostBodyElement;
+
+typedef struct _wkePostBodyElements {
+ int size;
+ wkePostBodyElement** element;
+ size_t elementSize;
+ bool isDirty;
+} wkePostBodyElements;
+
+typedef void* wkeNetJob;
+
+typedef struct _wkeSlist {
+ char* data;
+ struct _wkeSlist* next;
+} wkeSlist;
+
+typedef struct _wkeTempCallbackInfo {
+ int size;
+ wkeWebFrameHandle frame;
+ wkeWillSendRequestInfo* willSendRequestInfo;
+ const char* url;
+ wkePostBodyElements* postBody;
+ wkeNetJob job;
+} wkeTempCallbackInfo;
+
+typedef enum _wkeRequestType {
+ kWkeRequestTypeInvalidation,
+ kWkeRequestTypeGet,
+ kWkeRequestTypePost,
+ kWkeRequestTypePut,
+} wkeRequestType;
+
+typedef struct _wkePdfDatas {
+ int count;
+ size_t* sizes;
+ const void** datas;
+} wkePdfDatas;
+
+typedef struct _wkePrintSettings {
+ int structSize;
+ int dpi;
+ int width; // in px
+ int height;
+ int marginTop;
+ int marginBottom;
+ int marginLeft;
+ int marginRight;
+ BOOL isPrintPageHeadAndFooter;
+ BOOL isPrintBackgroud;
+ BOOL isLandscape;
+ BOOL isPrintToMultiPage;
+} wkePrintSettings;
+
+typedef struct _wkeScreenshotSettings {
+ int structSize;
+ int width;
+ int height;
+} wkeScreenshotSettings;
+
+typedef void(WKE_CALL_TYPE*wkeCaretChangedCallback)(wkeWebView webView, void* param, const wkeRect* r);
+typedef void(WKE_CALL_TYPE*wkeTitleChangedCallback)(wkeWebView webView, void* param, const wkeString title);
+typedef void(WKE_CALL_TYPE*wkeURLChangedCallback)(wkeWebView webView, void* param, const wkeString url);
+typedef void(WKE_CALL_TYPE*wkeURLChangedCallback2)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, const wkeString url);
+typedef void(WKE_CALL_TYPE*wkePaintUpdatedCallback)(wkeWebView webView, void* param, const HDC hdc, int x, int y, int cx, int cy);
+typedef void(WKE_CALL_TYPE*wkePaintBitUpdatedCallback)(wkeWebView webView, void* param, const void* buffer, const wkeRect* r, int width, int height);
+typedef void(WKE_CALL_TYPE*wkeAlertBoxCallback)(wkeWebView webView, void* param, const wkeString msg);
+typedef bool(WKE_CALL_TYPE*wkeConfirmBoxCallback)(wkeWebView webView, void* param, const wkeString msg);
+typedef bool(WKE_CALL_TYPE*wkePromptBoxCallback)(wkeWebView webView, void* param, const wkeString msg, const wkeString defaultResult, wkeString result);
+typedef bool(WKE_CALL_TYPE*wkeNavigationCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, wkeString url);
+typedef wkeWebView(WKE_CALL_TYPE*wkeCreateViewCallback)(wkeWebView webView, void* param, wkeNavigationType navigationType, const wkeString url, const wkeWindowFeatures* windowFeatures);
+typedef void(WKE_CALL_TYPE*wkeDocumentReadyCallback)(wkeWebView webView, void* param);
+typedef void(WKE_CALL_TYPE*wkeDocumentReady2Callback)(wkeWebView webView, void* param, wkeWebFrameHandle frameId);
+
+typedef void(WKE_CALL_TYPE*wkeOnShowDevtoolsCallback)(wkeWebView webView, void* param);
+
+typedef void(__stdcall *wkeNodeOnCreateProcessCallback)(wkeWebView webView, void* param, const WCHAR* applicationPath, const WCHAR* arguments, STARTUPINFOW* startup);
+typedef void(WKE_CALL_TYPE*wkeOnPluginFindCallback)(wkeWebView webView, void* param, const utf8* mime, void* initializeFunc, void* getEntryPointsFunc, void* shutdownFunc);
+
+typedef void(WKE_CALL_TYPE*wkeOnPrintCallback)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, void* printParams);
+typedef void(WKE_CALL_TYPE*wkeOnScreenshot)(wkeWebView webView, void* param, const char* data, size_t size);
+
+typedef wkeString(WKE_CALL_TYPE*wkeImageBufferToDataURL)(wkeWebView webView, void* param, const char* data, size_t size);
+
+typedef struct _wkeMediaLoadInfo {
+ int size;
+ int width;
+ int height;
+ double duration;
+} wkeMediaLoadInfo;
+typedef void(WKE_CALL_TYPE*wkeWillMediaLoadCallback)(wkeWebView webView, void* param, const char* url, wkeMediaLoadInfo* info);
+
+typedef void(WKE_CALL_TYPE*wkeStartDraggingCallback)(
+ wkeWebView webView,
+ void* param,
+ wkeWebFrameHandle frame,
+ const wkeWebDragData* data,
+ wkeWebDragOperationsMask mask,
+ const void* image,
+ const wkePoint* dragImageOffset
+ );
+
+typedef void(WKE_CALL_TYPE*wkeUiThreadRunCallback)(HWND hWnd, void* param);
+typedef int(WKE_CALL_TYPE*wkeUiThreadPostTaskCallback)(HWND hWnd, wkeUiThreadRunCallback callback, void* param);
+
+typedef enum _wkeOtherLoadType {
+ WKE_DID_START_LOADING,
+ WKE_DID_STOP_LOADING,
+ WKE_DID_NAVIGATE,
+ WKE_DID_NAVIGATE_IN_PAGE,
+ WKE_DID_GET_RESPONSE_DETAILS,
+ WKE_DID_GET_REDIRECT_REQUEST,
+ WKE_DID_POST_REQUEST,
+} wkeOtherLoadType;
+typedef void(WKE_CALL_TYPE*wkeOnOtherLoadCallback)(wkeWebView webView, void* param, wkeOtherLoadType type, wkeTempCallbackInfo* info);
+
+typedef enum _wkeOnContextMenuItemClickType {
+ kWkeContextMenuItemClickTypePrint = 0x01,
+} wkeOnContextMenuItemClickType;
+
+typedef enum _wkeOnContextMenuItemClickStep {
+ kWkeContextMenuItemClickStepShow = 0x01,
+ kWkeContextMenuItemClickStepClick = 0x02,
+} wkeOnContextMenuItemClickStep;
+
+typedef bool(WKE_CALL_TYPE* wkeOnContextMenuItemClickCallback)(
+ wkeWebView webView,
+ void* param,
+ wkeOnContextMenuItemClickType type,
+ wkeOnContextMenuItemClickStep step,
+ wkeWebFrameHandle frameId,
+ void* info
+ );
+
+typedef enum _wkeLoadingResult {
+ WKE_LOADING_SUCCEEDED,
+ WKE_LOADING_FAILED,
+ WKE_LOADING_CANCELED
+} wkeLoadingResult;
+
+typedef enum _wkeDownloadOpt {
+ kWkeDownloadOptCancel,
+ kWkeDownloadOptCacheData,
+} wkeDownloadOpt;
+
+typedef void(WKE_CALL_TYPE*wkeNetJobDataRecvCallback)(void* ptr, wkeNetJob job, const char* data, int length);
+typedef void(WKE_CALL_TYPE*wkeNetJobDataFinishCallback)(void* ptr, wkeNetJob job, wkeLoadingResult result);
+
+typedef struct _wkeNetJobDataBind {
+ void* param;
+ wkeNetJobDataRecvCallback recvCallback;
+ wkeNetJobDataFinishCallback finishCallback;
+} wkeNetJobDataBind;
+
+typedef void(WKE_CALL_TYPE* wkePopupDialogSaveNameCallback)(void* ptr, const wchar_t* filePath);
+
+typedef struct _wkeDownloadBind {
+ void* param;
+ wkeNetJobDataRecvCallback recvCallback;
+ wkeNetJobDataFinishCallback finishCallback;
+ wkePopupDialogSaveNameCallback saveNameCallback;
+} wkeDownloadBind;
+
+enum wkeDialogProperties {
+ kWkeDialogPropertiesOpenFile = 1 << 1, // 允许选择文件
+ kWkeDialogPropertiesOpenDirectory = 1 << 2, // 允许选择文件夹
+ kWkeDialogPropertiesMultiSelections = 1 << 3, // 允许多选。
+ kWkeDialogPropertiesShowHiddenFiles = 1 << 4, // 显示对话框中的隐藏文件。
+ kWkeDialogPropertiesCreateDirectory = 1 << 5, // macOS - 允许你通过对话框的形式创建新的目录。
+ kWkeDialogPropertiesPromptToCreate = 1 << 6, // Windows - 如果输入的文件路径在对话框中不存在, 则提示创建。 这并不是真的在路径上创建一个文件,而是允许返回一些不存在的地址交由应用程序去创建。
+ kWkeDialogPropertiesNoResolveAliases = 1 << 7, // macOS - 禁用自动的别名路径(符号链接) 解析。 所选别名现在将会返回别名路径而非其目标路径。
+ kWkeDialogPropertiesTreatPackageAsDirectory = 1 << 8, // macOS - 将包(如.app 文件夹) 视为目录而不是文件。
+ kWkeDialogPropertiesDontAddToRecent = 1 << 9, // Windows - 不要将正在打开的项目添加到最近的文档列表中。
+};
+
+typedef struct _wkeFileFilter {
+ const utf8* name; // 例如"image"、"Movies"
+ const utf8* extensions; // 例如"jpg|png|gif"
+} wkeFileFilter;
+
+typedef struct _wkeDialogOptions {
+ int magic; // 'mbdo'
+ utf8* title;
+ utf8* defaultPath;
+ utf8* buttonLabel;
+ wkeFileFilter* filters;
+ int filtersCount;
+ wkeDialogProperties prop;
+ utf8* message;
+ BOOL securityScopedBookmarks;
+} wkeDialogOptions;
+
+typedef wkeDownloadOpt(WKE_CALL_TYPE* wkeDownloadInBlinkThreadCallback)(
+ wkeWebView webView,
+ void* param,
+ size_t expectedContentLength,
+ const char* url,
+ const char* mime,
+ const char* disposition,
+ wkeNetJob job,
+ wkeNetJobDataBind* dataBind
+ );
+
+typedef void(WKE_CALL_TYPE*wkeLoadingFinishCallback)(wkeWebView webView, void* param, const wkeString url, wkeLoadingResult result, const wkeString failedReason);
+typedef bool(WKE_CALL_TYPE*wkeDownloadCallback)(wkeWebView webView, void* param, const char* url);
+typedef wkeDownloadOpt(WKE_CALL_TYPE*wkeDownload2Callback)(
+ wkeWebView webView,
+ void* param,
+ size_t expectedContentLength,
+ const char* url,
+ const char* mime,
+ const char* disposition,
+ wkeNetJob job,
+ wkeNetJobDataBind* dataBind);
+
+typedef enum _wkeConsoleLevel {
+ wkeLevelDebug = 4,
+ wkeLevelLog = 1,
+ wkeLevelInfo = 5,
+ wkeLevelWarning = 2,
+ wkeLevelError = 3,
+ wkeLevelRevokedError = 6,
+ wkeLevelLast = wkeLevelInfo
+} wkeConsoleLevel;
+typedef void(WKE_CALL_TYPE*wkeConsoleCallback)(wkeWebView webView, void* param, wkeConsoleLevel level, const wkeString message, const wkeString sourceName, unsigned sourceLine, const wkeString stackTrace);
+
+typedef void(WKE_CALL_TYPE*wkeOnCallUiThread)(wkeWebView webView, void* paramOnInThread);
+typedef void(WKE_CALL_TYPE*wkeCallUiThread)(wkeWebView webView, wkeOnCallUiThread func, void* param);
+
+typedef wkeMediaPlayer(WKE_CALL_TYPE* wkeMediaPlayerFactory)(wkeWebView webView, wkeMediaPlayerClient client, void* npBrowserFuncs, void* npPluginFuncs);
+typedef bool(WKE_CALL_TYPE* wkeOnIsMediaPlayerSupportsMIMEType)(const utf8* mime);
+
+//wkeNet--------------------------------------------------------------------------------------
+
+typedef struct wkeWebUrlRequest* wkeWebUrlRequestPtr;
+typedef struct wkeWebUrlResponse* wkeWebUrlResponsePtr;
+
+typedef void(WKE_CALL_TYPE* wkeOnUrlRequestWillRedirectCallback)(wkeWebView webView, void* param, wkeWebUrlRequestPtr oldRequest, wkeWebUrlRequestPtr request, wkeWebUrlResponsePtr redirectResponse);
+typedef void(WKE_CALL_TYPE* wkeOnUrlRequestDidReceiveResponseCallback)(wkeWebView webView, void* param, wkeWebUrlRequestPtr request, wkeWebUrlResponsePtr response);
+typedef void(WKE_CALL_TYPE* wkeOnUrlRequestDidReceiveDataCallback)(wkeWebView webView, void* param, wkeWebUrlRequestPtr request, const char* data, int dataLength);
+typedef void(WKE_CALL_TYPE* wkeOnUrlRequestDidFailCallback)(wkeWebView webView, void* param, wkeWebUrlRequestPtr request, const utf8* error);
+typedef void(WKE_CALL_TYPE* wkeOnUrlRequestDidFinishLoadingCallback)(wkeWebView webView, void* param, wkeWebUrlRequestPtr request, double finishTime);
+
+typedef struct _wkeUrlRequestCallbacks {
+ wkeOnUrlRequestWillRedirectCallback willRedirectCallback;
+ wkeOnUrlRequestDidReceiveResponseCallback didReceiveResponseCallback;
+ wkeOnUrlRequestDidReceiveDataCallback didReceiveDataCallback;
+ wkeOnUrlRequestDidFailCallback didFailCallback;
+ wkeOnUrlRequestDidFinishLoadingCallback didFinishLoadingCallback;
+} wkeUrlRequestCallbacks;
+
+typedef bool(WKE_CALL_TYPE*wkeLoadUrlBeginCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job);
+typedef void(WKE_CALL_TYPE*wkeLoadUrlEndCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job, void* buf, int len);
+typedef void(WKE_CALL_TYPE*wkeLoadUrlFailCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job);
+typedef void(WKE_CALL_TYPE*wkeLoadUrlHeadersReceivedCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job);
+typedef void(WKE_CALL_TYPE*wkeLoadUrlFinishCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job, int len);
+
+typedef void(WKE_CALL_TYPE*wkeDidCreateScriptContextCallback)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, void* context, int extensionGroup, int worldId);
+typedef void(WKE_CALL_TYPE*wkeWillReleaseScriptContextCallback)(wkeWebView webView, void* param, wkeWebFrameHandle frameId, void* context, int worldId);
+typedef bool(WKE_CALL_TYPE*wkeNetResponseCallback)(wkeWebView webView, void* param, const utf8* url, wkeNetJob job);
+typedef void(WKE_CALL_TYPE*wkeOnNetGetFaviconCallback)(wkeWebView webView, void* param, const utf8* url, wkeMemBuf* buf);
+
+typedef void* v8ContextPtr;
+typedef void* v8Isolate;
+
+//wke window-----------------------------------------------------------------------------------
+typedef enum _wkeWindowType {
+ WKE_WINDOW_TYPE_POPUP,
+ WKE_WINDOW_TYPE_TRANSPARENT,
+ WKE_WINDOW_TYPE_CONTROL
+} wkeWindowType;
+
+typedef struct _wkeWindowCreateInfo {
+ int size;
+ HWND parent;
+ DWORD style;
+ DWORD styleEx;
+ int x;
+ int y;
+ int width;
+ int height;
+ COLORREF color;
+} wkeWindowCreateInfo;
+
+typedef struct _wkeDefaultPrinterSettings {
+ int structSize; // 默认是4 * 10
+ BOOL isLandscape; // 是否为横向打印格式
+ BOOL isPrintHeadFooter; //
+ BOOL isPrintBackgroud; // 是否打印背景
+ int edgeDistanceLeft; // 上边距单位:毫米
+ int edgeDistanceTop;
+ int edgeDistanceRight;
+ int edgeDistanceBottom;
+ int copies; // 默认打印份数
+ int paperType; // DMPAPER_A4等
+#if defined(__cplusplus)
+ inline _wkeDefaultPrinterSettings();
+#endif
+} wkeDefaultPrinterSettings;
+
+typedef bool(WKE_CALL_TYPE*wkeWindowClosingCallback)(wkeWebView webWindow, void* param);
+typedef void(WKE_CALL_TYPE*wkeWindowDestroyCallback)(wkeWebView webWindow, void* param);
+
+typedef struct {
+ RECT bounds;
+ bool draggable;
+} wkeDraggableRegion;
+typedef void(WKE_CALL_TYPE*wkeDraggableRegionsChangedCallback)(wkeWebView webView, void* param, const wkeDraggableRegion* rects, int rectCount);
+
+//JavaScript Bind-----------------------------------------------------------------------------------
+#define JS_CALL __fastcall
+typedef jsValue(JS_CALL* jsNativeFunction) (jsExecState es);
+
+typedef jsValue(WKE_CALL_TYPE* wkeJsNativeFunction) (jsExecState es, void* param);
+
+typedef enum _jsType {
+ JSTYPE_NUMBER,
+ JSTYPE_STRING,
+ JSTYPE_BOOLEAN,
+ JSTYPE_OBJECT,
+ JSTYPE_FUNCTION,
+ JSTYPE_UNDEFINED,
+ JSTYPE_ARRAY,
+ JSTYPE_NULL,
+} jsType;
+
+// cexer JS对象、函数绑定支持
+typedef jsValue(WKE_CALL_TYPE*jsGetPropertyCallback)(jsExecState es, jsValue object, const char* propertyName);
+typedef bool(WKE_CALL_TYPE*jsSetPropertyCallback)(jsExecState es, jsValue object, const char* propertyName, jsValue value);
+typedef jsValue(WKE_CALL_TYPE*jsCallAsFunctionCallback)(jsExecState es, jsValue object, jsValue* args, int argCount);
+struct tagjsData; // declare warning fix
+typedef void(WKE_CALL_TYPE*jsFinalizeCallback)(struct tagjsData* data);
+
+typedef struct tagjsData {
+ char typeName[100];
+ jsGetPropertyCallback propertyGet;
+ jsSetPropertyCallback propertySet;
+ jsFinalizeCallback finalize;
+ jsCallAsFunctionCallback callAsFunction;
+} jsData;
+
+typedef struct _jsExceptionInfo {
+ const utf8* message; // Returns the exception message.
+ const utf8* sourceLine; // Returns the line of source code that the exception occurred within.
+ const utf8* scriptResourceName; // Returns the resource name for the script from where the function causing the error originates.
+ int lineNumber; // Returns the 1-based number of the line where the error occurred or 0 if the line number is unknown.
+ int startPosition; // Returns the index within the script of the first character where the error occurred.
+ int endPosition; // Returns the index within the script of the last character where the error occurred.
+ int startColumn; // Returns the index within the line of the first character where the error occurred.
+ int endColumn; // Returns the index within the line of the last character where the error occurred.
+ const utf8* callstackString;
+} jsExceptionInfo;
+
+typedef struct _jsKeys {
+ unsigned int length;
+ const char** keys;
+
+#if defined(__cplusplus)
+ ~_jsKeys();
+#endif
+} jsKeys;
+
+
+#if defined(__cplusplus)
+namespace wke {
+
+class IWebView {
+public:
+ virtual void destroy() = 0;
+
+ virtual const char* name() const = 0;
+ virtual void setName(const char* name) = 0;
+
+ virtual bool isTransparent() const = 0;
+ virtual void setTransparent(bool transparent) = 0;
+
+ virtual void loadURL(const utf8* url) = 0;
+ virtual void loadURL(const wchar_t* url) = 0;
+
+ virtual void loadHTML(const utf8* html) = 0;
+ virtual void loadHTML(const wchar_t* html) = 0;
+
+ virtual void loadFile(const utf8* filename) = 0;
+ virtual void loadFile(const wchar_t* filename) = 0;
+
+ virtual const utf8* url() const = 0;
+
+ virtual bool isLoading() const = 0; /*document load sucessed*/
+ virtual bool isLoadingFailed() const = 0; /*document load failed*/
+ virtual bool isLoadingSucceeded() const = 0; /*document load complete*/
+ virtual bool isDocumentReady() const = 0; /*document ready*/
+ virtual void stopLoading() = 0;
+ virtual void reload() = 0;
+
+ virtual const utf8* title() = 0;
+ virtual const wchar_t* titleW() = 0;
+
+ virtual void resize(int w, int h) = 0;
+ virtual int width() const = 0; /*viewport width*/
+ virtual int height() const = 0; /*viewport height*/
+
+ virtual int contentsWidth() const = 0; /*contents width*/
+ virtual int contentsHeight() const = 0; /*contents height*/
+
+ virtual void setDirty(bool dirty) = 0;
+ virtual bool isDirty() const = 0;
+ virtual void addDirtyArea(int x, int y, int w, int h) = 0;
+
+ virtual void layoutIfNeeded() = 0;
+ virtual void paint(void* bits, int pitch) = 0;
+
+ virtual bool canGoBack() const = 0;
+ virtual bool goBack() = 0;
+ virtual bool canGoForward() const = 0;
+ virtual bool goForward() = 0;
+
+ virtual void editorSelectAll() = 0;
+ virtual void editorUnSelect() = 0;
+ virtual void editorCopy() = 0;
+ virtual void editorCut() = 0;
+ virtual void editorPaste() = 0;
+ virtual void editorDelete() = 0;
+ virtual void editorUndo() = 0;
+ virtual void editorRedo() = 0;
+
+ virtual void setCookieEnabled(bool enable) = 0;
+ virtual bool isCookieEnabled() const = 0;
+
+ virtual void setMediaVolume(float volume) = 0;
+ virtual float mediaVolume() const = 0;
+
+ virtual bool fireMouseEvent(unsigned int message, int x, int y, unsigned int flags) = 0;
+ virtual bool fireContextMenuEvent(int x, int y, unsigned int flags) = 0;
+ virtual bool fireMouseWheelEvent(int x, int y, int delta, unsigned int flags) = 0;
+ virtual bool fireKeyUpEvent(unsigned int virtualKeyCode, unsigned int flags, bool systemKey) = 0;
+ virtual bool fireKeyDownEvent(unsigned int virtualKeyCode, unsigned int flags, bool systemKey) = 0;
+ virtual bool fireKeyPressEvent(unsigned int virtualKeyCode, unsigned int flags, bool systemKey) = 0;
+
+ virtual void setFocus() = 0;
+ virtual void killFocus() = 0;
+
+ virtual wkeRect getCaret() = 0;
+
+ virtual jsValue runJS(const utf8* script) = 0;
+ virtual jsValue runJS(const wchar_t* script) = 0;
+ virtual jsExecState globalExec() = 0;
+
+ virtual void sleep() = 0; //moveOffscreen
+ virtual void wake() = 0; //moveOnscreen
+ virtual bool isAwake() const = 0;
+
+ virtual void setZoomFactor(float factor) = 0;
+ virtual float zoomFactor() const = 0;
+
+ virtual void setEditable(bool editable) = 0;
+
+ virtual void setClientHandler(const wkeClientHandler* handler) = 0;
+ virtual const wkeClientHandler* getClientHandler() const = 0;
+};
+
+}
+#endif
+
+//////////////////////////////////////////////////////////////////////////
+
+#define WKE_DEFINE_ITERATOR0(returnVal, name, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR1(returnVal, name, p1, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR2(returnVal, name, p1, p2, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR3(returnVal, name, p1, p2, p3, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR4(returnVal, name, p1, p2, p3, p4, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR5(returnVal, name, p1, p2, p3, p4, p5, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4, p5); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR6(returnVal, name, p1, p2, p3, p4, p5, p6, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4, p5, p6); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR9(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4, p5, p6, p7, p8, p9); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR10(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+#define WKE_DEFINE_ITERATOR11(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, description) \
+ typedef returnVal(WKE_CALL_TYPE* FN_##name)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); \
+ __declspec(selectany) FN_##name name = ((FN_##name)0);
+
+// ---
+
+#define WKE_DECLARE_ITERATOR0(returnVal, name, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name();
+
+#define WKE_DECLARE_ITERATOR1(returnVal, name, p1, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1);
+
+#define WKE_DECLARE_ITERATOR2(returnVal, name, p1, p2, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2);
+
+#define WKE_DECLARE_ITERATOR3(returnVal, name, p1, p2, p3, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3);
+
+#define WKE_DECLARE_ITERATOR4(returnVal, name, p1, p2, p3, p4, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4);
+
+#define WKE_DECLARE_ITERATOR5(returnVal, name, p1, p2, p3, p4, p5, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4, p5);
+
+#define WKE_DECLARE_ITERATOR6(returnVal, name, p1, p2, p3, p4, p5, p6, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4, p5, p6);
+
+#define WKE_DECLARE_ITERATOR9(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4, p5, p6, p7, p8, p9);
+
+#define WKE_DECLARE_ITERATOR10(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+
+#define WKE_DECLARE_ITERATOR11(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, description) \
+ WKE_EXTERN_C __declspec(dllexport) returnVal WKE_CALL_TYPE name(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
+
+// ---
+
+#define WKE_GET_PTR_ITERATOR(name) \
+ name = (FN_##name)GetProcAddress(hMod, #name); \
+ if (!name) \
+ MessageBoxA(((HWND)0), "wke api not found", #name, 0);
+
+#define WKE_GET_PTR_ITERATOR0(returnVal, name, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR1(returnVal, name, p1, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR2(returnVal, name, p1, p2, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR3(returnVal, name, p1, p2, p3, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR4(returnVal, name, p1, p2, p3, p4, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR5(returnVal, name, p1, p2, p3, p4, p5, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR6(returnVal, name, p1, p2, p3, p4, p5, p6, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR9(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR10(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+#define WKE_GET_PTR_ITERATOR11(returnVal, name, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, description) \
+ WKE_GET_PTR_ITERATOR(name);
+
+// 以下是wke的导出函数。格式按照【返回类型】【函数名】【参数】来排列
+
+#define WKE_FOR_EACH_DEFINE_FUNCTION(ITERATOR0, ITERATOR1, ITERATOR2, ITERATOR3, ITERATOR4, ITERATOR5, ITERATOR6, ITERATOR9, ITERATOR10, ITERATOR11) \
+ ITERATOR0(void, wkeShutdown, "") \
+ ITERATOR0(void, wkeShutdownForDebug, "测试使用,不了解千万别用!") \
+ \
+ ITERATOR0(unsigned int, wkeVersion, "") \
+ ITERATOR0(const utf8*, wkeVersionString, "") \
+ ITERATOR2(void, wkeGC, wkeWebView webView, long intervalSec, "") \
+ ITERATOR2(void, wkeSetResourceGc, wkeWebView webView, long intervalSec, "") \
+ \
+ ITERATOR5(void, wkeSetFileSystem, WKE_FILE_OPEN pfnOpen, WKE_FILE_CLOSE pfnClose, WKE_FILE_SIZE pfnSize, WKE_FILE_READ pfnRead, WKE_FILE_SEEK pfnSeek, "") \
+ \
+ ITERATOR1(const char*, wkeWebViewName, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetWebViewName, wkeWebView webView, const char* name, "") \
+ \
+ ITERATOR1(BOOL, wkeIsLoaded, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsLoadFailed, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsLoadComplete, wkeWebView webView, "") \
+ \
+ ITERATOR1(const utf8*, wkeGetSource, wkeWebView webView, "") \
+ ITERATOR1(const utf8*, wkeTitle, wkeWebView webView, "") \
+ ITERATOR1(const wchar_t*, wkeTitleW, wkeWebView webView, "") \
+ ITERATOR1(int, wkeWidth, wkeWebView webView, "") \
+ ITERATOR1(int, wkeHeight, wkeWebView webView, "") \
+ ITERATOR1(int, wkeContentsWidth, wkeWebView webView, "") \
+ ITERATOR1(int, wkeContentsHeight, wkeWebView webView, "") \
+ \
+ ITERATOR1(void, wkeSelectAll, wkeWebView webView, "") \
+ ITERATOR1(void, wkeCopy, wkeWebView webView, "") \
+ ITERATOR1(void, wkeCut, wkeWebView webView, "") \
+ ITERATOR1(void, wkePaste, wkeWebView webView, "") \
+ ITERATOR1(void, wkeDelete, wkeWebView webView, "") \
+ \
+ ITERATOR1(BOOL, wkeCookieEnabled, wkeWebView webView, "") \
+ ITERATOR1(float, wkeMediaVolume, wkeWebView webView, "") \
+ \
+ ITERATOR5(BOOL, wkeMouseEvent, wkeWebView webView, unsigned int message, int x, int y, unsigned int flags, "") \
+ ITERATOR4(BOOL, wkeContextMenuEvent, wkeWebView webView, int x, int y, unsigned int flags, "") \
+ ITERATOR5(BOOL, wkeMouseWheel, wkeWebView webView, int x, int y, int delta, unsigned int flags, "") \
+ ITERATOR4(BOOL, wkeKeyUp, wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey, "") \
+ ITERATOR4(BOOL, wkeKeyDown, wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey, "") \
+ ITERATOR4(BOOL, wkeKeyPress, wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey, "") \
+ \
+ ITERATOR1(void, wkeFocus, wkeWebView webView, "") \
+ ITERATOR1(void, wkeUnfocus, wkeWebView webView, "") \
+ \
+ ITERATOR1(wkeRect, wkeGetCaret, wkeWebView webView, "") \
+ \
+ ITERATOR1(void, wkeAwaken, wkeWebView webView, "") \
+ \
+ ITERATOR1(float, wkeZoomFactor, wkeWebView webView, "") \
+ \
+ ITERATOR2(void, wkeSetClientHandler, wkeWebView webView, const wkeClientHandler* handler, "") \
+ ITERATOR1(const wkeClientHandler*, wkeGetClientHandler, wkeWebView webView, "") \
+ \
+ ITERATOR1(const utf8*, wkeToString, const wkeString string, "") \
+ ITERATOR1(const wchar_t*, wkeToStringW, const wkeString string, "") \
+ \
+ ITERATOR2(const utf8*, jsToString, jsExecState es, jsValue v, "") \
+ ITERATOR2(const wchar_t*, jsToStringW, jsExecState es, jsValue v, "") \
+ \
+ ITERATOR1(void, wkeConfigure, const wkeSettings* settings, "") \
+ ITERATOR0(BOOL, wkeIsInitialize, "") \
+ \
+ ITERATOR2(void, wkeSetViewSettings, wkeWebView webView, const wkeViewSettings* settings, "") \
+ ITERATOR3(void, wkeSetDebugConfig, wkeWebView webView, const char* debugString, const char* param, "") \
+ ITERATOR2(void *, wkeGetDebugConfig, wkeWebView webView, const char* debugString, "") \
+ \
+ ITERATOR0(void, wkeFinalize, "") \
+ ITERATOR0(void, wkeUpdate, "") \
+ ITERATOR0(unsigned int, wkeGetVersion, "") \
+ ITERATOR0(const utf8*, wkeGetVersionString, "") \
+ \
+ ITERATOR0(wkeWebView, wkeCreateWebView, "") \
+ ITERATOR1(void, wkeDestroyWebView, wkeWebView webView, "") \
+ \
+ ITERATOR2(void, wkeSetMemoryCacheEnable, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetMouseEnabled, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetTouchEnabled, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetSystemTouchEnabled, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetContextMenuEnabled, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetNavigationToNewWindowEnable, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetCspCheckEnable, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetNpapiPluginsEnabled, wkeWebView webView, bool b, "") \
+ ITERATOR2(void, wkeSetHeadlessEnabled, wkeWebView webView, bool b, "可以关闭渲染") \
+ ITERATOR2(void, wkeSetDragEnable, wkeWebView webView, bool b, "可关闭拖拽文件加载网页") \
+ ITERATOR2(void, wkeSetDragDropEnable, wkeWebView webView, bool b, "可关闭拖拽到其他进程") \
+ ITERATOR3(void, wkeSetContextMenuItemShow, wkeWebView webView, wkeMenuItemId item, bool isShow, "设置某项menu是否显示") \
+ ITERATOR2(void, wkeSetLanguage, wkeWebView webView, const char* language, "") \
+ \
+ ITERATOR2(void, wkeSetViewNetInterface, wkeWebView webView, const char* netInterface, "") \
+ \
+ ITERATOR1(void, wkeSetProxy, const wkeProxy* proxy, "") \
+ ITERATOR2(void, wkeSetViewProxy, wkeWebView webView, wkeProxy *proxy, "") \
+ \
+ ITERATOR1(const char*, wkeGetName, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetName, wkeWebView webView, const char* name, "") \
+ \
+ ITERATOR2(void, wkeSetHandle, wkeWebView webView, HWND wnd, "") \
+ ITERATOR3(void, wkeSetHandleOffset, wkeWebView webView, int x, int y, "") \
+ \
+ ITERATOR1(BOOL, wkeIsTransparent, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetTransparent, wkeWebView webView, bool transparent, "") \
+ \
+ ITERATOR2(void, wkeSetUserAgent, wkeWebView webView, const utf8* userAgent, "") \
+ ITERATOR1(const char*, wkeGetUserAgent, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetUserAgentW, wkeWebView webView, const wchar_t* userAgent, "") \
+ \
+ ITERATOR4(void, wkeShowDevtools, wkeWebView webView, const wchar_t* path, wkeOnShowDevtoolsCallback callback, void* param, "") \
+ \
+ ITERATOR2(void, wkeLoadW, wkeWebView webView, const wchar_t* url, "") \
+ ITERATOR2(void, wkeLoadURL, wkeWebView webView, const utf8* url, "") \
+ ITERATOR2(void, wkeLoadURLW, wkeWebView webView, const wchar_t* url, "") \
+ ITERATOR4(void, wkePostURL, wkeWebView wkeView, const utf8* url, const char* postData, int postLen, "") \
+ ITERATOR4(void, wkePostURLW, wkeWebView wkeView, const wchar_t* url, const char* postData, int postLen, "") \
+ \
+ ITERATOR2(void, wkeLoadHTML, wkeWebView webView, const utf8* html, "") \
+ ITERATOR3(void, wkeLoadHtmlWithBaseUrl, wkeWebView webView, const utf8* html, const utf8* baseUrl, "") \
+ ITERATOR2(void, wkeLoadHTMLW, wkeWebView webView, const wchar_t* html, "") \
+ \
+ ITERATOR2(void, wkeLoadFile, wkeWebView webView, const utf8* filename, "") \
+ ITERATOR2(void, wkeLoadFileW, wkeWebView webView, const wchar_t* filename, "") \
+ \
+ ITERATOR1(const utf8*, wkeGetURL, wkeWebView webView, "") \
+ ITERATOR2(const utf8*, wkeGetFrameUrl, wkeWebView webView, wkeWebFrameHandle frameId, "") \
+ \
+ ITERATOR1(BOOL, wkeIsLoading, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsLoadingSucceeded, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsLoadingFailed, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsLoadingCompleted, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsDocumentReady, wkeWebView webView, "") \
+ ITERATOR1(void, wkeStopLoading, wkeWebView webView, "") \
+ ITERATOR1(void, wkeReload, wkeWebView webView, "") \
+ ITERATOR2(void, wkeGoToOffset, wkeWebView webView, int offset, "") \
+ ITERATOR2(void, wkeGoToIndex, wkeWebView webView, int index, "") \
+ \
+ ITERATOR1(int, wkeGetWebviewId, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsWebviewAlive, int id, "") \
+ ITERATOR1(BOOL, wkeIsWebviewValid, wkeWebView webView, "") \
+ \
+ ITERATOR3(const utf8*, wkeGetDocumentCompleteURL, wkeWebView webView, wkeWebFrameHandle frameId, const utf8* partialURL, "") \
+ \
+ ITERATOR3(wkeMemBuf*, wkeCreateMemBuf, wkeWebView webView, void* buf, size_t length, "") \
+ ITERATOR1(void, wkeFreeMemBuf, wkeMemBuf* buf, "") \
+ \
+ ITERATOR1(const utf8*, wkeGetTitle, wkeWebView webView, "") \
+ ITERATOR1(const wchar_t*, wkeGetTitleW, wkeWebView webView, "") \
+ \
+ ITERATOR3(void, wkeResize, wkeWebView webView, int w, int h, "") \
+ ITERATOR1(int, wkeGetWidth, wkeWebView webView, "") \
+ ITERATOR1(int, wkeGetHeight, wkeWebView webView, "") \
+ ITERATOR1(int, wkeGetContentWidth, wkeWebView webView, "") \
+ ITERATOR1(int, wkeGetContentHeight, wkeWebView webView, "") \
+ \
+ ITERATOR2(void, wkeSetDirty, wkeWebView webView, bool dirty, "") \
+ ITERATOR1(BOOL, wkeIsDirty, wkeWebView webView, "") \
+ ITERATOR5(void, wkeAddDirtyArea, wkeWebView webView, int x, int y, int w, int h, "") \
+ ITERATOR1(void, wkeLayoutIfNeeded, wkeWebView webView, "") \
+ ITERATOR11(void, wkePaint2, wkeWebView webView, void* bits, int bufWid, int bufHei, int xDst, int yDst, int w, int h, int xSrc, int ySrc, bool bCopyAlpha, "") \
+ ITERATOR3(void, wkePaint, wkeWebView webView, void* bits, int pitch, "") \
+ ITERATOR1(void, wkeRepaintIfNeeded, wkeWebView webView, "") \
+ ITERATOR1(HDC, wkeGetViewDC, wkeWebView webView, "") \
+ ITERATOR1(void, wkeUnlockViewDC, wkeWebView webView, "") \
+ ITERATOR1(HWND, wkeGetHostHWND, wkeWebView webView, "") \
+ \
+ ITERATOR1(BOOL, wkeCanGoBack, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeGoBack, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeCanGoForward, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeGoForward, wkeWebView webView, "") \
+ ITERATOR2(BOOL, wkeNavigateAtIndex, wkeWebView webView, int index, "") \
+ ITERATOR1(int, wkeGetNavigateIndex, wkeWebView webView, "") \
+ \
+ ITERATOR1(void, wkeEditorSelectAll, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorUnSelect, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorCopy, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorCut, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorPaste, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorDelete, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorUndo, wkeWebView webView, "") \
+ ITERATOR1(void, wkeEditorRedo, wkeWebView webView, "") \
+ \
+ ITERATOR1(const wchar_t*, wkeGetCookieW, wkeWebView webView, "") \
+ ITERATOR1(const utf8*, wkeGetCookie, wkeWebView webView, "") \
+ ITERATOR3(void, wkeSetCookie, wkeWebView webView, const utf8* url, const utf8* cookie, "cookie格式必须是类似:cna=4UvTFE12fEECAXFKf4SFW5eo; expires=Tue, 23-Jan-2029 13:17:21 GMT; path=/; domain=.youku.com") \
+ ITERATOR3(void, wkeVisitAllCookie, wkeWebView webView, void* params, wkeCookieVisitor visitor, "") \
+ ITERATOR2(void, wkePerformCookieCommand, wkeWebView webView, wkeCookieCommand command, "") \
+ ITERATOR2(void, wkeSetCookieEnabled, wkeWebView webView, bool enable, "") \
+ ITERATOR1(BOOL, wkeIsCookieEnabled, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetCookieJarPath, wkeWebView webView, const WCHAR* path, "") \
+ ITERATOR2(void, wkeSetCookieJarFullPath, wkeWebView webView, const WCHAR* path, "") \
+ ITERATOR1(void, wkeClearCookie, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetLocalStorageFullPath, wkeWebView webView, const WCHAR* path, "") \
+ ITERATOR2(void, wkeAddPluginDirectory, wkeWebView webView, const WCHAR* path, "") \
+ \
+ ITERATOR2(void, wkeSetMediaVolume, wkeWebView webView, float volume, "") \
+ ITERATOR1(float, wkeGetMediaVolume, wkeWebView webView, "") \
+ \
+ ITERATOR5(BOOL, wkeFireMouseEvent, wkeWebView webView, unsigned int message, int x, int y, unsigned int flags, "") \
+ ITERATOR4(BOOL, wkeFireContextMenuEvent, wkeWebView webView, int x, int y, unsigned int flags, "") \
+ ITERATOR5(BOOL, wkeFireMouseWheelEvent, wkeWebView webView, int x, int y, int delta, unsigned int flags, "") \
+ ITERATOR4(BOOL, wkeFireKeyUpEvent, wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey, "") \
+ ITERATOR4(BOOL, wkeFireKeyDownEvent, wkeWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey, "") \
+ ITERATOR4(BOOL, wkeFireKeyPressEvent, wkeWebView webView, unsigned int charCode, unsigned int flags, bool systemKey, "") \
+ ITERATOR6(BOOL, wkeFireWindowsMessage, wkeWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result, "") \
+ \
+ ITERATOR1(void, wkeSetFocus, wkeWebView webView, "") \
+ ITERATOR1(void, wkeKillFocus, wkeWebView webView, "") \
+ \
+ ITERATOR1(wkeRect, wkeGetCaretRect, wkeWebView webView, "") \
+ ITERATOR1(wkeRect*, wkeGetCaretRect2, wkeWebView webView, "给一些不方便获取返回结构体的语言调用") \
+ \
+ ITERATOR2(jsValue, wkeRunJS, wkeWebView webView, const utf8* script, "") \
+ ITERATOR2(jsValue, wkeRunJSW, wkeWebView webView, const wchar_t* script, "") \
+ \
+ ITERATOR1(jsExecState, wkeGlobalExec, wkeWebView webView, "") \
+ ITERATOR2(jsExecState, wkeGetGlobalExecByFrame, wkeWebView webView, wkeWebFrameHandle frameId, "") \
+ \
+ ITERATOR1(void, wkeSleep, wkeWebView webView, "") \
+ ITERATOR1(void, wkeWake, wkeWebView webView, "") \
+ ITERATOR1(BOOL, wkeIsAwake, wkeWebView webView, "") \
+ \
+ ITERATOR2(void, wkeSetZoomFactor, wkeWebView webView, float factor, "") \
+ ITERATOR1(float, wkeGetZoomFactor, wkeWebView webView, "") \
+ ITERATOR0(void, wkeEnableHighDPISupport, "") \
+ \
+ ITERATOR2(void, wkeSetEditable, wkeWebView webView, bool editable, "") \
+ \
+ ITERATOR1(const utf8*, wkeGetString, const wkeString string, "") \
+ ITERATOR1(const wchar_t*, wkeGetStringW, const wkeString string, "") \
+ \
+ ITERATOR3(void, wkeSetString, wkeString string, const utf8* str, size_t len, "") \
+ ITERATOR3(void, wkeSetStringWithoutNullTermination, wkeString string, const utf8* str, size_t len, "") \
+ ITERATOR3(void, wkeSetStringW, wkeString string, const wchar_t* str, size_t len, "") \
+ \
+ ITERATOR2(wkeString, wkeCreateString, const utf8* str, size_t len, "") \
+ ITERATOR2(wkeString, wkeCreateStringW, const wchar_t* str, size_t len, "") \
+ ITERATOR2(wkeString, wkeCreateStringWithoutNullTermination, const utf8* str, size_t len, "") \
+ ITERATOR1(size_t, wkeGetStringLen, wkeString str, "") \
+ ITERATOR1(void, wkeDeleteString, wkeString str, "") \
+ \
+ ITERATOR0(wkeWebView, wkeGetWebViewForCurrentContext, "") \
+ ITERATOR3(void, wkeSetUserKeyValue, wkeWebView webView, const char* key, void* value, "") \
+ ITERATOR2(void*, wkeGetUserKeyValue, wkeWebView webView, const char* key, "") \
+ \
+ ITERATOR1(int, wkeGetCursorInfoType, wkeWebView webView, "") \
+ ITERATOR2(void, wkeSetCursorInfoType, wkeWebView webView, int type, "") \
+ ITERATOR5(void, wkeSetDragFiles, wkeWebView webView, const POINT* clintPos, const POINT* screenPos, wkeString* files, int filesCount, "") \
+ \
+ ITERATOR5(void, wkeSetDeviceParameter, wkeWebView webView, const char* device, const char* paramStr, int paramInt, float paramFloat, "") \
+ ITERATOR1(wkeTempCallbackInfo*, wkeGetTempCallbackInfo, wkeWebView webView, "") \
+ \
+ ITERATOR3(void, wkeOnCaretChanged, wkeWebView webView, wkeCaretChangedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnMouseOverUrlChanged, wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnTitleChanged, wkeWebView webView, wkeTitleChangedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnURLChanged, wkeWebView webView, wkeURLChangedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnURLChanged2, wkeWebView webView, wkeURLChangedCallback2 callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnPaintUpdated, wkeWebView webView, wkePaintUpdatedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnPaintBitUpdated, wkeWebView webView, wkePaintBitUpdatedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnAlertBox, wkeWebView webView, wkeAlertBoxCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnConfirmBox, wkeWebView webView, wkeConfirmBoxCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnPromptBox, wkeWebView webView, wkePromptBoxCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnNavigation, wkeWebView webView, wkeNavigationCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnCreateView, wkeWebView webView, wkeCreateViewCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnDocumentReady, wkeWebView webView, wkeDocumentReadyCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnDocumentReady2, wkeWebView webView, wkeDocumentReady2Callback callback, void* param, "") \
+ ITERATOR3(void, wkeOnLoadingFinish, wkeWebView webView, wkeLoadingFinishCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnDownload, wkeWebView webView, wkeDownloadCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnDownload2, wkeWebView webView, wkeDownload2Callback callback, void* param, "") \
+ ITERATOR3(void, wkeOnConsole, wkeWebView webView, wkeConsoleCallback callback, void* param, "") \
+ ITERATOR3(void, wkeSetUIThreadCallback, wkeWebView webView, wkeCallUiThread callback, void* param, "") \
+ ITERATOR3(void, wkeOnLoadUrlBegin, wkeWebView webView, wkeLoadUrlBeginCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnLoadUrlEnd, wkeWebView webView, wkeLoadUrlEndCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnLoadUrlHeadersReceived, wkeWebView webView, wkeLoadUrlHeadersReceivedCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnLoadUrlFinish, wkeWebView webView, wkeLoadUrlFinishCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnLoadUrlFail, wkeWebView webView, wkeLoadUrlFailCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnDidCreateScriptContext, wkeWebView webView, wkeDidCreateScriptContextCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnWillReleaseScriptContext, wkeWebView webView, wkeWillReleaseScriptContextCallback callback, void* callbackParam, "") \
+ ITERATOR3(void, wkeOnWindowClosing, wkeWebView webWindow, wkeWindowClosingCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnWindowDestroy, wkeWebView webWindow, wkeWindowDestroyCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnDraggableRegionsChanged, wkeWebView webView, wkeDraggableRegionsChangedCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnWillMediaLoad, wkeWebView webView, wkeWillMediaLoadCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnStartDragging, wkeWebView webView, wkeStartDraggingCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnPrint, wkeWebView webView, wkeOnPrintCallback callback, void* param, "") \
+ ITERATOR4(void, wkeScreenshot, wkeWebView webView, const wkeScreenshotSettings* settings, wkeOnScreenshot callback, void* param, "") \
+ \
+ ITERATOR3(void, wkeOnOtherLoad, wkeWebView webView, wkeOnOtherLoadCallback callback, void* param, "") \
+ ITERATOR3(void, wkeOnContextMenuItemClick, wkeWebView webView, wkeOnContextMenuItemClickCallback callback, void* param, "") \
+ \
+ ITERATOR1(BOOL, wkeIsProcessingUserGesture, wkeWebView webView, "") \
+ \
+ ITERATOR2(void, wkeNetSetMIMEType, wkeNetJob jobPtr, const char* type, "设置response的mime") \
+ ITERATOR2(const char*, wkeNetGetMIMEType, wkeNetJob jobPtr, wkeString mime, "获取response的mime") \
+ ITERATOR1(const char*, wkeNetGetReferrer, wkeNetJob jobPtr, "获取request的referrer") \
+ ITERATOR4(void, wkeNetSetHTTPHeaderField, wkeNetJob jobPtr, const wchar_t* key, const wchar_t* value, bool response, "") \
+ ITERATOR2(const char*, wkeNetGetHTTPHeaderField, wkeNetJob jobPtr, const char* key, "") \
+ ITERATOR2(const char*, wkeNetGetHTTPHeaderFieldFromResponse, wkeNetJob jobPtr, const char* key, "") \
+ ITERATOR3(void, wkeNetSetData, wkeNetJob jobPtr, void* buf, int len, "调用此函数后,网络层收到数据会存储在一buf内,接收数据完成后响应OnLoadUrlEnd事件.#此调用严重影响性能,慎用" \
+ "此函数和wkeNetSetData的区别是,wkeNetHookRequest会在接受到真正网络数据后再调用回调,并允许回调修改网络数据。"\
+ "而wkeNetSetData是在网络数据还没发送的时候修改") \
+ ITERATOR1(void, wkeNetHookRequest, wkeNetJob jobPtr, "") \
+ ITERATOR3(void, wkeNetOnResponse, wkeWebView webView, wkeNetResponseCallback callback, void* param, "") \
+ ITERATOR1(wkeRequestType, wkeNetGetRequestMethod, wkeNetJob jobPtr, "") \
+ ITERATOR3(int, wkeNetGetFavicon, wkeWebView webView, wkeOnNetGetFaviconCallback callback, void* param, "") \
+ \
+ ITERATOR1(void, wkeNetContinueJob, wkeNetJob jobPtr, "")\
+ ITERATOR1(const char*, wkeNetGetUrlByJob, wkeNetJob jobPtr, "")\
+ ITERATOR1(const wkeSlist*, wkeNetGetRawHttpHead, wkeNetJob jobPtr, "")\
+ ITERATOR1(const wkeSlist*, wkeNetGetRawResponseHead, wkeNetJob jobPtr, "")\
+ \
+ ITERATOR1(void, wkeNetCancelRequest, wkeNetJob jobPtr, "")\
+ ITERATOR1(BOOL, wkeNetHoldJobToAsynCommit, wkeNetJob jobPtr, "")\
+ ITERATOR2(void, wkeNetChangeRequestUrl, wkeNetJob jobPtr, const char* url, "")\
+ \
+ ITERATOR3(wkeWebUrlRequestPtr, wkeNetCreateWebUrlRequest, const utf8* url, const utf8* method, const utf8* mime, "")\
+ ITERATOR1(wkeWebUrlRequestPtr, wkeNetCreateWebUrlRequest2, const blinkWebURLRequestPtr request, "")\
+ ITERATOR2(blinkWebURLRequestPtr, wkeNetCopyWebUrlRequest, wkeNetJob jobPtr, bool needExtraData, "")\
+ ITERATOR1(void, wkeNetDeleteBlinkWebURLRequestPtr, blinkWebURLRequestPtr request, "")\
+ ITERATOR3(void, wkeNetAddHTTPHeaderFieldToUrlRequest, wkeWebUrlRequestPtr request, const utf8* name, const utf8* value, "")\
+ ITERATOR4(int, wkeNetStartUrlRequest, wkeWebView webView, wkeWebUrlRequestPtr request, void* param, const wkeUrlRequestCallbacks* callbacks, "")\
+ ITERATOR1(int, wkeNetGetHttpStatusCode, wkeWebUrlResponsePtr response, "")\
+ ITERATOR1(__int64, wkeNetGetExpectedContentLength, wkeWebUrlResponsePtr response, "")\
+ ITERATOR1(const utf8*, wkeNetGetResponseUrl, wkeWebUrlResponsePtr response, "")\
+ ITERATOR1(void, wkeNetCancelWebUrlRequest, int requestId, "")\
+ \
+ ITERATOR1(wkePostBodyElements*, wkeNetGetPostBody, wkeNetJob jobPtr, "") \
+ ITERATOR2(wkePostBodyElements*, wkeNetCreatePostBodyElements, wkeWebView webView, size_t length, "") \
+ ITERATOR1(void, wkeNetFreePostBodyElements, wkePostBodyElements* elements, "") \
+ ITERATOR1(wkePostBodyElement*, wkeNetCreatePostBodyElement, wkeWebView webView, "") \
+ ITERATOR1(void, wkeNetFreePostBodyElement, wkePostBodyElement* element, "") \
+ \
+ ITERATOR9(wkeDownloadOpt, wkePopupDialogAndDownload, wkeWebView webviewHandle, const wkeDialogOptions* dialogOpt, \
+ size_t expectedContentLength, const char* url, const char* mime, const char* disposition, wkeNetJob job,wkeNetJobDataBind* dataBind, wkeDownloadBind* callbackBind, "") \
+ ITERATOR10(wkeDownloadOpt, wkeDownloadByPath, wkeWebView webviewHandle, const wkeDialogOptions* dialogOpt, const WCHAR* path, size_t expectedContentLength,const char* url, \
+ const char* mime, const char* disposition, wkeNetJob job, wkeNetJobDataBind* dataBind, wkeDownloadBind* callbackBind, "") \
+ \
+ ITERATOR2(BOOL, wkeIsMainFrame, wkeWebView webView, wkeWebFrameHandle frameId, "") \
+ ITERATOR2(BOOL, wkeIsWebRemoteFrame, wkeWebView webView, wkeWebFrameHandle frameId, "") \
+ ITERATOR1(wkeWebFrameHandle, wkeWebFrameGetMainFrame, wkeWebView webView, "") \
+ ITERATOR4(jsValue, wkeRunJsByFrame, wkeWebView webView, wkeWebFrameHandle frameId, const utf8* script, bool isInClosure, "") \
+ ITERATOR3(void, wkeInsertCSSByFrame, wkeWebView webView, wkeWebFrameHandle frameId, const utf8* cssText, "") \
+ \
+ ITERATOR3(void, wkeWebFrameGetMainWorldScriptContext, wkeWebView webView, wkeWebFrameHandle webFrameId, v8ContextPtr contextOut, "") \
+ \
+ ITERATOR0(v8Isolate, wkeGetBlinkMainThreadIsolate, "") \
+ \
+ ITERATOR6(wkeWebView, wkeCreateWebWindow, wkeWindowType type, HWND parent, int x, int y, int width, int height, "") \
+ ITERATOR1(wkeWebView, wkeCreateWebCustomWindow, const wkeWindowCreateInfo* info, "") \
+ ITERATOR1(void, wkeDestroyWebWindow, wkeWebView webWindow, "") \
+ ITERATOR1(HWND, wkeGetWindowHandle, wkeWebView webWindow, "") \
+ \
+ ITERATOR2(void, wkeShowWindow, wkeWebView webWindow, bool show, "") \
+ ITERATOR2(void, wkeEnableWindow, wkeWebView webWindow, bool enable, "") \
+ \
+ ITERATOR5(void, wkeMoveWindow, wkeWebView webWindow, int x, int y, int width, int height, "") \
+ ITERATOR1(void, wkeMoveToCenter, wkeWebView webWindow, "") \
+ ITERATOR3(void, wkeResizeWindow, wkeWebView webWindow, int width, int height, "") \
+ \
+ ITERATOR6(wkeWebDragOperation, wkeDragTargetDragEnter, wkeWebView webView, const wkeWebDragData* webDragData, const POINT* clientPoint, const POINT* screenPoint, wkeWebDragOperationsMask operationsAllowed, int modifiers, "") \
+ ITERATOR5(wkeWebDragOperation, wkeDragTargetDragOver, wkeWebView webView, const POINT* clientPoint, const POINT* screenPoint, wkeWebDragOperationsMask operationsAllowed, int modifiers, "") \
+ ITERATOR1(void, wkeDragTargetDragLeave, wkeWebView webView, "") \
+ ITERATOR4(void, wkeDragTargetDrop, wkeWebView webView, const POINT* clientPoint, const POINT* screenPoint, int modifiers, "") \
+ ITERATOR4(void, wkeDragTargetEnd, wkeWebView webView, const POINT* clientPoint, const POINT* screenPoint, wkeWebDragOperation operation, "") \
+ \
+ ITERATOR1(void, wkeUtilSetUiCallback, wkeUiThreadPostTaskCallback callback, "") \
+ ITERATOR1(const utf8*, wkeUtilSerializeToMHTML, wkeWebView webView, "") \
+ ITERATOR3(const wkePdfDatas*, wkeUtilPrintToPdf, wkeWebView webView, wkeWebFrameHandle frameId, const wkePrintSettings* settings,"") \
+ ITERATOR3(const wkeMemBuf*, wkePrintToBitmap, wkeWebView webView, wkeWebFrameHandle frameId, const wkeScreenshotSettings* settings,"") \
+ ITERATOR1(void, wkeUtilRelasePrintPdfDatas, const wkePdfDatas* datas,"") \
+ \
+ ITERATOR2(void, wkeSetWindowTitle, wkeWebView webWindow, const utf8* title, "") \
+ ITERATOR2(void, wkeSetWindowTitleW, wkeWebView webWindow, const wchar_t* title, "") \
+ \
+ ITERATOR3(void, wkeNodeOnCreateProcess, wkeWebView webView, wkeNodeOnCreateProcessCallback callback, void* param, "") \
+ \
+ ITERATOR4(void, wkeOnPluginFind, wkeWebView webView, const char* mime, wkeOnPluginFindCallback callback, void* param, "") \
+ ITERATOR4(void, wkeAddNpapiPlugin, wkeWebView webView, void* initializeFunc, void* getEntryPointsFunc, void* shutdownFunc, "") \
+ \
+ ITERATOR4(void, wkePluginListBuilderAddPlugin, void* builder, const utf8* name, const utf8* description, const utf8* fileName, "") \
+ ITERATOR3(void, wkePluginListBuilderAddMediaTypeToLastPlugin, void* builder, const utf8* name, const utf8* description, "") \
+ ITERATOR2(void, wkePluginListBuilderAddFileExtensionToLastMediaType, void* builder, const utf8* fileExtension, "") \
+ \
+ ITERATOR1(wkeWebView, wkeGetWebViewByNData, void* ndata, "") \
+ \
+ ITERATOR5(BOOL, wkeRegisterEmbedderCustomElement, wkeWebView webView, wkeWebFrameHandle frameId, const char* name, void* options, void* outResult, "") \
+ \
+ ITERATOR3(void, wkeSetMediaPlayerFactory, wkeWebView webView, wkeMediaPlayerFactory factory, wkeOnIsMediaPlayerSupportsMIMEType callback, "") \
+ \
+ ITERATOR3(const utf8* , wkeGetContentAsMarkup, wkeWebView webView, wkeWebFrameHandle frame, size_t* size, "") \
+ \
+ ITERATOR1(const utf8*, wkeUtilDecodeURLEscape, const utf8* url, "") \
+ ITERATOR1(const utf8*, wkeUtilEncodeURLEscape, const utf8* url, "") \
+ ITERATOR1(const utf8*, wkeUtilBase64Encode, const utf8* str, "") \
+ ITERATOR1(const utf8*, wkeUtilBase64Decode, const utf8* str, "") \
+ ITERATOR1(const wkeMemBuf*, wkeUtilCreateV8Snapshot, const utf8* str, "") \
+ \
+ ITERATOR0(void, wkeRunMessageLoop, "") \
+ \
+ ITERATOR1(void, wkeSaveMemoryCache, wkeWebView webView, "") \
+ \
+ ITERATOR3(void, jsBindFunction, const char* name, jsNativeFunction fn, unsigned int argCount, "") \
+ ITERATOR2(void, jsBindGetter, const char* name, jsNativeFunction fn, "") \
+ ITERATOR2(void, jsBindSetter, const char* name, jsNativeFunction fn, "") \
+ \
+ ITERATOR4(void, wkeJsBindFunction, const char* name, wkeJsNativeFunction fn, void* param, unsigned int argCount, "") \
+ ITERATOR3(void, wkeJsBindGetter, const char* name, wkeJsNativeFunction fn, void* param, "") \
+ ITERATOR3(void, wkeJsBindSetter, const char* name, wkeJsNativeFunction fn, void* param, "") \
+ \
+ ITERATOR1(int, jsArgCount, jsExecState es, "") \
+ ITERATOR2(jsType, jsArgType, jsExecState es, int argIdx, "") \
+ ITERATOR2(jsValue, jsArg, jsExecState es, int argIdx, "") \
+ \
+ ITERATOR1(jsType, jsTypeOf, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsNumber, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsString, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsBoolean, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsObject, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsFunction, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsUndefined, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsNull, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsArray, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsTrue, jsValue v, "") \
+ ITERATOR1(BOOL, jsIsFalse, jsValue v, "") \
+ \
+ ITERATOR2(int, jsToInt, jsExecState es, jsValue v, "") \
+ ITERATOR2(float, jsToFloat, jsExecState es, jsValue v, "") \
+ ITERATOR2(double, jsToDouble, jsExecState es, jsValue v, "") \
+ ITERATOR2(const char*, jsToDoubleString, jsExecState es, jsValue v, "") \
+ ITERATOR2(BOOL, jsToBoolean, jsExecState es, jsValue v, "") \
+ ITERATOR3(jsValue, jsArrayBuffer, jsExecState es, const char* buffer, size_t size, "") \
+ ITERATOR2(wkeMemBuf*, jsGetArrayBuffer, jsExecState es, jsValue value, "") \
+ ITERATOR2(const utf8*, jsToTempString, jsExecState es, jsValue v, "") \
+ ITERATOR2(const wchar_t*, jsToTempStringW, jsExecState es, jsValue v, "") \
+ ITERATOR2(void*, jsToV8Value, jsExecState es, jsValue v, "return v8::Persistent*") \
+ \
+ ITERATOR1(jsValue, jsInt, int n, "") \
+ ITERATOR1(jsValue, jsFloat, float f, "") \
+ ITERATOR1(jsValue, jsDouble, double d, "") \
+ ITERATOR1(jsValue, jsDoubleString, const char* str, "") \
+ ITERATOR1(jsValue, jsBoolean, bool b, "") \
+ \
+ ITERATOR0(jsValue, jsUndefined, "") \
+ ITERATOR0(jsValue, jsNull, "") \
+ ITERATOR0(jsValue, jsTrue, "") \
+ ITERATOR0(jsValue, jsFalse, "") \
+ \
+ ITERATOR2(jsValue, jsString, jsExecState es, const utf8* str, "") \
+ ITERATOR2(jsValue, jsStringW, jsExecState es, const wchar_t* str, "") \
+ ITERATOR1(jsValue, jsEmptyObject, jsExecState es, "") \
+ ITERATOR1(jsValue, jsEmptyArray, jsExecState es, "") \
+ \
+ ITERATOR2(jsValue, jsObject, jsExecState es, jsData* obj, "") \
+ ITERATOR2(jsValue, jsFunction, jsExecState es, jsData* obj, "") \
+ ITERATOR2(jsData*, jsGetData, jsExecState es, jsValue object, "") \
+ \
+ ITERATOR3(jsValue, jsGet, jsExecState es, jsValue object, const char* prop, "") \
+ ITERATOR4(void, jsSet, jsExecState es, jsValue object, const char* prop, jsValue v, "") \
+ \
+ ITERATOR3(jsValue, jsGetAt, jsExecState es, jsValue object, int index, "") \
+ ITERATOR4(void, jsSetAt, jsExecState es, jsValue object, int index, jsValue v, "") \
+ ITERATOR2(jsKeys*, jsGetKeys, jsExecState es, jsValue object, "") \
+ ITERATOR2(BOOL, jsIsJsValueValid, jsExecState es, jsValue object, "") \
+ ITERATOR1(BOOL, jsIsValidExecState, jsExecState es, "") \
+ ITERATOR3(void, jsDeleteObjectProp, jsExecState es, jsValue object, const char* prop, "") \
+ \
+ ITERATOR2(int, jsGetLength, jsExecState es, jsValue object, "") \
+ ITERATOR3(void, jsSetLength, jsExecState es, jsValue object, int length, "") \
+ \
+ ITERATOR1(jsValue, jsGlobalObject, jsExecState es, "") \
+ ITERATOR1(wkeWebView, jsGetWebView, jsExecState es, "") \
+ \
+ ITERATOR2(jsValue, jsEval, jsExecState es, const utf8* str, "") \
+ ITERATOR2(jsValue, jsEvalW, jsExecState es, const wchar_t* str, "") \
+ ITERATOR3(jsValue, jsEvalExW, jsExecState es, const wchar_t* str, bool isInClosure, "") \
+ \
+ ITERATOR5(jsValue, jsCall, jsExecState es, jsValue func, jsValue thisObject, jsValue* args, int argCount, "") \
+ ITERATOR4(jsValue, jsCallGlobal, jsExecState es, jsValue func, jsValue* args, int argCount, "") \
+ \
+ ITERATOR2(jsValue, jsGetGlobal, jsExecState es, const char* prop, "") \
+ ITERATOR3(void, jsSetGlobal, jsExecState es, const char* prop, jsValue v, "") \
+ \
+ ITERATOR0(void, jsGC, "") \
+ ITERATOR2(BOOL, jsAddRef, jsExecState es, jsValue val, "") \
+ ITERATOR2(BOOL, jsReleaseRef, jsExecState es, jsValue val, "") \
+ ITERATOR1(jsExceptionInfo*, jsGetLastErrorIfException, jsExecState es, "") \
+ ITERATOR2(jsValue, jsThrowException, jsExecState es, const utf8* exception, "") \
+ ITERATOR1(const utf8*, jsGetCallstack, jsExecState es, "")
+
+#if ENABLE_WKE == 1
+
+WKE_EXTERN_C __declspec(dllexport) void WKE_CALL_TYPE wkeInit();
+WKE_EXTERN_C __declspec(dllexport) void WKE_CALL_TYPE wkeInitialize();
+WKE_EXTERN_C __declspec(dllexport) void WKE_CALL_TYPE wkeInitializeEx(const wkeSettings* settings);
+
+WKE_FOR_EACH_DEFINE_FUNCTION(WKE_DECLARE_ITERATOR0, WKE_DECLARE_ITERATOR1, WKE_DECLARE_ITERATOR2, \
+ WKE_DECLARE_ITERATOR3, WKE_DECLARE_ITERATOR4, WKE_DECLARE_ITERATOR5, WKE_DECLARE_ITERATOR6, WKE_DECLARE_ITERATOR9, WKE_DECLARE_ITERATOR10, WKE_DECLARE_ITERATOR11)
+
+#else
+
+WKE_FOR_EACH_DEFINE_FUNCTION(WKE_DEFINE_ITERATOR0, WKE_DEFINE_ITERATOR1, WKE_DEFINE_ITERATOR2, \
+ WKE_DEFINE_ITERATOR3, WKE_DEFINE_ITERATOR4, WKE_DEFINE_ITERATOR5, WKE_DEFINE_ITERATOR6, WKE_DEFINE_ITERATOR9, WKE_DEFINE_ITERATOR10, WKE_DEFINE_ITERATOR11)
+
+typedef void (WKE_CALL_TYPE *FN_wkeInitializeEx)(const wkeSettings* settings);
+
+__declspec(selectany) const wchar_t* s_wkeDllPath = L"node.dll";
+__declspec(selectany) HMODULE s_wkeMainDllHandle = NULL;
+
+inline void wkeSetWkeDllHandle(const HMODULE mainDllHandle)
+{
+ s_wkeMainDllHandle = mainDllHandle;
+}
+
+inline void wkeSetWkeDllPath(const wchar_t* dllPath)
+{
+ s_wkeDllPath = dllPath;
+}
+
+inline int wkeInitializeEx(const wkeSettings* settings)
+{
+ HMODULE hMod = s_wkeMainDllHandle;
+ if (!hMod)
+ hMod = LoadLibraryW(s_wkeDllPath);
+ if (hMod) {
+ FN_wkeInitializeEx wkeInitializeExFunc = (FN_wkeInitializeEx)GetProcAddress(hMod, "wkeInitializeEx");
+ wkeInitializeExFunc(settings);
+
+ WKE_FOR_EACH_DEFINE_FUNCTION(WKE_GET_PTR_ITERATOR0, WKE_GET_PTR_ITERATOR1, WKE_GET_PTR_ITERATOR2, WKE_GET_PTR_ITERATOR3, \
+ WKE_GET_PTR_ITERATOR4, WKE_GET_PTR_ITERATOR5, WKE_GET_PTR_ITERATOR6, WKE_GET_PTR_ITERATOR9, WKE_GET_PTR_ITERATOR10, WKE_GET_PTR_ITERATOR11);
+ return 1;
+ }
+ return 0;
+}
+
+inline int wkeInit()
+{
+ return wkeInitializeEx(((const wkeSettings*)0));
+}
+
+inline int wkeInitialize()
+{
+ return wkeInitializeEx(((const wkeSettings*)0));
+}
+
+#endif
+
+
+
+#endif // WKE_DEFINE_H
+
diff --git a/wmts.exe b/wmts.exe
new file mode 100644
index 0000000..b9bf370
Binary files /dev/null and b/wmts.exe differ