Sciter.Lite это т.н. windowless версия — не используется HWND — весь Sciter работает внутри [full screen] surface предоcтавляемым девайсом / платформой.
Используется либо OpenGL/ES если он есть на девайсе или прямой доступ в video память / битмап.
API прост как двери — практически олна функция
SciterProcX( void* id, struct MSG* msg)
| Пример кода |
| bool engine_init(struct engine *engine) {
// enable features to be used from script
BOOL r = SciterSetOption(NULL, SCITER_SET_SCRIPT_RUNTIME_FEATURES, ALLOW_FILE_IO | ALLOW_SOCKET_IO | ALLOW_EVAL | ALLOW_SYSINFO);
if (!r) return false;
r = SciterProcX(engine, SCITER_X_MSG_CREATE());
if (!r) return false;
engine_report_environment(engine);
SciterSetCallback(engine, engine_handle_sciter_notification, NULL);
unsigned int dpi = (unsigned)AConfiguration_getDensity(engine->app->config);
if (dpi < 96) dpi = 96; else if (dpi > ACONFIGURATION_DENSITY_XXXHIGH) dpi = ACONFIGURATION_DENSITY_XXXHIGH;
SciterProcX(engine, SCITER_X_MSG_RESOLUTION(dpi));
r = SciterLoadFile(engine, WSTR("asset:main.htm"));
return bool(r);
}
void engine_handle_cmd(struct android_app *app, int32_t cmd) {
struct engine *engine = (struct engine *)app->userData;
switch (cmd) {
case APP_CMD_INIT_WINDOW:
// The window is being shown, get it ready.
if (engine->app->window != NULL) {
engine_init(engine);
engine_init_display(engine);
engine_draw_frame(engine);
}
break;
case APP_CMD_CONTENT_RECT_CHANGED:
{
unsigned w = ANativeWindow_getWidth(app->window);
unsigned h = ANativeWindow_getHeight(app->window);
sciter::value vars;
vars.set_item("window-content-top",sciter::value(app->contentRect.top));
vars.set_item("window-content-left",sciter::value(app->contentRect.left));
vars.set_item("window-content-bottom",sciter::value(app->contentRect.bottom));
vars.set_item("window-content-right",sciter::value(app->contentRect.right));
SciterSetMediaVars(engine, &vars);
SciterProcX(engine, SCITER_X_MSG_SIZE(w,h));
} break;
}
}
|
| |
Это вот как оно выглядит вживую (видно что тот экран отрисовывается с 60 FPS) :
Это вот анимация как выглядит:
https://youtu.be/OJ7mQth2WjM