3142 lines
169 KiB
C
3142 lines
169 KiB
C
|
#if defined(SOKOL_IMPL) && !defined(SOKOL_IMGUI_IMPL)
|
||
|
#define SOKOL_IMGUI_IMPL
|
||
|
#endif
|
||
|
#ifndef SOKOL_IMGUI_INCLUDED
|
||
|
/*
|
||
|
sokol_imgui.h -- drop-in Dear ImGui renderer/event-handler for sokol_gfx.h
|
||
|
|
||
|
Project URL: https://github.com/floooh/sokol
|
||
|
|
||
|
Do this:
|
||
|
#define SOKOL_IMPL or
|
||
|
#define SOKOL_IMGUI_IMPL
|
||
|
|
||
|
before you include this file in *one* C or C++ file to create the
|
||
|
implementation.
|
||
|
|
||
|
NOTE that the implementation can be compiled either as C++ or as C.
|
||
|
When compiled as C++, sokol_imgui.h will directly call into the
|
||
|
Dear ImGui C++ API. When compiled as C, sokol_imgui.h will call
|
||
|
cimgui.h functions instead.
|
||
|
|
||
|
NOTE that the formerly separate header sokol_cimgui.h has been
|
||
|
merged into sokol_imgui.h
|
||
|
|
||
|
The following defines are used by the implementation to select the
|
||
|
platform-specific embedded shader code (these are the same defines as
|
||
|
used by sokol_gfx.h and sokol_app.h):
|
||
|
|
||
|
SOKOL_GLCORE33
|
||
|
SOKOL_GLES3
|
||
|
SOKOL_D3D11
|
||
|
SOKOL_METAL
|
||
|
SOKOL_WGPU
|
||
|
|
||
|
Optionally provide the following configuration define both before including the
|
||
|
the declaration and implementation:
|
||
|
|
||
|
SOKOL_IMGUI_NO_SOKOL_APP - don't depend on sokol_app.h (see below for details)
|
||
|
|
||
|
Optionally provide the following macros before including the implementation
|
||
|
to override defaults:
|
||
|
|
||
|
SOKOL_ASSERT(c) - your own assert macro (default: assert(c))
|
||
|
SOKOL_IMGUI_API_DECL- public function declaration prefix (default: extern)
|
||
|
SOKOL_API_DECL - same as SOKOL_IMGUI_API_DECL
|
||
|
SOKOL_API_IMPL - public function implementation prefix (default: -)
|
||
|
|
||
|
If sokol_imgui.h is compiled as a DLL, define the following before
|
||
|
including the declaration or implementation:
|
||
|
|
||
|
SOKOL_DLL
|
||
|
|
||
|
On Windows, SOKOL_DLL will define SOKOL_IMGUI_API_DECL as __declspec(dllexport)
|
||
|
or __declspec(dllimport) as needed.
|
||
|
|
||
|
Include the following headers before sokol_imgui.h (both before including
|
||
|
the declaration and implementation):
|
||
|
|
||
|
sokol_gfx.h
|
||
|
sokol_app.h (except SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
|
||
|
Additionally, include the following headers before including the
|
||
|
implementation:
|
||
|
|
||
|
If the implementation is compiled as C++:
|
||
|
imgui.h
|
||
|
|
||
|
If the implementation is compiled as C:
|
||
|
cimgui.h
|
||
|
|
||
|
|
||
|
FEATURE OVERVIEW:
|
||
|
=================
|
||
|
sokol_imgui.h implements the initialization, rendering and event-handling
|
||
|
code for Dear ImGui (https://github.com/ocornut/imgui) on top of
|
||
|
sokol_gfx.h and (optionally) sokol_app.h.
|
||
|
|
||
|
The sokol_app.h dependency is optional and used for input event handling.
|
||
|
If you only use sokol_gfx.h but not sokol_app.h in your application,
|
||
|
define SOKOL_IMGUI_NO_SOKOL_APP before including the implementation
|
||
|
of sokol_imgui.h, this will remove any dependency to sokol_app.h, but
|
||
|
you must feed input events into Dear ImGui yourself.
|
||
|
|
||
|
sokol_imgui.h is not thread-safe, all calls must be made from the
|
||
|
same thread where sokol_gfx.h is running.
|
||
|
|
||
|
HOWTO:
|
||
|
======
|
||
|
|
||
|
--- To initialize sokol-imgui, call:
|
||
|
|
||
|
simgui_setup(const simgui_desc_t* desc)
|
||
|
|
||
|
This will initialize Dear ImGui and create sokol-gfx resources
|
||
|
(two buffers for vertices and indices, a font texture and a pipeline-
|
||
|
state-object).
|
||
|
|
||
|
Use the following simgui_desc_t members to configure behaviour:
|
||
|
|
||
|
int max_vertices
|
||
|
The maximum number of vertices used for UI rendering, default is 65536.
|
||
|
sokol-imgui will use this to compute the size of the vertex-
|
||
|
and index-buffers allocated via sokol_gfx.h
|
||
|
|
||
|
int image_pool_size
|
||
|
Number of simgui_image_t objects which can be alive at the same time.
|
||
|
The default is 256.
|
||
|
|
||
|
sg_pixel_format color_format
|
||
|
The color pixel format of the render pass where the UI
|
||
|
will be rendered. The default (0) matches sokoL_gfx.h's
|
||
|
default pass.
|
||
|
|
||
|
sg_pixel_format depth_format
|
||
|
The depth-buffer pixel format of the render pass where
|
||
|
the UI will be rendered. The default (0) matches
|
||
|
sokol_gfx.h's default pass depth format.
|
||
|
|
||
|
int sample_count
|
||
|
The MSAA sample-count of the render pass where the UI
|
||
|
will be rendered. The default (0) matches sokol_gfx.h's
|
||
|
default pass sample count.
|
||
|
|
||
|
const char* ini_filename
|
||
|
Sets this path as ImGui::GetIO().IniFilename where ImGui will store
|
||
|
and load UI persistency data. By default this is 0, so that Dear ImGui
|
||
|
will not preserve state between sessions (and also won't do
|
||
|
any filesystem calls). Also see the ImGui functions:
|
||
|
- LoadIniSettingsFromMemory()
|
||
|
- SaveIniSettingsFromMemory()
|
||
|
These functions give you explicit control over loading and saving
|
||
|
UI state while using your own filesystem wrapper functions (in this
|
||
|
case keep simgui_desc.ini_filename zero)
|
||
|
|
||
|
bool no_default_font
|
||
|
Set this to true if you don't want to use ImGui's default
|
||
|
font. In this case you need to initialize the font
|
||
|
yourself after simgui_setup() is called.
|
||
|
|
||
|
bool disable_paste_override
|
||
|
If set to true, sokol_imgui.h will not 'emulate' a Dear Imgui
|
||
|
clipboard paste action on SAPP_EVENTTYPE_CLIPBOARD_PASTED event.
|
||
|
This is mainly a hack/workaround to allow external workarounds
|
||
|
for making copy/paste work on the web platform. In general,
|
||
|
copy/paste support isn't properly fleshed out in sokol_imgui.h yet.
|
||
|
|
||
|
bool disable_set_mouse_cursor
|
||
|
If true, sokol_imgui.h will not control the mouse cursor type
|
||
|
by calling sapp_set_mouse_cursor().
|
||
|
|
||
|
bool disable_windows_resize_from_edges
|
||
|
If true, windows can only be resized from the bottom right corner.
|
||
|
The default is false, meaning windows can be resized from edges.
|
||
|
|
||
|
bool write_alpha_channel
|
||
|
Set this to true if you want alpha values written to the
|
||
|
framebuffer. By default this behavior is disabled to prevent
|
||
|
undesired behavior on platforms like the web where the canvas is
|
||
|
always alpha-blended with the background.
|
||
|
|
||
|
simgui_allocator_t allocator
|
||
|
Used to override memory allocation functions. See further below
|
||
|
for details.
|
||
|
|
||
|
simgui_logger_t logger
|
||
|
A user-provided logging callback. Note that without logging
|
||
|
callback, sokol-imgui will be completely silent!
|
||
|
See the section about ERROR REPORTING AND LOGGING below
|
||
|
for more details.
|
||
|
|
||
|
--- At the start of a frame, call:
|
||
|
|
||
|
simgui_new_frame(&(simgui_frame_desc_t){
|
||
|
.width = ...,
|
||
|
.height = ...,
|
||
|
.delta_time = ...,
|
||
|
.dpi_scale = ...
|
||
|
});
|
||
|
|
||
|
'width' and 'height' are the dimensions of the rendering surface,
|
||
|
passed to ImGui::GetIO().DisplaySize.
|
||
|
|
||
|
'delta_time' is the frame duration passed to ImGui::GetIO().DeltaTime.
|
||
|
|
||
|
'dpi_scale' is the current DPI scale factor, if this is left zero-initialized,
|
||
|
1.0f will be used instead. Typical values for dpi_scale are >= 1.0f.
|
||
|
|
||
|
For example, if you're using sokol_app.h and render to the default framebuffer:
|
||
|
|
||
|
simgui_new_frame(&(simgui_frame_desc_t){
|
||
|
.width = sapp_width(),
|
||
|
.height = sapp_height(),
|
||
|
.delta_time = sapp_frame_duration(),
|
||
|
.dpi_scale = sapp_dpi_scale()
|
||
|
});
|
||
|
|
||
|
--- at the end of the frame, before the sg_end_pass() where you
|
||
|
want to render the UI, call:
|
||
|
|
||
|
simgui_render()
|
||
|
|
||
|
This will first call ImGui::Render(), and then render ImGui's draw list
|
||
|
through sokol_gfx.h
|
||
|
|
||
|
--- if you're using sokol_app.h, from inside the sokol_app.h event callback,
|
||
|
call:
|
||
|
|
||
|
bool simgui_handle_event(const sapp_event* ev);
|
||
|
|
||
|
The return value is the value of ImGui::GetIO().WantCaptureKeyboard,
|
||
|
if this is true, you might want to skip keyboard input handling
|
||
|
in your own event handler.
|
||
|
|
||
|
If you want to use the ImGui functions for checking if a key is pressed
|
||
|
(e.g. ImGui::IsKeyPressed()) the following helper function to map
|
||
|
an sapp_keycode to an ImGuiKey value may be useful:
|
||
|
|
||
|
int simgui_map_keycode(sapp_keycode c);
|
||
|
|
||
|
Note that simgui_map_keycode() can be called outside simgui_setup()/simgui_shutdown().
|
||
|
|
||
|
--- finally, on application shutdown, call
|
||
|
|
||
|
simgui_shutdown()
|
||
|
|
||
|
|
||
|
ON USER-PROVIDED IMAGES AND SAMPLERS
|
||
|
====================================
|
||
|
To render your own images via ImGui::Image(), first create an simgui_image_t
|
||
|
object from a sokol-gfx image and sampler object.
|
||
|
|
||
|
// create a sokol-imgui image object which associates an sg_image with an sg_sampler
|
||
|
simgui_image_t simgui_img = simgui_make_image(&(simgui_image_desc_t){
|
||
|
.image = sg_make_image(...),
|
||
|
.sampler = sg_make_sampler(...),
|
||
|
});
|
||
|
|
||
|
// convert the returned image handle into a ImTextureID handle
|
||
|
ImTextureID tex_id = simgui_imtextureid(simgui_img);
|
||
|
|
||
|
// use the ImTextureID handle in Dear ImGui calls:
|
||
|
ImGui::Image(tex_id, ...);
|
||
|
|
||
|
simgui_image_t objects are small and cheap (literally just the image and sampler
|
||
|
handle).
|
||
|
|
||
|
You can omit the sampler handle in the simgui_make_image() call, in this case a
|
||
|
default sampler will be used with nearest-filtering and clamp-to-edge.
|
||
|
|
||
|
Trying to render with an invalid simgui_image_t handle will render a small 8x8
|
||
|
white default texture instead.
|
||
|
|
||
|
To destroy a sokol-imgui image object, call
|
||
|
|
||
|
simgui_destroy_image(simgui_img);
|
||
|
|
||
|
But please be aware that the image object needs to be around until simgui_render() is called
|
||
|
in a frame (if this turns out to be too much of a hassle we could introduce some sort
|
||
|
of garbage collection where destroyed simgui_image_t objects are kept around until
|
||
|
the simgui_render() call).
|
||
|
|
||
|
You can call:
|
||
|
|
||
|
simgui_image_desc_t desc = simgui_query_image_desc(img)
|
||
|
|
||
|
...to get the original desc struct, useful if you need to get the sokol-gfx image
|
||
|
and sampler handle of the simgui_image_t object.
|
||
|
|
||
|
You can convert an ImTextureID back into an simgui_image_t handle:
|
||
|
|
||
|
simgui_image_t img = simgui_image_from_imtextureid(tex_id);
|
||
|
|
||
|
|
||
|
MEMORY ALLOCATION OVERRIDE
|
||
|
==========================
|
||
|
You can override the memory allocation functions at initialization time
|
||
|
like this:
|
||
|
|
||
|
void* my_alloc(size_t size, void* user_data) {
|
||
|
return malloc(size);
|
||
|
}
|
||
|
|
||
|
void my_free(void* ptr, void* user_data) {
|
||
|
free(ptr);
|
||
|
}
|
||
|
|
||
|
...
|
||
|
simgui_setup(&(simgui_desc_t){
|
||
|
// ...
|
||
|
.allocator = {
|
||
|
.alloc_fn = my_alloc,
|
||
|
.free_fn = my_free,
|
||
|
.user_data = ...;
|
||
|
}
|
||
|
});
|
||
|
...
|
||
|
|
||
|
If no overrides are provided, malloc and free will be used.
|
||
|
|
||
|
This only affects memory allocation calls done by sokol_imgui.h
|
||
|
itself though, not any allocations in Dear ImGui.
|
||
|
|
||
|
|
||
|
ERROR REPORTING AND LOGGING
|
||
|
===========================
|
||
|
To get any logging information at all you need to provide a logging callback in the setup call
|
||
|
the easiest way is to use sokol_log.h:
|
||
|
|
||
|
#include "sokol_log.h"
|
||
|
|
||
|
simgui_setup(&(simgui_desc_t){
|
||
|
.logger.func = slog_func
|
||
|
});
|
||
|
|
||
|
To override logging with your own callback, first write a logging function like this:
|
||
|
|
||
|
void my_log(const char* tag, // e.g. 'simgui'
|
||
|
uint32_t log_level, // 0=panic, 1=error, 2=warn, 3=info
|
||
|
uint32_t log_item_id, // SIMGUI_LOGITEM_*
|
||
|
const char* message_or_null, // a message string, may be nullptr in release mode
|
||
|
uint32_t line_nr, // line number in sokol_imgui.h
|
||
|
const char* filename_or_null, // source filename, may be nullptr in release mode
|
||
|
void* user_data)
|
||
|
{
|
||
|
...
|
||
|
}
|
||
|
|
||
|
...and then setup sokol-imgui like this:
|
||
|
|
||
|
simgui_setup(&(simgui_desc_t){
|
||
|
.logger = {
|
||
|
.func = my_log,
|
||
|
.user_data = my_user_data,
|
||
|
}
|
||
|
});
|
||
|
|
||
|
The provided logging function must be reentrant (e.g. be callable from
|
||
|
different threads).
|
||
|
|
||
|
If you don't want to provide your own custom logger it is highly recommended to use
|
||
|
the standard logger in sokol_log.h instead, otherwise you won't see any warnings or
|
||
|
errors.
|
||
|
|
||
|
|
||
|
IMGUI EVENT HANDLING
|
||
|
====================
|
||
|
You can call these functions from your platform's events to handle ImGui events
|
||
|
when SOKOL_IMGUI_NO_SOKOL_APP is defined.
|
||
|
|
||
|
E.g. mouse position events can be dispatched like this:
|
||
|
|
||
|
simgui_add_mouse_pos_event(100, 200);
|
||
|
|
||
|
Key events require a mapping function to convert your platform's key values to ImGuiKey's:
|
||
|
|
||
|
int map_keycode(int keycode) {
|
||
|
// Your mapping logic here...
|
||
|
}
|
||
|
simgui_add_key_event(map_keycode, keycode, true);
|
||
|
|
||
|
Take note that modifiers (shift, ctrl, etc.) must be updated manually.
|
||
|
|
||
|
If sokol_app is being used, ImGui events are handled for you.
|
||
|
|
||
|
|
||
|
LICENSE
|
||
|
=======
|
||
|
|
||
|
zlib/libpng license
|
||
|
|
||
|
Copyright (c) 2018 Andre Weissflog
|
||
|
|
||
|
This software is provided 'as-is', without any express or implied warranty.
|
||
|
In no event will the authors be held liable for any damages arising from the
|
||
|
use of this software.
|
||
|
|
||
|
Permission is granted to anyone to use this software for any purpose,
|
||
|
including commercial applications, and to alter it and redistribute it
|
||
|
freely, subject to the following restrictions:
|
||
|
|
||
|
1. The origin of this software must not be misrepresented; you must not
|
||
|
claim that you wrote the original software. If you use this software in a
|
||
|
product, an acknowledgment in the product documentation would be
|
||
|
appreciated but is not required.
|
||
|
|
||
|
2. Altered source versions must be plainly marked as such, and must not
|
||
|
be misrepresented as being the original software.
|
||
|
|
||
|
3. This notice may not be removed or altered from any source
|
||
|
distribution.
|
||
|
*/
|
||
|
#define SOKOL_IMGUI_INCLUDED (1)
|
||
|
#include <stdint.h>
|
||
|
#include <stdbool.h>
|
||
|
#include <stddef.h> // size_t
|
||
|
|
||
|
#if !defined(SOKOL_GFX_INCLUDED)
|
||
|
#error "Please include sokol_gfx.h before sokol_imgui.h"
|
||
|
#endif
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP) && !defined(SOKOL_APP_INCLUDED)
|
||
|
#error "Please include sokol_app.h before sokol_imgui.h"
|
||
|
#endif
|
||
|
|
||
|
#if defined(SOKOL_API_DECL) && !defined(SOKOL_IMGUI_API_DECL)
|
||
|
#define SOKOL_IMGUI_API_DECL SOKOL_API_DECL
|
||
|
#endif
|
||
|
#ifndef SOKOL_IMGUI_API_DECL
|
||
|
#if defined(_WIN32) && defined(SOKOL_DLL) && defined(SOKOL_IMGUI_IMPL)
|
||
|
#define SOKOL_IMGUI_API_DECL __declspec(dllexport)
|
||
|
#elif defined(_WIN32) && defined(SOKOL_DLL)
|
||
|
#define SOKOL_IMGUI_API_DECL __declspec(dllimport)
|
||
|
#else
|
||
|
#define SOKOL_IMGUI_API_DECL extern
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
enum {
|
||
|
SIMGUI_INVALID_ID = 0,
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
simgui_image_t
|
||
|
|
||
|
A combined image-sampler pair used to inject custom images and samplers into Dear ImGui.
|
||
|
|
||
|
Create with simgui_make_image(), and convert to an ImTextureID handle via
|
||
|
simgui_imtextureid().
|
||
|
*/
|
||
|
typedef struct simgui_image_t { uint32_t id; } simgui_image_t;
|
||
|
|
||
|
/*
|
||
|
simgui_image_desc_t
|
||
|
|
||
|
Descriptor struct for simgui_make_image(). You must provide
|
||
|
at least an sg_image handle. Keeping the sg_sampler handle
|
||
|
zero-initialized will select the builtin default sampler
|
||
|
which uses linear filtering.
|
||
|
*/
|
||
|
typedef struct simgui_image_desc_t {
|
||
|
sg_image image;
|
||
|
sg_sampler sampler;
|
||
|
} simgui_image_desc_t;
|
||
|
|
||
|
/*
|
||
|
simgui_log_item
|
||
|
|
||
|
An enum with a unique item for each log message, warning, error
|
||
|
and validation layer message.
|
||
|
*/
|
||
|
#define _SIMGUI_LOG_ITEMS \
|
||
|
_SIMGUI_LOGITEM_XMACRO(OK, "Ok") \
|
||
|
_SIMGUI_LOGITEM_XMACRO(MALLOC_FAILED, "memory allocation failed") \
|
||
|
_SIMGUI_LOGITEM_XMACRO(IMAGE_POOL_EXHAUSTED, "image pool exhausted") \
|
||
|
|
||
|
#define _SIMGUI_LOGITEM_XMACRO(item,msg) SIMGUI_LOGITEM_##item,
|
||
|
typedef enum simgui_log_item_t {
|
||
|
_SIMGUI_LOG_ITEMS
|
||
|
} simgui_log_item_t;
|
||
|
#undef _SIMGUI_LOGITEM_XMACRO
|
||
|
|
||
|
/*
|
||
|
simgui_allocator_t
|
||
|
|
||
|
Used in simgui_desc_t to provide custom memory-alloc and -free functions
|
||
|
to sokol_imgui.h. If memory management should be overridden, both the
|
||
|
alloc_fn and free_fn function must be provided (e.g. it's not valid to
|
||
|
override one function but not the other).
|
||
|
*/
|
||
|
typedef struct simgui_allocator_t {
|
||
|
void* (*alloc_fn)(size_t size, void* user_data);
|
||
|
void (*free_fn)(void* ptr, void* user_data);
|
||
|
void* user_data;
|
||
|
} simgui_allocator_t;
|
||
|
|
||
|
/*
|
||
|
simgui_logger
|
||
|
|
||
|
Used in simgui_desc_t to provide a logging function. Please be aware
|
||
|
that without logging function, sokol-imgui will be completely
|
||
|
silent, e.g. it will not report errors, warnings and
|
||
|
validation layer messages. For maximum error verbosity,
|
||
|
compile in debug mode (e.g. NDEBUG *not* defined) and install
|
||
|
a logger (for instance the standard logging function from sokol_log.h).
|
||
|
*/
|
||
|
typedef struct simgui_logger_t {
|
||
|
void (*func)(
|
||
|
const char* tag, // always "simgui"
|
||
|
uint32_t log_level, // 0=panic, 1=error, 2=warning, 3=info
|
||
|
uint32_t log_item_id, // SIMGUI_LOGITEM_*
|
||
|
const char* message_or_null, // a message string, may be nullptr in release mode
|
||
|
uint32_t line_nr, // line number in sokol_imgui.h
|
||
|
const char* filename_or_null, // source filename, may be nullptr in release mode
|
||
|
void* user_data);
|
||
|
void* user_data;
|
||
|
} simgui_logger_t;
|
||
|
|
||
|
typedef struct simgui_desc_t {
|
||
|
int max_vertices; // default: 65536
|
||
|
int image_pool_size; // default: 256
|
||
|
sg_pixel_format color_format;
|
||
|
sg_pixel_format depth_format;
|
||
|
int sample_count;
|
||
|
const char* ini_filename;
|
||
|
bool no_default_font;
|
||
|
bool disable_paste_override; // if true, don't send Ctrl-V on EVENTTYPE_CLIPBOARD_PASTED
|
||
|
bool disable_set_mouse_cursor; // if true, don't control the mouse cursor type via sapp_set_mouse_cursor()
|
||
|
bool disable_windows_resize_from_edges; // if true, only resize edges from the bottom right corner
|
||
|
bool write_alpha_channel; // if true, alpha values get written into the framebuffer
|
||
|
simgui_allocator_t allocator; // optional memory allocation overrides (default: malloc/free)
|
||
|
simgui_logger_t logger; // optional log function override
|
||
|
} simgui_desc_t;
|
||
|
|
||
|
typedef struct simgui_frame_desc_t {
|
||
|
int width;
|
||
|
int height;
|
||
|
double delta_time;
|
||
|
float dpi_scale;
|
||
|
} simgui_frame_desc_t;
|
||
|
|
||
|
typedef struct simgui_font_tex_desc_t {
|
||
|
sg_filter min_filter;
|
||
|
sg_filter mag_filter;
|
||
|
} simgui_font_tex_desc_t;
|
||
|
|
||
|
SOKOL_IMGUI_API_DECL void simgui_setup(const simgui_desc_t* desc);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_new_frame(const simgui_frame_desc_t* desc);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_render(void);
|
||
|
SOKOL_IMGUI_API_DECL simgui_image_t simgui_make_image(const simgui_image_desc_t* desc);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_destroy_image(simgui_image_t img);
|
||
|
SOKOL_IMGUI_API_DECL simgui_image_desc_t simgui_query_image_desc(simgui_image_t img);
|
||
|
SOKOL_IMGUI_API_DECL void* simgui_imtextureid(simgui_image_t img);
|
||
|
SOKOL_IMGUI_API_DECL simgui_image_t simgui_image_from_imtextureid(void* imtextureid);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_focus_event(bool focus);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_mouse_pos_event(float x, float y);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_touch_pos_event(float x, float y);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_mouse_button_event(int mouse_button, bool down);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_mouse_wheel_event(float wheel_x, float wheel_y);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_key_event(int (*map_keycode)(int), int keycode, bool down);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_input_character(uint32_t c);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_input_characters_utf8(const char* c);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_add_touch_button_event(int mouse_button, bool down);
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
SOKOL_IMGUI_API_DECL bool simgui_handle_event(const sapp_event* ev);
|
||
|
SOKOL_IMGUI_API_DECL int simgui_map_keycode(sapp_keycode keycode); // returns ImGuiKey_*
|
||
|
#endif
|
||
|
SOKOL_IMGUI_API_DECL void simgui_shutdown(void);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_create_fonts_texture(const simgui_font_tex_desc_t* desc);
|
||
|
SOKOL_IMGUI_API_DECL void simgui_destroy_fonts_texture(void);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} // extern "C"
|
||
|
|
||
|
// reference-based equivalents for C++
|
||
|
inline void simgui_setup(const simgui_desc_t& desc) { return simgui_setup(&desc); }
|
||
|
inline simgui_image_t simgui_make_image(const simgui_image_desc_t& desc) { return simgui_make_image(&desc); }
|
||
|
inline void simgui_new_frame(const simgui_frame_desc_t& desc) { return simgui_new_frame(&desc); }
|
||
|
inline void simgui_create_fonts_texture(const simgui_font_tex_desc_t& desc) { return simgui_create_fonts_texture(&desc); }
|
||
|
|
||
|
#endif
|
||
|
#endif /* SOKOL_IMGUI_INCLUDED */
|
||
|
|
||
|
//-- IMPLEMENTATION ------------------------------------------------------------
|
||
|
#ifdef SOKOL_IMGUI_IMPL
|
||
|
#define SOKOL_IMGUI_IMPL_INCLUDED (1)
|
||
|
|
||
|
#if defined(SOKOL_MALLOC) || defined(SOKOL_CALLOC) || defined(SOKOL_FREE)
|
||
|
#error "SOKOL_MALLOC/CALLOC/FREE macros are no longer supported, please use simgui_desc_t.allocator to override memory allocation functions"
|
||
|
#endif
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
#if !defined(IMGUI_VERSION)
|
||
|
#error "Please include imgui.h before the sokol_imgui.h implementation"
|
||
|
#endif
|
||
|
#else
|
||
|
#if !defined(CIMGUI_INCLUDED)
|
||
|
#error "Please include cimgui.h before the sokol_imgui.h implementation"
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#include <string.h> // memset
|
||
|
#include <stdlib.h> // malloc/free
|
||
|
|
||
|
#if defined(__EMSCRIPTEN__) && !defined(SOKOL_DUMMY_BACKEND)
|
||
|
#include <emscripten.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef SOKOL_API_IMPL
|
||
|
#define SOKOL_API_IMPL
|
||
|
#endif
|
||
|
#ifndef SOKOL_DEBUG
|
||
|
#ifndef NDEBUG
|
||
|
#define SOKOL_DEBUG
|
||
|
#endif
|
||
|
#endif
|
||
|
#ifndef SOKOL_ASSERT
|
||
|
#include <assert.h>
|
||
|
#define SOKOL_ASSERT(c) assert(c)
|
||
|
#endif
|
||
|
#ifndef _SOKOL_PRIVATE
|
||
|
#if defined(__GNUC__) || defined(__clang__)
|
||
|
#define _SOKOL_PRIVATE __attribute__((unused)) static
|
||
|
#else
|
||
|
#define _SOKOL_PRIVATE static
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#define _SIMGUI_INIT_COOKIE (0xBABEBABE)
|
||
|
#define _SIMGUI_INVALID_SLOT_INDEX (0)
|
||
|
#define _SIMGUI_SLOT_SHIFT (16)
|
||
|
#define _SIMGUI_MAX_POOL_SIZE (1<<_SIMGUI_SLOT_SHIFT)
|
||
|
#define _SIMGUI_SLOT_MASK (_SIMGUI_MAX_POOL_SIZE-1)
|
||
|
|
||
|
// helper macros and constants
|
||
|
#define _simgui_def(val, def) (((val) == 0) ? (def) : (val))
|
||
|
|
||
|
// workaround for missing ImDrawCallback_ResetRenderState in cimgui.h
|
||
|
// see: https://github.com/cimgui/cimgui/issues/261
|
||
|
#ifndef ImDrawCallback_ResetRenderState
|
||
|
#define ImDrawCallback_ResetRenderState (ImDrawCallback)(-8)
|
||
|
#endif
|
||
|
|
||
|
typedef struct {
|
||
|
ImVec2 disp_size;
|
||
|
uint8_t _pad_8[8];
|
||
|
} _simgui_vs_params_t;
|
||
|
|
||
|
typedef enum {
|
||
|
_SIMGUI_RESOURCESTATE_INITIAL,
|
||
|
_SIMGUI_RESOURCESTATE_ALLOC,
|
||
|
_SIMGUI_RESOURCESTATE_VALID,
|
||
|
_SIMGUI_RESOURCESTATE_FAILED,
|
||
|
_SIMGUI_RESOURCESTATE_INVALID,
|
||
|
_SIMGUI_RESOURCESTATE_FORCE_U32 = 0x7FFFFFFF
|
||
|
} _simgui_resource_state;
|
||
|
|
||
|
typedef struct {
|
||
|
uint32_t id;
|
||
|
_simgui_resource_state state;
|
||
|
} _simgui_slot_t;
|
||
|
|
||
|
typedef struct {
|
||
|
int size;
|
||
|
int queue_top;
|
||
|
uint32_t* gen_ctrs;
|
||
|
int* free_queue;
|
||
|
} _simgui_pool_t;
|
||
|
|
||
|
typedef struct {
|
||
|
_simgui_slot_t slot;
|
||
|
sg_image image;
|
||
|
sg_sampler sampler;
|
||
|
sg_pipeline pip; // this will either be _simgui.def_pip or _simgui.pip_unfilterable
|
||
|
} _simgui_image_t;
|
||
|
|
||
|
typedef struct {
|
||
|
_simgui_pool_t pool;
|
||
|
_simgui_image_t* items;
|
||
|
} _simgui_image_pool_t;
|
||
|
|
||
|
typedef struct {
|
||
|
uint32_t init_cookie;
|
||
|
simgui_desc_t desc;
|
||
|
float cur_dpi_scale;
|
||
|
sg_buffer vbuf;
|
||
|
sg_buffer ibuf;
|
||
|
sg_image font_img;
|
||
|
sg_sampler font_smp;
|
||
|
simgui_image_t default_font;
|
||
|
sg_image def_img; // used as default image for user images
|
||
|
sg_sampler def_smp; // used as default sampler for user images
|
||
|
sg_shader def_shd;
|
||
|
sg_pipeline def_pip;
|
||
|
// separate shader and pipeline for unfilterable user images
|
||
|
sg_shader shd_unfilterable;
|
||
|
sg_pipeline pip_unfilterable;
|
||
|
sg_range vertices;
|
||
|
sg_range indices;
|
||
|
bool is_osx;
|
||
|
_simgui_image_pool_t image_pool;
|
||
|
} _simgui_state_t;
|
||
|
static _simgui_state_t _simgui;
|
||
|
|
||
|
/*
|
||
|
Embedded source code compiled with:
|
||
|
|
||
|
sokol-shdc -i simgui.glsl -o simgui.h -l glsl330:glsl300es:hlsl4:metal_macos:metal_ios:metal_sim:wgpu -b
|
||
|
|
||
|
(not that for Metal and D3D11 byte code, sokol-shdc must be run
|
||
|
on macOS and Windows)
|
||
|
|
||
|
@vs vs
|
||
|
uniform vs_params {
|
||
|
vec2 disp_size;
|
||
|
};
|
||
|
in vec2 position;
|
||
|
in vec2 texcoord0;
|
||
|
in vec4 color0;
|
||
|
out vec2 uv;
|
||
|
out vec4 color;
|
||
|
void main() {
|
||
|
gl_Position = vec4(((position/disp_size)-0.5)*vec2(2.0,-2.0), 0.5, 1.0);
|
||
|
uv = texcoord0;
|
||
|
color = color0;
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
@fs fs
|
||
|
uniform texture2D tex;
|
||
|
uniform sampler smp;
|
||
|
in vec2 uv;
|
||
|
in vec4 color;
|
||
|
out vec4 frag_color;
|
||
|
void main() {
|
||
|
frag_color = texture(sampler2D(tex, smp), uv) * color;
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
@program simgui vs fs
|
||
|
*/
|
||
|
#if defined(SOKOL_GLCORE33)
|
||
|
static const char _simgui_vs_source_glsl330[341] = {
|
||
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e,
|
||
|
0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
|
||
|
0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
|
||
|
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,
|
||
|
0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,
|
||
|
0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,0x79,
|
||
|
0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,
|
||
|
0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,
|
||
|
0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,
|
||
|
0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,
|
||
|
0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,
|
||
|
0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,
|
||
|
0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,
|
||
|
0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,
|
||
|
0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20,0x76,0x73,0x5f,
|
||
|
0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29,0x20,0x2d,0x20,
|
||
|
0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,
|
||
|
0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,
|
||
|
0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x20,
|
||
|
0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x20,0x20,0x20,
|
||
|
0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,
|
||
|
0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
static const char _simgui_fs_source_glsl330[177] = {
|
||
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x0a,0x0a,0x75,0x6e,
|
||
|
0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,
|
||
|
0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
|
||
|
0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,
|
||
|
0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
|
||
|
0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,
|
||
|
0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,
|
||
|
0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,
|
||
|
0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,
|
||
|
0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x2c,0x20,
|
||
|
0x75,0x76,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,
|
||
|
0x00,
|
||
|
};
|
||
|
#elif defined(SOKOL_GLES3)
|
||
|
static const char _simgui_vs_source_glsl300es[344] = {
|
||
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
|
||
|
0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,
|
||
|
0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
|
||
|
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,
|
||
|
0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
|
||
|
0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,
|
||
|
0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
|
||
|
0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x74,0x65,0x78,
|
||
|
0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,
|
||
|
0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,
|
||
|
0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,
|
||
|
0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x0a,0x76,0x6f,
|
||
|
0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
|
||
|
0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,
|
||
|
0x63,0x34,0x28,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20,
|
||
|
0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x79,0x29,
|
||
|
0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,
|
||
|
0x76,0x65,0x63,0x32,0x28,0x32,0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c,
|
||
|
0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
|
||
|
0x75,0x76,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,
|
||
|
0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
static const char _simgui_fs_source_glsl300es[250] = {
|
||
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
|
||
|
0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
|
||
|
0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69,
|
||
|
0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75,
|
||
|
0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,
|
||
|
0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a,
|
||
|
0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
|
||
|
0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,
|
||
|
0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,
|
||
|
0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,
|
||
|
0x76,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,
|
||
|
0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,
|
||
|
0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,
|
||
|
0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,
|
||
|
0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x29,0x20,0x2a,0x20,0x63,
|
||
|
0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
#elif defined(SOKOL_METAL)
|
||
|
static const uint8_t _simgui_vs_bytecode_metal_macos[3052] = {
|
||
|
0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xec,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xe0,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00,
|
||
|
0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45,
|
||
|
0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x7b,0x12,0x23,0x17,0xd9,0x25,0x1c,
|
||
|
0x1b,0x42,0x42,0x9f,0xbf,0x31,0xd2,0x2c,0x3a,0x55,0x22,0x1d,0x40,0xd8,0xc4,0xf8,
|
||
|
0x20,0x49,0x60,0x6d,0x3c,0xea,0x4e,0x1c,0x34,0x4f,0x46,0x46,0x54,0x18,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08,
|
||
|
0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x37,0x00,0x00,0x00,0x56,0x41,0x54,
|
||
|
0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x80,
|
||
|
0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03,0x00,0x04,0x04,0x06,
|
||
|
0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,
|
||
|
0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xc8,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,
|
||
|
0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xaf,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,
|
||
|
0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,
|
||
|
0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14,0x38,0x08,0x18,0x49,
|
||
|
0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,
|
||
|
0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,
|
||
|
0x51,0x18,0x00,0x00,0x81,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff,
|
||
|
0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,
|
||
|
0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,
|
||
|
0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,
|
||
|
0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,
|
||
|
0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,
|
||
|
0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,
|
||
|
0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,
|
||
|
0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,
|
||
|
0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,
|
||
|
0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,
|
||
|
0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,
|
||
|
0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,
|
||
|
0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,
|
||
|
0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,
|
||
|
0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,
|
||
|
0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,
|
||
|
0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,
|
||
|
0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,
|
||
|
0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,
|
||
|
0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,
|
||
|
0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,
|
||
|
0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,
|
||
|
0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,
|
||
|
0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,
|
||
|
0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,
|
||
|
0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,
|
||
|
0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,
|
||
|
0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73,
|
||
|
0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,
|
||
|
0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc,
|
||
|
0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76,
|
||
|
0x98,0x87,0x72,0x00,0x36,0x18,0x02,0x01,0x2c,0x40,0x05,0x00,0x49,0x18,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,0x16,0x00,0x00,0x00,
|
||
|
0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84,0x04,0x13,0x22,0xe3,
|
||
|
0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c,0x10,0x3c,0x33,0x00,
|
||
|
0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x76,0x08,0x91,0x83,0xa4,0x29,0xa2,0x84,0xc9,
|
||
|
0xaf,0xa4,0xff,0x01,0x22,0x80,0x91,0x50,0x10,0x83,0x08,0x84,0x50,0x8a,0x89,0x90,
|
||
|
0x22,0x1b,0x08,0x98,0x23,0x00,0x83,0x14,0xc8,0x39,0x02,0x50,0x18,0x44,0x08,0x84,
|
||
|
0x61,0x04,0x22,0x19,0x01,0x00,0x00,0x00,0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,0x03,
|
||
|
0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x76,0x08,0x87,0x71,
|
||
|
0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38,0x70,0x03,0x38,0xd8,
|
||
|
0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,
|
||
|
0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,
|
||
|
0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,0x7a,
|
||
|
0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,0x30,
|
||
|
0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,
|
||
|
0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,
|
||
|
0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,
|
||
|
0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,
|
||
|
0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,
|
||
|
0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,
|
||
|
0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,
|
||
|
0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,
|
||
|
0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,
|
||
|
0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,
|
||
|
0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07,0x7a,0x20,0x07,0x75,
|
||
|
0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,0xa0,
|
||
|
0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,0x07,
|
||
|
0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x6d,
|
||
|
0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,0xa0,
|
||
|
0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,0x07,
|
||
|
0x7a,0x30,0x07,0x72,0x30,0x84,0x39,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xc8,
|
||
|
0x02,0x01,0x00,0x00,0x09,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,
|
||
|
0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0xca,0x12,0x18,0x01,0x28,0x88,0x22,0x28,0x84,
|
||
|
0x32,0xa0,0x1d,0x01,0x20,0x1d,0x4b,0x68,0x02,0x00,0x00,0x00,0x79,0x18,0x00,0x00,
|
||
|
0xea,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,
|
||
|
0xb9,0xb4,0x37,0xb7,0x21,0x46,0x42,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93,
|
||
|
0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x24,0x01,0x22,0x24,0x05,0xe7,0x20,0x08,0x0e,
|
||
|
0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,
|
||
|
0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0xc5,0xc6,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,
|
||
|
0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0xc5,0xc6,0xe6,0xc6,0x45,0x26,
|
||
|
0x65,0x88,0x80,0x10,0x43,0x8c,0x24,0x48,0x86,0x44,0x60,0xd1,0x54,0x46,0x17,0xc6,
|
||
|
0x36,0x04,0x41,0x8e,0x24,0x48,0x82,0x44,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,
|
||
|
0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,
|
||
|
0x17,0x26,0xc6,0x56,0x36,0x44,0x40,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,
|
||
|
0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,
|
||
|
0x6e,0x61,0x62,0x6c,0x65,0x43,0x04,0x64,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,
|
||
|
0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,
|
||
|
0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,
|
||
|
0x11,0x90,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19,0xde,0xd7,0x5b,
|
||
|
0x1d,0x1d,0x5c,0x1d,0x1d,0x97,0xba,0xb9,0x32,0x39,0x14,0xb6,0xb7,0x31,0x37,0x98,
|
||
|
0x14,0x46,0x61,0x69,0x72,0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x6e,
|
||
|
0x61,0x6d,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64,0xc8,0x84,0xa5,0xc9,0xb9,0x84,
|
||
|
0xc9,0x9d,0x7d,0xb9,0x85,0xb5,0x95,0x51,0xa8,0xb3,0x1b,0xc2,0x20,0x0f,0x02,0x21,
|
||
|
0x11,0x22,0x21,0x13,0x42,0x71,0xa9,0x9b,0x2b,0x93,0x43,0x61,0x7b,0x1b,0x73,0x8b,
|
||
|
0x49,0xa1,0x61,0xc6,0xf6,0x16,0x46,0x47,0xc3,0x62,0xec,0x8d,0xed,0x4d,0x6e,0x08,
|
||
|
0x83,0x3c,0x88,0x85,0x44,0xc8,0x85,0x4c,0x08,0x46,0x26,0x2c,0x4d,0xce,0x05,0xee,
|
||
|
0x6d,0x2e,0x8d,0x2e,0xed,0xcd,0x8d,0xcb,0x19,0xdb,0x17,0xd4,0xdb,0x5c,0x1a,0x5d,
|
||
|
0xda,0x9b,0xdb,0x10,0x05,0xd1,0x90,0x08,0xb9,0x90,0x09,0xd9,0x86,0x18,0x48,0x85,
|
||
|
0x64,0x08,0x47,0x28,0x2c,0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef,0x2b,0xcd,
|
||
|
0x0d,0xae,0x8e,0x8e,0x52,0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d,0xda,0x9b,
|
||
|
0xdb,0x57,0x9a,0x1b,0x59,0x19,0x1e,0xbd,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,
|
||
|
0x32,0x94,0xaf,0xaf,0xb0,0x34,0xb9,0x2f,0x38,0xb6,0xb0,0xb1,0x32,0xb4,0x37,0x36,
|
||
|
0xb2,0x32,0xb9,0xaf,0xaf,0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x43,
|
||
|
0xa8,0x44,0x40,0x3c,0xe4,0x4b,0x84,0x24,0x40,0xc0,0x00,0x89,0x10,0x09,0x99,0x90,
|
||
|
0x30,0x60,0x42,0x57,0x86,0x37,0xf6,0xf6,0x26,0x47,0x06,0x33,0x84,0x4a,0x02,0xc4,
|
||
|
0x43,0xbe,0x24,0x48,0x02,0x04,0x0c,0x90,0x08,0x91,0x90,0x09,0x19,0x03,0x1a,0x63,
|
||
|
0x6f,0x6c,0x6f,0x72,0x30,0x43,0xa8,0x84,0x40,0x3c,0xe4,0x4b,0x88,0x24,0x40,0xc0,
|
||
|
0x00,0x89,0x90,0x0b,0x99,0x90,0x32,0xa0,0x12,0x96,0x26,0xe7,0x22,0x56,0x67,0x66,
|
||
|
0x56,0x26,0xc7,0x27,0x2c,0x4d,0xce,0x45,0xac,0xce,0xcc,0xac,0x4c,0xee,0x6b,0x2e,
|
||
|
0x4d,0xaf,0x8c,0x48,0x58,0x9a,0x9c,0x8b,0x5c,0x59,0x18,0x19,0xa9,0xb0,0x34,0x39,
|
||
|
0x97,0x39,0x3a,0xb9,0xba,0x31,0xba,0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0x34,0x37,0xb3,
|
||
|
0x37,0x26,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x43,0x94,0x44,0x48,0x86,
|
||
|
0x44,0x40,0x24,0x64,0x0d,0x18,0x85,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1,0xe5,
|
||
|
0xc1,0x95,0x7d,0xcd,0xa5,0xe9,0x95,0xf1,0x0a,0x4b,0x93,0x73,0x09,0x93,0x3b,0xfb,
|
||
|
0xa2,0xcb,0x83,0x2b,0xfb,0x0a,0x63,0x4b,0x3b,0x73,0xfb,0x9a,0x4b,0xd3,0x2b,0x63,
|
||
|
0x62,0x37,0xf7,0x05,0x17,0x26,0x17,0xd6,0x36,0xc7,0xe1,0x4b,0x46,0x66,0x08,0x19,
|
||
|
0x24,0x06,0x72,0x06,0x08,0x1a,0x24,0x03,0xf2,0x25,0x42,0x12,0x20,0x69,0x80,0xa8,
|
||
|
0x01,0xc2,0x06,0x48,0x1b,0x24,0x03,0xe2,0x06,0xc9,0x80,0x44,0xc8,0x1b,0x20,0x13,
|
||
|
0x02,0x07,0x43,0x10,0x44,0x0c,0x10,0x32,0x40,0xcc,0x00,0x89,0x83,0x21,0xc6,0x01,
|
||
|
0x20,0x1d,0x22,0x07,0x7c,0xde,0xda,0xdc,0xd2,0xe0,0xde,0xe8,0xca,0xdc,0xe8,0x40,
|
||
|
0xc6,0xd0,0xc2,0xe4,0xf8,0x4c,0xa5,0xb5,0xc1,0xb1,0x95,0x81,0x0c,0xad,0xac,0x80,
|
||
|
0x50,0x09,0x05,0x05,0x0d,0x11,0x90,0x3a,0x18,0x62,0x20,0x74,0x80,0xd8,0xc1,0x72,
|
||
|
0x0c,0x31,0x90,0x3b,0x40,0xee,0x60,0x39,0x46,0x44,0xec,0xc0,0x0e,0xf6,0xd0,0x0e,
|
||
|
0x6e,0xd0,0x0e,0xef,0x40,0x0e,0xf5,0xc0,0x0e,0xe5,0xe0,0x06,0xe6,0xc0,0x0e,0xe1,
|
||
|
0x70,0x0e,0xf3,0x30,0x45,0x08,0x86,0x11,0x0a,0x3b,0xb0,0x83,0x3d,0xb4,0x83,0x1b,
|
||
|
0xa4,0x03,0x39,0x94,0x83,0x3b,0xd0,0xc3,0x94,0xa0,0x18,0xb1,0x84,0x43,0x3a,0xc8,
|
||
|
0x83,0x1b,0xd8,0x43,0x39,0xc8,0xc3,0x3c,0xa4,0xc3,0x3b,0xb8,0xc3,0x94,0xc0,0x18,
|
||
|
0x41,0x85,0x43,0x3a,0xc8,0x83,0x1b,0xb0,0x43,0x38,0xb8,0xc3,0x39,0xd4,0x43,0x38,
|
||
|
0x9c,0x43,0x39,0xfc,0x82,0x3d,0x94,0x83,0x3c,0xcc,0x43,0x3a,0xbc,0x83,0x3b,0x4c,
|
||
|
0x09,0x90,0x11,0x53,0x38,0xa4,0x83,0x3c,0xb8,0xc1,0x38,0xbc,0x43,0x3b,0xc0,0x43,
|
||
|
0x3a,0xb0,0x43,0x39,0xfc,0xc2,0x3b,0xc0,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x3c,
|
||
|
0x4c,0x19,0x14,0xc6,0x19,0xa1,0x84,0x43,0x3a,0xc8,0x83,0x1b,0xd8,0x43,0x39,0xc8,
|
||
|
0x03,0x3d,0x94,0x03,0x3e,0x4c,0x09,0xe6,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,
|
||
|
0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,
|
||
|
0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,
|
||
|
0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,
|
||
|
0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,
|
||
|
0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,
|
||
|
0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,
|
||
|
0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,
|
||
|
0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,
|
||
|
0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,
|
||
|
0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,
|
||
|
0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,
|
||
|
0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,
|
||
|
0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,
|
||
|
0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,
|
||
|
0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,
|
||
|
0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,
|
||
|
0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,
|
||
|
0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,
|
||
|
0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,
|
||
|
0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,
|
||
|
0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,
|
||
|
0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,
|
||
|
0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,
|
||
|
0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,
|
||
|
0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,
|
||
|
0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,
|
||
|
0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,
|
||
|
0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,
|
||
|
0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,
|
||
|
0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,
|
||
|
0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,
|
||
|
0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,
|
||
|
0x61,0x20,0x00,0x00,0x23,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,
|
||
|
0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40,0x60,0x1c,0x73,0x10,0x42,0xf0,0x3c,0x94,
|
||
|
0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82,0xf0,0x2f,0x80,0x20,0x08,0xc2,0xbf,0x30,
|
||
|
0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08,0x82,0x20,0x08,0x0e,0x33,0x00,0x24,0x73,
|
||
|
0x10,0xd7,0x65,0x55,0x34,0x33,0x00,0x04,0x63,0x04,0x20,0x08,0x82,0xf8,0x37,0x46,
|
||
|
0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00,0xe3,0x0d,0x4c,0x64,0x51,0x40,0x2c,0x0a,
|
||
|
0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9,0x0c,0x32,0x04,0xcb,0x33,0xc8,0x10,0x2c,
|
||
|
0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41,0x15,0xcc,0x36,0x04,0x83,0x90,0x41,0x40,
|
||
|
0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x5b,0x86,0x20,0xc0,0x03,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
};
|
||
|
static const uint8_t _simgui_fs_bytecode_metal_macos[2809] = {
|
||
|
0x4d,0x54,0x4c,0x42,0x01,0x80,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xf9,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x20,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00,
|
||
|
0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45,
|
||
|
0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xa1,0xce,0x6b,0xd1,0x1f,0x32,0x9e,
|
||
|
0x8d,0x8d,0x1c,0xcc,0x19,0xcb,0xd3,0xb6,0x21,0x99,0x0b,0xb6,0x46,0x8b,0x87,0x98,
|
||
|
0x8e,0x2d,0xb5,0x98,0x92,0x0a,0x81,0x7d,0xf3,0x4f,0x46,0x46,0x54,0x18,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08,
|
||
|
0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,
|
||
|
0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,
|
||
|
0x00,0x14,0x00,0x00,0x00,0x0c,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0,
|
||
|
0xde,0x21,0x0c,0x00,0x00,0x80,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00,
|
||
|
0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32,
|
||
|
0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45,
|
||
|
0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44,
|
||
|
0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,
|
||
|
0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00,
|
||
|
0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x60,0x00,
|
||
|
0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07,0x7a,0x60,0x87,0x7c,
|
||
|
0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72,0x68,0x03,0x72,0x48,
|
||
|
0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90,0x07,0x7a,0x68,0x03,
|
||
|
0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc,0x21,0x1c,0xd8,0x61,
|
||
|
0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81,0x1d,0xca,0xa1,0x0d,
|
||
|
0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d,0xd8,0x61,0x1e,0x00,
|
||
|
0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87,0x79,0x98,0x87,0x36,
|
||
|
0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36,0x30,0x07,0x78,0x68,
|
||
|
0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0xc2,0x1d,0xde,
|
||
|
0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0,0xe1,0x1d,0xd2,0xc1,
|
||
|
0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1,0x1d,0x00,0x7a,0x90,
|
||
|
0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90,0x87,0x70,0x68,0x87,
|
||
|
0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07,0x79,0x68,0x83,0x72,
|
||
|
0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36,0x60,0x87,0x72,0x08,
|
||
|
0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30,0x87,0x79,0x68,0x03,
|
||
|
0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,
|
||
|
0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01,0x1e,0xda,0x80,0x1e,
|
||
|
0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,
|
||
|
0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87,0x36,0x30,0x07,0x78,
|
||
|
0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,
|
||
|
0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c,0xc8,0xa1,0x0d,0xf4,
|
||
|
0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81,
|
||
|
0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0xa0,
|
||
|
0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68,0x83,0x76,0x08,0x07,
|
||
|
0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6,0x81,0x1e,0xc2,0x61,
|
||
|
0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61,0x1c,0xe8,0xe1,0x1d,
|
||
|
0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e,0xda,0x60,0x1e,0xd2,
|
||
|
0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87,0x70,0x30,0x87,0x72,
|
||
|
0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,
|
||
|
0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e,0xde,0xc1,0x1c,0xe8,
|
||
|
0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87,0x70,0x60,0x87,0x79,
|
||
|
0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81,0x00,0x16,0xa0,0xda,
|
||
|
0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5,0x06,0xa3,0x08,0x80,
|
||
|
0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00,0x00,0x03,0x00,0x00,
|
||
|
0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00,0x00,0x89,0x20,0x00,
|
||
|
0x00,0x1d,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,
|
||
|
0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,
|
||
|
0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x30,0x8c,0x20,0x00,0x47,0x49,
|
||
|
0x53,0x44,0x09,0x93,0xff,0x4f,0xc4,0x35,0x51,0x11,0xf1,0xdb,0xc3,0x3f,0x8d,0x11,
|
||
|
0x00,0x83,0x08,0x44,0x70,0x91,0x34,0x45,0x94,0x30,0xf9,0xbf,0x04,0x30,0xcf,0x42,
|
||
|
0x44,0xff,0x34,0x46,0x00,0x0c,0x22,0x18,0x42,0x29,0xc4,0x08,0xe5,0x10,0x9a,0x23,
|
||
|
0x08,0xe6,0x08,0xc0,0x60,0x18,0x41,0x58,0x0a,0x12,0xca,0x19,0x8a,0x29,0x40,0x6d,
|
||
|
0x20,0x20,0x05,0xd6,0x08,0x00,0x00,0x00,0x00,0x13,0xb2,0x70,0x48,0x07,0x79,0xb0,
|
||
|
0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x76,0x08,0x87,
|
||
|
0x71,0x78,0x87,0x79,0xc0,0x87,0x38,0x80,0x03,0x37,0x88,0x83,0x38,0x70,0x03,0x38,
|
||
|
0xd8,0x70,0x1b,0xe5,0xd0,0x06,0xf0,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,
|
||
|
0xa0,0x07,0x76,0x40,0x07,0x6d,0x90,0x0e,0x71,0xa0,0x07,0x78,0xa0,0x07,0x78,0xd0,
|
||
|
0x06,0xe9,0x80,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x71,0x60,0x07,
|
||
|
0x7a,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x6d,0x90,0x0e,0x73,0x20,0x07,0x7a,
|
||
|
0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x90,0x0e,0x76,0x40,0x07,0x7a,0x60,
|
||
|
0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0e,0x73,0x20,0x07,0x7a,0x30,0x07,
|
||
|
0x72,0xa0,0x07,0x73,0x20,0x07,0x6d,0x60,0x0e,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,
|
||
|
0xa0,0x07,0x76,0x40,0x07,0x6d,0x60,0x0f,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xa0,
|
||
|
0x07,0x71,0x60,0x07,0x6d,0x60,0x0f,0x72,0x40,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,
|
||
|
0x73,0x20,0x07,0x6d,0x60,0x0f,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xa0,0x07,0x73,
|
||
|
0x20,0x07,0x6d,0x60,0x0f,0x74,0x80,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,
|
||
|
0x07,0x6d,0x60,0x0f,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,
|
||
|
0x6d,0x60,0x0f,0x79,0x60,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,
|
||
|
0x80,0x07,0x6d,0x60,0x0f,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,
|
||
|
0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x79,0x20,0x07,0x7a,0x20,0x07,
|
||
|
0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x72,0x50,0x07,0x76,
|
||
|
0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x50,
|
||
|
0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,0x7a,0x50,0x07,0x71,0x20,0x07,
|
||
|
0x6d,0x60,0x0f,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,
|
||
|
0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x6d,0xe0,0x0e,0x78,0xa0,0x07,0x71,0x60,
|
||
|
0x07,0x7a,0x30,0x07,0x72,0x30,0x84,0x49,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x18,0xc2,0x38,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x64,0x81,0x00,0x00,0x00,
|
||
|
0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,
|
||
|
0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,
|
||
|
0x2c,0xa1,0x09,0x00,0x00,0x79,0x18,0x00,0x00,0xb9,0x00,0x00,0x00,0x1a,0x03,0x4c,
|
||
|
0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,
|
||
|
0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,
|
||
|
0x2c,0xc2,0x23,0x2c,0x05,0xe7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,
|
||
|
0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,
|
||
|
0xc5,0xc6,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,
|
||
|
0x06,0x26,0xc6,0xc5,0xc6,0xe6,0xc6,0x45,0x26,0x65,0x88,0xf0,0x10,0x43,0x8c,0x45,
|
||
|
0x58,0x8c,0x65,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x79,0x8e,0x45,0x58,0x84,
|
||
|
0x65,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,
|
||
|
0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,
|
||
|
0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,
|
||
|
0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,
|
||
|
0x67,0x61,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,
|
||
|
0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,
|
||
|
0x7d,0x91,0xa5,0xcd,0x85,0x89,0xb1,0x95,0x0d,0x11,0x9e,0x86,0x51,0x58,0x9a,0x9c,
|
||
|
0x8b,0x5c,0x99,0x1b,0x59,0x99,0xdc,0x17,0x5d,0x98,0xdc,0x59,0x19,0x1d,0xa3,0xb0,
|
||
|
0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,0xb8,0xb2,0x2f,0xb7,0xb0,0xb6,0x32,
|
||
|
0x1a,0x66,0x6c,0x6f,0x61,0x74,0x34,0x64,0xc2,0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,
|
||
|
0xdc,0xc2,0xda,0xca,0xa8,0x98,0xc9,0x85,0x9d,0x7d,0x8d,0xbd,0xb1,0xbd,0xc9,0x0d,
|
||
|
0x61,0x9e,0x67,0x19,0x1e,0xe8,0x89,0x1e,0xe9,0x99,0x86,0x08,0x0f,0x45,0x29,0x2c,
|
||
|
0x4d,0xce,0xc5,0x4c,0x2e,0xec,0xac,0xad,0xcc,0x8d,0xee,0x2b,0xcd,0x0d,0xae,0x8e,
|
||
|
0x8e,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98,0x1b,0x4c,0x0a,0x95,0xb0,0x34,
|
||
|
0x39,0x97,0xb1,0x32,0x37,0xba,0x32,0x39,0x3e,0x61,0x69,0x72,0x2e,0x70,0x65,0x72,
|
||
|
0x73,0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x34,0xcc,0xd8,0xde,0xc2,0xe8,0x64,0x28,
|
||
|
0xd4,0xd9,0x0d,0x91,0x96,0xe1,0xb1,0x9e,0xeb,0xc1,0x9e,0xec,0x81,0x1e,0xed,0x91,
|
||
|
0x9e,0x8d,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,0x98,0x5b,0x4c,0x0a,0x8b,0xb1,
|
||
|
0x37,0xb6,0x37,0xb9,0x21,0xd2,0x22,0x3c,0xd6,0xd3,0x3d,0xd8,0x93,0x3d,0xd0,0x13,
|
||
|
0x3d,0xd2,0xe3,0x71,0x09,0x4b,0x93,0x73,0xa1,0x2b,0xc3,0xa3,0xab,0x93,0x2b,0xa3,
|
||
|
0x14,0x96,0x26,0xe7,0xc2,0xf6,0x36,0x16,0x46,0x97,0xf6,0xe6,0xf6,0x95,0xe6,0x46,
|
||
|
0x56,0x86,0x47,0x25,0x2c,0x4d,0xce,0x65,0x2e,0xac,0x0d,0x8e,0xad,0x8c,0x18,0x5d,
|
||
|
0x19,0x1e,0x5d,0x9d,0x5c,0x99,0x0c,0x19,0x8f,0x19,0xdb,0x5b,0x18,0x1d,0x0b,0xc8,
|
||
|
0x5c,0x58,0x1b,0x1c,0x5b,0x99,0x0f,0x07,0xba,0x32,0xbc,0x21,0xd4,0x42,0x3c,0x60,
|
||
|
0xf0,0x84,0xc1,0x32,0x2c,0xc2,0x23,0x06,0x0f,0xf4,0x8c,0xc1,0x23,0x3d,0x64,0xc0,
|
||
|
0x25,0x2c,0x4d,0xce,0x65,0x2e,0xac,0x0d,0x8e,0xad,0x4c,0x8e,0xc7,0x5c,0x58,0x1b,
|
||
|
0x1c,0x5b,0x99,0x1c,0x87,0xb9,0x36,0xb8,0x21,0xd2,0x72,0x3c,0x66,0xf0,0x84,0xc1,
|
||
|
0x32,0x2c,0xc2,0x03,0x3d,0x67,0xf0,0x48,0x0f,0x1a,0x0c,0x41,0x1e,0xee,0xf9,0x9e,
|
||
|
0x32,0x78,0xd2,0x60,0x88,0x91,0x00,0x4f,0xf5,0xa8,0xc1,0x88,0x88,0x1d,0xd8,0xc1,
|
||
|
0x1e,0xda,0xc1,0x0d,0xda,0xe1,0x1d,0xc8,0xa1,0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,
|
||
|
0xd8,0x21,0x1c,0xce,0x61,0x1e,0xa6,0x08,0xc1,0x30,0x42,0x61,0x07,0x76,0xb0,0x87,
|
||
|
0x76,0x70,0x83,0x74,0x20,0x87,0x72,0x70,0x07,0x7a,0x98,0x12,0x14,0x23,0x96,0x70,
|
||
|
0x48,0x07,0x79,0x70,0x03,0x7b,0x28,0x07,0x79,0x98,0x87,0x74,0x78,0x07,0x77,0x98,
|
||
|
0x12,0x18,0x23,0xa8,0x70,0x48,0x07,0x79,0x70,0x03,0x76,0x08,0x07,0x77,0x38,0x87,
|
||
|
0x7a,0x08,0x87,0x73,0x28,0x87,0x5f,0xb0,0x87,0x72,0x90,0x87,0x79,0x48,0x87,0x77,
|
||
|
0x70,0x87,0x29,0x01,0x32,0x62,0x0a,0x87,0x74,0x90,0x07,0x37,0x18,0x87,0x77,0x68,
|
||
|
0x07,0x78,0x48,0x07,0x76,0x28,0x87,0x5f,0x78,0x07,0x78,0xa0,0x87,0x74,0x78,0x07,
|
||
|
0x77,0x98,0x87,0x29,0x83,0xc2,0x38,0x23,0x98,0x70,0x48,0x07,0x79,0x70,0x03,0x73,
|
||
|
0x90,0x87,0x70,0x38,0x87,0x76,0x28,0x07,0x77,0xa0,0x87,0x29,0xc1,0x1a,0x00,0x00,
|
||
|
0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,
|
||
|
0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,
|
||
|
0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,
|
||
|
0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,
|
||
|
0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,
|
||
|
0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,
|
||
|
0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,
|
||
|
0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,
|
||
|
0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,
|
||
|
0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,
|
||
|
0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,
|
||
|
0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,
|
||
|
0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,
|
||
|
0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,
|
||
|
0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,
|
||
|
0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,
|
||
|
0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,
|
||
|
0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,
|
||
|
0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,
|
||
|
0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,
|
||
|
0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,
|
||
|
0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,
|
||
|
0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,
|
||
|
0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,
|
||
|
0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,
|
||
|
0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,
|
||
|
0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,
|
||
|
0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec,
|
||
|
0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8,
|
||
|
0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4,
|
||
|
0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43,
|
||
|
0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,
|
||
|
0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,
|
||
|
0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,
|
||
|
0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00,
|
||
|
0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4,0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00,
|
||
|
0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91,0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6,
|
||
|
0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00,0x00,
|
||
|
};
|
||
|
static const uint8_t _simgui_vs_bytecode_metal_ios[3052] = {
|
||
|
0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xec,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xe0,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00,
|
||
|
0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45,
|
||
|
0x01,0x00,0x00,0x48,0x41,0x53,0x48,0x20,0x00,0x69,0x97,0x6b,0xac,0xd8,0xa2,0x51,
|
||
|
0x33,0x7c,0x5f,0x96,0xb2,0xb1,0x06,0x06,0x7c,0xbb,0x5f,0x88,0xa0,0xeb,0x9f,0xea,
|
||
|
0x6e,0x6b,0x70,0xa9,0x6e,0xef,0xe6,0xa4,0xea,0x4f,0x46,0x46,0x54,0x18,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08,
|
||
|
0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x37,0x00,0x00,0x00,0x56,0x41,0x54,
|
||
|
0x54,0x22,0x00,0x03,0x00,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0x00,0x80,
|
||
|
0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x00,0x01,0x80,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x30,0x00,0x02,0x80,0x56,0x41,0x54,0x59,0x05,0x00,0x03,0x00,0x04,0x04,0x06,
|
||
|
0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,
|
||
|
0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xc0,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,
|
||
|
0x42,0x43,0xc0,0xde,0x21,0x0c,0x00,0x00,0xad,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,
|
||
|
0x06,0x10,0x32,0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,
|
||
|
0x80,0x10,0x45,0x02,0x42,0x92,0x0b,0x42,0x84,0x10,0x32,0x14,0x38,0x08,0x18,0x49,
|
||
|
0x0a,0x32,0x44,0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,
|
||
|
0x24,0x07,0xc8,0x08,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,
|
||
|
0x51,0x18,0x00,0x00,0x82,0x00,0x00,0x00,0x1b,0xc8,0x25,0xf8,0xff,0xff,0xff,0xff,
|
||
|
0x01,0x90,0x80,0x8a,0x18,0x87,0x77,0x90,0x07,0x79,0x28,0x87,0x71,0xa0,0x07,0x76,
|
||
|
0xc8,0x87,0x36,0x90,0x87,0x77,0xa8,0x07,0x77,0x20,0x87,0x72,0x20,0x87,0x36,0x20,
|
||
|
0x87,0x74,0xb0,0x87,0x74,0x20,0x87,0x72,0x68,0x83,0x79,0x88,0x07,0x79,0xa0,0x87,
|
||
|
0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0xc0,0x1c,0xc2,0x81,
|
||
|
0x1d,0xe6,0xa1,0x1c,0x00,0x82,0x1c,0xd2,0x61,0x1e,0xc2,0x41,0x1c,0xd8,0xa1,0x1c,
|
||
|
0xda,0x80,0x1e,0xc2,0x21,0x1d,0xd8,0xa1,0x0d,0xc6,0x21,0x1c,0xd8,0x81,0x1d,0xe6,
|
||
|
0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,0x80,0x60,0x87,0x72,0x98,0x87,0x79,
|
||
|
0x68,0x03,0x78,0x90,0x87,0x72,0x18,0x87,0x74,0x98,0x87,0x72,0x68,0x03,0x73,0x80,
|
||
|
0x87,0x76,0x08,0x07,0x72,0x00,0xcc,0x21,0x1c,0xd8,0x61,0x1e,0xca,0x01,0x20,0xdc,
|
||
|
0xe1,0x1d,0xda,0xc0,0x1c,0xe4,0x21,0x1c,0xda,0xa1,0x1c,0xda,0x00,0x1e,0xde,0x21,
|
||
|
0x1d,0xdc,0x81,0x1e,0xca,0x41,0x1e,0xda,0xa0,0x1c,0xd8,0x21,0x1d,0xda,0x01,0xa0,
|
||
|
0x07,0x79,0xa8,0x87,0x72,0x00,0x06,0x77,0x78,0x87,0x36,0x30,0x07,0x79,0x08,0x87,
|
||
|
0x76,0x28,0x87,0x36,0x80,0x87,0x77,0x48,0x07,0x77,0xa0,0x87,0x72,0x90,0x87,0x36,
|
||
|
0x28,0x07,0x76,0x48,0x87,0x76,0x68,0x03,0x77,0x78,0x07,0x77,0x68,0x03,0x76,0x28,
|
||
|
0x87,0x70,0x30,0x07,0x80,0x70,0x87,0x77,0x68,0x83,0x74,0x70,0x07,0x73,0x98,0x87,
|
||
|
0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,
|
||
|
0x1e,0xca,0x01,0x20,0xdc,0xe1,0x1d,0xda,0x40,0x1d,0xea,0xa1,0x1d,0xe0,0xa1,0x0d,
|
||
|
0xe8,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x1e,0x00,0x73,0x08,0x07,0x76,0x98,0x87,
|
||
|
0x72,0x00,0x08,0x77,0x78,0x87,0x36,0x70,0x87,0x70,0x70,0x87,0x79,0x68,0x03,0x73,
|
||
|
0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,
|
||
|
0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xe6,0x21,0x1d,0xce,0xc1,0x1d,0xca,0x81,0x1c,0xda,
|
||
|
0x40,0x1f,0xca,0x41,0x1e,0xde,0x61,0x1e,0xda,0xc0,0x1c,0xe0,0xa1,0x0d,0xda,0x21,
|
||
|
0x1c,0xe8,0x01,0x1d,0x00,0x7a,0x90,0x87,0x7a,0x28,0x07,0x80,0x70,0x87,0x77,0x68,
|
||
|
0x03,0x7a,0x90,0x87,0x70,0x80,0x07,0x78,0x48,0x07,0x77,0x38,0x87,0x36,0x68,0x87,
|
||
|
0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,0x1c,0x00,0x62,0x1e,0xe8,0x21,
|
||
|
0x1c,0xc6,0x61,0x1d,0xda,0x00,0x1e,0xe4,0xe1,0x1d,0xe8,0xa1,0x1c,0xc6,0x81,0x1e,
|
||
|
0xde,0x41,0x1e,0xda,0x40,0x1c,0xea,0xc1,0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x0d,0xe6,
|
||
|
0x21,0x1d,0xf4,0xa1,0x1c,0x00,0x3c,0x00,0x88,0x7a,0x70,0x87,0x79,0x08,0x07,0x73,
|
||
|
0x28,0x87,0x36,0x30,0x07,0x78,0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,
|
||
|
0xe4,0xa1,0x1e,0xca,0x01,0x20,0xea,0x61,0x1e,0xca,0xa1,0x0d,0xe6,0xe1,0x1d,0xcc,
|
||
|
0x81,0x1e,0xda,0xc0,0x1c,0xd8,0xe1,0x1d,0xc2,0x81,0x1e,0x00,0x73,0x08,0x07,0x76,
|
||
|
0x98,0x87,0x72,0x00,0x36,0x20,0x02,0x01,0x24,0xc0,0x02,0x54,0x00,0x00,0x00,0x00,
|
||
|
0x49,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x13,0x84,0x40,0x00,0x89,0x20,0x00,0x00,
|
||
|
0x16,0x00,0x00,0x00,0x32,0x22,0x08,0x09,0x20,0x64,0x85,0x04,0x13,0x22,0xa4,0x84,
|
||
|
0x04,0x13,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x88,0x8c,0x0b,0x84,0x84,0x4c,
|
||
|
0x10,0x3c,0x33,0x00,0xc3,0x08,0x02,0x30,0x8c,0x40,0x00,0x76,0x08,0x91,0x83,0xa4,
|
||
|
0x29,0xa2,0x84,0xc9,0xaf,0xa4,0xff,0x01,0x22,0x80,0x91,0x50,0x10,0x83,0x08,0x84,
|
||
|
0x50,0x8a,0x89,0x90,0x22,0x1b,0x08,0x98,0x23,0x00,0x83,0x14,0xc8,0x39,0x02,0x50,
|
||
|
0x18,0x44,0x08,0x84,0x61,0x04,0x22,0x19,0x01,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,
|
||
|
0x07,0x79,0xb0,0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,
|
||
|
0x74,0x78,0x87,0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,
|
||
|
0x6d,0x00,0x0f,0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,
|
||
|
0xd0,0x06,0xe9,0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,
|
||
|
0x07,0x78,0xa0,0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,
|
||
|
0x7a,0x10,0x07,0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,
|
||
|
0x30,0x07,0x72,0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,
|
||
|
0x07,0x74,0xd0,0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,
|
||
|
0x72,0xd0,0x06,0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,
|
||
|
0xd0,0x06,0xf6,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,
|
||
|
0x06,0xf6,0x20,0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,
|
||
|
0xf6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,
|
||
|
0x40,0x07,0x78,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,
|
||
|
0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,
|
||
|
0x76,0xa0,0x07,0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,
|
||
|
0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,
|
||
|
0x07,0x6d,0x60,0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,
|
||
|
0x72,0x50,0x07,0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,
|
||
|
0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,
|
||
|
0x07,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,
|
||
|
0x70,0x20,0x07,0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,
|
||
|
0x20,0x07,0x74,0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,
|
||
|
0x07,0x43,0x98,0x03,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x2c,0x10,0x00,0x00,
|
||
|
0x09,0x00,0x00,0x00,0x32,0x1e,0x98,0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,
|
||
|
0xc6,0x04,0x43,0xca,0x12,0x18,0x01,0x28,0x88,0x22,0x28,0x84,0x32,0xa0,0x1d,0x01,
|
||
|
0x20,0x1d,0x4b,0x80,0x04,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0xe9,0x00,0x00,0x00,
|
||
|
0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,0xb9,0xb9,0xb4,0x37,0xb7,
|
||
|
0x21,0x46,0x42,0x20,0x80,0x82,0x50,0xb9,0x1b,0x43,0x0b,0x93,0xfb,0x9a,0x4b,0xd3,
|
||
|
0x2b,0x1b,0x62,0x24,0x01,0x22,0x24,0x05,0xe7,0x20,0x08,0x0e,0x8e,0xad,0x0c,0xa4,
|
||
|
0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,0xcd,0x0d,0x64,0x26,0x06,
|
||
|
0x06,0x26,0xc6,0xc5,0xc6,0xe6,0x06,0x04,0xa5,0xad,0x8c,0x2e,0x8c,0xcd,0xac,0xac,
|
||
|
0x65,0x26,0x06,0x06,0x26,0xc6,0xc5,0xc6,0xe6,0xc6,0x45,0x26,0x65,0x88,0x80,0x10,
|
||
|
0x43,0x8c,0x24,0x48,0x86,0x44,0x60,0xd1,0x54,0x46,0x17,0xc6,0x36,0x04,0x41,0x8e,
|
||
|
0x24,0x48,0x82,0x44,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,0xd6,0x06,0x97,0xc6,0x56,
|
||
|
0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,0x36,0x17,0x26,0xc6,0x56,
|
||
|
0x36,0x44,0x40,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,
|
||
|
0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,0x65,0x6e,0x61,0x62,0x6c,
|
||
|
0x65,0x43,0x04,0x64,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,0xbd,0xb5,0xc1,0xa5,0xb1,
|
||
|
0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,0x95,0xc9,0x7d,0x99,0x95,
|
||
|
0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,0x11,0x90,0x86,0x51,0x58,
|
||
|
0x9a,0x9c,0x8b,0x5d,0x99,0x1c,0x5d,0x19,0xde,0xd7,0x5b,0x1d,0x1d,0x5c,0x1d,0x1d,
|
||
|
0x97,0xba,0xb9,0x32,0x39,0x14,0xb6,0xb7,0x31,0x37,0x98,0x14,0x46,0x61,0x69,0x72,
|
||
|
0x2e,0x61,0x72,0x67,0x5f,0x74,0x79,0x70,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x34,0xcc,
|
||
|
0xd8,0xde,0xc2,0xe8,0x64,0xc8,0x84,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xb9,0x85,
|
||
|
0xb5,0x95,0x51,0xa8,0xb3,0x1b,0xc2,0x20,0x0f,0x02,0x21,0x11,0x22,0x21,0x13,0x42,
|
||
|
0x71,0xa9,0x9b,0x2b,0x93,0x43,0x61,0x7b,0x1b,0x73,0x8b,0x49,0xa1,0x61,0xc6,0xf6,
|
||
|
0x16,0x46,0x47,0xc3,0x62,0xec,0x8d,0xed,0x4d,0x6e,0x08,0x83,0x3c,0x88,0x85,0x44,
|
||
|
0xc8,0x85,0x4c,0x08,0x46,0x26,0x2c,0x4d,0xce,0x05,0xee,0x6d,0x2e,0x8d,0x2e,0xed,
|
||
|
0xcd,0x8d,0xcb,0x19,0xdb,0x17,0xd4,0xdb,0x5c,0x1a,0x5d,0xda,0x9b,0xdb,0x10,0x05,
|
||
|
0xd1,0x90,0x08,0xb9,0x90,0x09,0xd9,0x86,0x18,0x48,0x85,0x64,0x08,0x47,0x28,0x2c,
|
||
|
0x4d,0xce,0xc5,0xae,0x4c,0x8e,0xae,0x0c,0xef,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x52,
|
||
|
0x58,0x9a,0x9c,0x0b,0xdb,0xdb,0x58,0x18,0x5d,0xda,0x9b,0xdb,0x57,0x9a,0x1b,0x59,
|
||
|
0x19,0x1e,0xbd,0xb3,0x32,0xb7,0x32,0xb9,0x30,0xba,0x32,0x32,0x94,0xaf,0xaf,0xb0,
|
||
|
0x34,0xb9,0x2f,0x38,0xb6,0xb0,0xb1,0x32,0xb4,0x37,0x36,0xb2,0x32,0xb9,0xaf,0xaf,
|
||
|
0x14,0x22,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x43,0xa8,0x44,0x40,0x3c,0xe4,
|
||
|
0x4b,0x84,0x24,0x40,0xc0,0x00,0x89,0x10,0x09,0x99,0x90,0x30,0x60,0x42,0x57,0x86,
|
||
|
0x37,0xf6,0xf6,0x26,0x47,0x06,0x33,0x84,0x4a,0x02,0xc4,0x43,0xbe,0x24,0x48,0x02,
|
||
|
0x04,0x0c,0x90,0x08,0x91,0x90,0x09,0x19,0x03,0x1a,0x63,0x6f,0x6c,0x6f,0x72,0x30,
|
||
|
0x43,0xa8,0x84,0x40,0x3c,0xe4,0x4b,0x88,0x24,0x40,0xc0,0x00,0x89,0x90,0x0b,0x99,
|
||
|
0x90,0x32,0xa0,0x12,0x96,0x26,0xe7,0x22,0x56,0x67,0x66,0x56,0x26,0xc7,0x27,0x2c,
|
||
|
0x4d,0xce,0x45,0xac,0xce,0xcc,0xac,0x4c,0xee,0x6b,0x2e,0x4d,0xaf,0x8c,0x48,0x58,
|
||
|
0x9a,0x9c,0x8b,0x5c,0x59,0x18,0x19,0xa9,0xb0,0x34,0x39,0x97,0x39,0x3a,0xb9,0xba,
|
||
|
0x31,0xba,0x2f,0xba,0x3c,0xb8,0xb2,0xaf,0x34,0x37,0xb3,0x37,0x26,0x64,0x69,0x73,
|
||
|
0x70,0x5f,0x73,0x69,0x7a,0x65,0x43,0x94,0x44,0x48,0x86,0x44,0x40,0x24,0x64,0x0d,
|
||
|
0x18,0x85,0xa5,0xc9,0xb9,0x84,0xc9,0x9d,0x7d,0xd1,0xe5,0xc1,0x95,0x7d,0xcd,0xa5,
|
||
|
0xe9,0x95,0xf1,0x0a,0x4b,0x93,0x73,0x09,0x93,0x3b,0xfb,0xa2,0xcb,0x83,0x2b,0xfb,
|
||
|
0x0a,0x63,0x4b,0x3b,0x73,0xfb,0x9a,0x4b,0xd3,0x2b,0x63,0x62,0x37,0xf7,0x05,0x17,
|
||
|
0x26,0x17,0xd6,0x36,0xc7,0xe1,0x4b,0x46,0x66,0x08,0x19,0x24,0x06,0x72,0x06,0x08,
|
||
|
0x1a,0x24,0x03,0xf2,0x25,0x42,0x12,0x20,0x69,0x80,0xa8,0x01,0xc2,0x06,0x48,0x1b,
|
||
|
0x24,0x03,0xe2,0x06,0xc9,0x80,0x44,0xc8,0x1b,0x20,0x13,0x02,0x07,0x43,0x10,0x44,
|
||
|
0x0c,0x10,0x32,0x40,0xcc,0x00,0x89,0x83,0x21,0xc6,0x01,0x20,0x1d,0x22,0x07,0x7c,
|
||
|
0xde,0xda,0xdc,0xd2,0xe0,0xde,0xe8,0xca,0xdc,0xe8,0x40,0xc6,0xd0,0xc2,0xe4,0xf8,
|
||
|
0x4c,0xa5,0xb5,0xc1,0xb1,0x95,0x81,0x0c,0xad,0xac,0x80,0x50,0x09,0x05,0x05,0x0d,
|
||
|
0x11,0x90,0x3a,0x18,0x62,0x20,0x74,0x80,0xd8,0xc1,0x72,0x0c,0x31,0x90,0x3b,0x40,
|
||
|
0xee,0x60,0x39,0x46,0x44,0xec,0xc0,0x0e,0xf6,0xd0,0x0e,0x6e,0xd0,0x0e,0xef,0x40,
|
||
|
0x0e,0xf5,0xc0,0x0e,0xe5,0xe0,0x06,0xe6,0xc0,0x0e,0xe1,0x70,0x0e,0xf3,0x30,0x45,
|
||
|
0x08,0x86,0x11,0x0a,0x3b,0xb0,0x83,0x3d,0xb4,0x83,0x1b,0xa4,0x03,0x39,0x94,0x83,
|
||
|
0x3b,0xd0,0xc3,0x94,0xa0,0x18,0xb1,0x84,0x43,0x3a,0xc8,0x83,0x1b,0xd8,0x43,0x39,
|
||
|
0xc8,0xc3,0x3c,0xa4,0xc3,0x3b,0xb8,0xc3,0x94,0xc0,0x18,0x41,0x85,0x43,0x3a,0xc8,
|
||
|
0x83,0x1b,0xb0,0x43,0x38,0xb8,0xc3,0x39,0xd4,0x43,0x38,0x9c,0x43,0x39,0xfc,0x82,
|
||
|
0x3d,0x94,0x83,0x3c,0xcc,0x43,0x3a,0xbc,0x83,0x3b,0x4c,0x09,0x90,0x11,0x53,0x38,
|
||
|
0xa4,0x83,0x3c,0xb8,0xc1,0x38,0xbc,0x43,0x3b,0xc0,0x43,0x3a,0xb0,0x43,0x39,0xfc,
|
||
|
0xc2,0x3b,0xc0,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x3c,0x4c,0x19,0x14,0xc6,0x19,
|
||
|
0xa1,0x84,0x43,0x3a,0xc8,0x83,0x1b,0xd8,0x43,0x39,0xc8,0x03,0x3d,0x94,0x03,0x3e,
|
||
|
0x4c,0x09,0xe6,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,0x00,0x33,0x08,0x80,0x1c,
|
||
|
0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,0xc3,0x8c,0x42,0x80,0x07,
|
||
|
0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,0x10,0x0e,0xf4,0x80,0x0e,
|
||
|
0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,0x30,0x05,0x3d,0x88,0x43,
|
||
|
0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,0x03,0x3d,0xcc,0x78,0x8c,
|
||
|
0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,0x07,0x7a,0x70,0x03,0x76,
|
||
|
0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,0x0e,0xe1,0x30,0x0f,0x6e,
|
||
|
0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,0x1d,0xde,0x21,0x1c,0xd8,
|
||
|
0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,0x3b,0xd0,0x43,0x39,0xb4,
|
||
|
0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,0x76,0x60,0x07,0x7b,0x68,
|
||
|
0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,0x90,0x87,0x70,0x60,0x07,
|
||
|
0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,0x87,0x5f,0x08,0x87,0x71,
|
||
|
0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,0x0e,0xee,0xe0,0x0e,0xf5,
|
||
|
0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,0x1c,0xcc,0xa1,0x1c,0xe4,
|
||
|
0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,0xca,0x61,0x06,0xd6,0x90,
|
||
|
0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,0xb8,0xc3,0x38,0x94,0x43,
|
||
|
0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,0x82,0x3b,0xd4,0x03,0x3b,
|
||
|
0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,0x83,0x74,0x68,0x07,0x78,
|
||
|
0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,0x0f,0xee,0x00,0x0f,0xf2,
|
||
|
0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,0xec,0x50,0x0e,0x33,0x20,
|
||
|
0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,0xdc,0x81,0x1e,0xdc,0xe0,
|
||
|
0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,0xb0,0x43,0x3a,0x9c,0x83,
|
||
|
0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x60,0x87,0x77,0x78,0x07,
|
||
|
0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,0x1e,0x6a,0x1e,0xca,0x61,
|
||
|
0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,0xa1,0x1c,0xcc,0x21,0x1d,
|
||
|
0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,0x43,0x3d,0xd0,0x43,0x39,
|
||
|
0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,0x8c,0xc5,0x0a,0x87,0x79,
|
||
|
0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,0x72,0x98,0x81,0x5c,0xe3,
|
||
|
0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,0xc1,0xd2,0x41,0x1e,0xe4,
|
||
|
0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,0x38,0xa4,0x83,0x3c,0xb8,
|
||
|
0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,0xb8,0xc3,0x2f,0x9c,0x83,
|
||
|
0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,0x00,0x02,0x00,0x00,0x00,
|
||
|
0x06,0x50,0x30,0x00,0xd2,0xd0,0x00,0x00,0x61,0x20,0x00,0x00,0x23,0x00,0x00,0x00,
|
||
|
0x13,0x04,0x41,0x2c,0x10,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xd4,0x63,0x11,0x40,
|
||
|
0x60,0x1c,0x73,0x10,0x42,0xf0,0x3c,0x94,0x33,0x00,0x14,0x63,0x09,0x20,0x08,0x82,
|
||
|
0xf0,0x2f,0x80,0x20,0x08,0xc2,0xbf,0x30,0x96,0x00,0x82,0x20,0x08,0x82,0x01,0x08,
|
||
|
0x82,0x20,0x08,0x0e,0x33,0x00,0x24,0x73,0x10,0xd7,0x65,0x55,0x34,0x33,0x00,0x04,
|
||
|
0x63,0x04,0x20,0x08,0x82,0xf8,0x37,0x46,0x00,0x82,0x20,0x08,0x7f,0x33,0x00,0x00,
|
||
|
0xe3,0x0d,0x4c,0x64,0x51,0x40,0x2c,0x0a,0xe8,0x63,0xc1,0x02,0x1f,0x0b,0x16,0xf9,
|
||
|
0x0c,0x32,0x04,0xcb,0x33,0xc8,0x10,0x2c,0xd1,0x6c,0xc3,0x52,0x01,0xb3,0x0d,0x41,
|
||
|
0x15,0xcc,0x36,0x04,0x83,0x90,0x41,0x40,0x0c,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
|
||
|
0x5b,0x86,0x20,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
};
|
||
|
static const uint8_t _simgui_fs_bytecode_metal_ios[2809] = {
|
||
|
0x4d,0x54,0x4c,0x42,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0xf9,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x20,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6d,0x00,0x00,0x00,
|
||
|
0x4e,0x41,0x4d,0x45,0x06,0x00,0x6d,0x61,0x69,0x6e,0x30,0x00,0x54,0x59,0x50,0x45,
|
||
|
0x01,0x00,0x01,0x48,0x41,0x53,0x48,0x20,0x00,0xf0,0xa4,0xb3,0x95,0x4b,0xab,0x64,
|
||
|
0x94,0xe7,0xa9,0x8a,0x69,0x27,0x6d,0x28,0x77,0x84,0x8d,0x3f,0xaf,0x7d,0x3c,0x39,
|
||
|
0x31,0xc4,0xcb,0x53,0x6d,0xc0,0x0d,0xdf,0x08,0x4f,0x46,0x46,0x54,0x18,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x45,0x52,0x53,0x08,0x00,0x01,0x00,0x08,
|
||
|
0x00,0x01,0x00,0x01,0x00,0x45,0x4e,0x44,0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,
|
||
|
0x54,0x04,0x00,0x00,0x00,0x45,0x4e,0x44,0x54,0xde,0xc0,0x17,0x0b,0x00,0x00,0x00,
|
||
|
0x00,0x14,0x00,0x00,0x00,0x04,0x0a,0x00,0x00,0xff,0xff,0xff,0xff,0x42,0x43,0xc0,
|
||
|
0xde,0x21,0x0c,0x00,0x00,0x7e,0x02,0x00,0x00,0x0b,0x82,0x20,0x00,0x02,0x00,0x00,
|
||
|
0x00,0x12,0x00,0x00,0x00,0x07,0x81,0x23,0x91,0x41,0xc8,0x04,0x49,0x06,0x10,0x32,
|
||
|
0x39,0x92,0x01,0x84,0x0c,0x25,0x05,0x08,0x19,0x1e,0x04,0x8b,0x62,0x80,0x14,0x45,
|
||
|
0x02,0x42,0x92,0x0b,0x42,0xa4,0x10,0x32,0x14,0x38,0x08,0x18,0x49,0x0a,0x32,0x44,
|
||
|
0x24,0x48,0x0a,0x90,0x21,0x23,0xc4,0x52,0x80,0x0c,0x19,0x21,0x72,0x24,0x07,0xc8,
|
||
|
0x48,0x11,0x62,0xa8,0xa0,0xa8,0x40,0xc6,0xf0,0x01,0x00,0x00,0x00,0x51,0x18,0x00,
|
||
|
0x00,0x89,0x00,0x00,0x00,0x1b,0xcc,0x25,0xf8,0xff,0xff,0xff,0xff,0x01,0x60,0x00,
|
||
|
0x09,0xa8,0x88,0x71,0x78,0x07,0x79,0x90,0x87,0x72,0x18,0x07,0x7a,0x60,0x87,0x7c,
|
||
|
0x68,0x03,0x79,0x78,0x87,0x7a,0x70,0x07,0x72,0x28,0x07,0x72,0x68,0x03,0x72,0x48,
|
||
|
0x07,0x7b,0x48,0x07,0x72,0x28,0x87,0x36,0x98,0x87,0x78,0x90,0x07,0x7a,0x68,0x03,
|
||
|
0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xcc,0x21,0x1c,0xd8,0x61,
|
||
|
0x1e,0xca,0x01,0x20,0xc8,0x21,0x1d,0xe6,0x21,0x1c,0xc4,0x81,0x1d,0xca,0xa1,0x0d,
|
||
|
0xe8,0x21,0x1c,0xd2,0x81,0x1d,0xda,0x60,0x1c,0xc2,0x81,0x1d,0xd8,0x61,0x1e,0x00,
|
||
|
0x73,0x08,0x07,0x76,0x98,0x87,0x72,0x00,0x08,0x76,0x28,0x87,0x79,0x98,0x87,0x36,
|
||
|
0x80,0x07,0x79,0x28,0x87,0x71,0x48,0x87,0x79,0x28,0x87,0x36,0x30,0x07,0x78,0x68,
|
||
|
0x87,0x70,0x20,0x07,0xc0,0x1c,0xc2,0x81,0x1d,0xe6,0xa1,0x1c,0x00,0xc2,0x1d,0xde,
|
||
|
0xa1,0x0d,0xcc,0x41,0x1e,0xc2,0xa1,0x1d,0xca,0xa1,0x0d,0xe0,0xe1,0x1d,0xd2,0xc1,
|
||
|
0x1d,0xe8,0xa1,0x1c,0xe4,0xa1,0x0d,0xca,0x81,0x1d,0xd2,0xa1,0x1d,0x00,0x7a,0x90,
|
||
|
0x87,0x7a,0x28,0x07,0x60,0x70,0x87,0x77,0x68,0x03,0x73,0x90,0x87,0x70,0x68,0x87,
|
||
|
0x72,0x68,0x03,0x78,0x78,0x87,0x74,0x70,0x07,0x7a,0x28,0x07,0x79,0x68,0x83,0x72,
|
||
|
0x60,0x87,0x74,0x68,0x87,0x36,0x70,0x87,0x77,0x70,0x87,0x36,0x60,0x87,0x72,0x08,
|
||
|
0x07,0x73,0x00,0x08,0x77,0x78,0x87,0x36,0x48,0x07,0x77,0x30,0x87,0x79,0x68,0x03,
|
||
|
0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,0xea,0xa1,
|
||
|
0x1c,0x00,0xc2,0x1d,0xde,0xa1,0x0d,0xd4,0xa1,0x1e,0xda,0x01,0x1e,0xda,0x80,0x1e,
|
||
|
0xc2,0x41,0x1c,0xd8,0xa1,0x1c,0xe6,0x01,0x30,0x87,0x70,0x60,0x87,0x79,0x28,0x07,
|
||
|
0x80,0x70,0x87,0x77,0x68,0x03,0x77,0x08,0x07,0x77,0x98,0x87,0x36,0x30,0x07,0x78,
|
||
|
0x68,0x83,0x76,0x08,0x07,0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,
|
||
|
0xdc,0xe1,0x1d,0xda,0x60,0x1e,0xd2,0xe1,0x1c,0xdc,0xa1,0x1c,0xc8,0xa1,0x0d,0xf4,
|
||
|
0xa1,0x1c,0xe4,0xe1,0x1d,0xe6,0xa1,0x0d,0xcc,0x01,0x1e,0xda,0xa0,0x1d,0xc2,0x81,
|
||
|
0x1e,0xd0,0x01,0xa0,0x07,0x79,0xa8,0x87,0x72,0x00,0x08,0x77,0x78,0x87,0x36,0xa0,
|
||
|
0x07,0x79,0x08,0x07,0x78,0x80,0x87,0x74,0x70,0x87,0x73,0x68,0x83,0x76,0x08,0x07,
|
||
|
0x7a,0x40,0x07,0x80,0x1e,0xe4,0xa1,0x1e,0xca,0x01,0x20,0xe6,0x81,0x1e,0xc2,0x61,
|
||
|
0x1c,0xd6,0xa1,0x0d,0xe0,0x41,0x1e,0xde,0x81,0x1e,0xca,0x61,0x1c,0xe8,0xe1,0x1d,
|
||
|
0xe4,0xa1,0x0d,0xc4,0xa1,0x1e,0xcc,0xc1,0x1c,0xca,0x41,0x1e,0xda,0x60,0x1e,0xd2,
|
||
|
0x41,0x1f,0xca,0x01,0xc0,0x03,0x80,0xa8,0x07,0x77,0x98,0x87,0x70,0x30,0x87,0x72,
|
||
|
0x68,0x03,0x73,0x80,0x87,0x36,0x68,0x87,0x70,0xa0,0x07,0x74,0x00,0xe8,0x41,0x1e,
|
||
|
0xea,0xa1,0x1c,0x00,0xa2,0x1e,0xe6,0xa1,0x1c,0xda,0x60,0x1e,0xde,0xc1,0x1c,0xe8,
|
||
|
0xa1,0x0d,0xcc,0x81,0x1d,0xde,0x21,0x1c,0xe8,0x01,0x30,0x87,0x70,0x60,0x87,0x79,
|
||
|
0x28,0x07,0x60,0x83,0x21,0x0c,0xc0,0x02,0x54,0x1b,0x8c,0x81,0x00,0x16,0xa0,0xda,
|
||
|
0x80,0x10,0xff,0xff,0xff,0xff,0x3f,0x00,0x0c,0x20,0x01,0xd5,0x06,0xa3,0x08,0x80,
|
||
|
0x05,0xa8,0x36,0x18,0x86,0x00,0x2c,0x40,0x05,0x49,0x18,0x00,0x00,0x03,0x00,0x00,
|
||
|
0x00,0x13,0x86,0x40,0x18,0x26,0x0c,0x44,0x61,0x00,0x00,0x00,0x00,0x89,0x20,0x00,
|
||
|
0x00,0x1d,0x00,0x00,0x00,0x32,0x22,0x48,0x09,0x20,0x64,0x85,0x04,0x93,0x22,0xa4,
|
||
|
0x84,0x04,0x93,0x22,0xe3,0x84,0xa1,0x90,0x14,0x12,0x4c,0x8a,0x8c,0x0b,0x84,0xa4,
|
||
|
0x4c,0x10,0x48,0x33,0x00,0xc3,0x08,0x04,0x60,0x83,0x30,0x8c,0x20,0x00,0x47,0x49,
|
||
|
0x53,0x44,0x09,0x93,0xff,0x4f,0xc4,0x35,0x51,0x11,0xf1,0xdb,0xc3,0x3f,0x8d,0x11,
|
||
|
0x00,0x83,0x08,0x44,0x70,0x91,0x34,0x45,0x94,0x30,0xf9,0xbf,0x04,0x30,0xcf,0x42,
|
||
|
0x44,0xff,0x34,0x46,0x00,0x0c,0x22,0x18,0x42,0x29,0xc4,0x08,0xe5,0x10,0x9a,0x23,
|
||
|
0x08,0xe6,0x08,0xc0,0x60,0x18,0x41,0x58,0x0a,0x12,0xca,0x19,0x8a,0x29,0x40,0x6d,
|
||
|
0x20,0x20,0x05,0xd6,0x08,0x00,0x00,0x00,0x00,0x13,0xa8,0x70,0x48,0x07,0x79,0xb0,
|
||
|
0x03,0x3a,0x68,0x83,0x70,0x80,0x07,0x78,0x60,0x87,0x72,0x68,0x83,0x74,0x78,0x87,
|
||
|
0x79,0xc8,0x03,0x37,0x80,0x03,0x37,0x80,0x83,0x0d,0xb7,0x51,0x0e,0x6d,0x00,0x0f,
|
||
|
0x7a,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xe9,
|
||
|
0x10,0x07,0x7a,0x80,0x07,0x7a,0x80,0x07,0x6d,0x90,0x0e,0x78,0xa0,0x07,0x78,0xa0,
|
||
|
0x07,0x78,0xd0,0x06,0xe9,0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,
|
||
|
0x76,0xd0,0x06,0xe9,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,
|
||
|
0xd0,0x06,0xe9,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,
|
||
|
0x06,0xe6,0x30,0x07,0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,
|
||
|
0xe6,0x60,0x07,0x74,0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,
|
||
|
0x10,0x07,0x76,0xa0,0x07,0x71,0x60,0x07,0x7a,0x10,0x07,0x76,0xd0,0x06,0xf6,0x20,
|
||
|
0x07,0x74,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x30,0x07,
|
||
|
0x72,0xa0,0x07,0x73,0x20,0x07,0x7a,0x30,0x07,0x72,0xd0,0x06,0xf6,0x40,0x07,0x78,
|
||
|
0xa0,0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x60,0x07,0x74,0xa0,
|
||
|
0x07,0x76,0x40,0x07,0x7a,0x60,0x07,0x74,0xd0,0x06,0xf6,0x90,0x07,0x76,0xa0,0x07,
|
||
|
0x71,0x20,0x07,0x78,0xa0,0x07,0x71,0x20,0x07,0x78,0xd0,0x06,0xf6,0x10,0x07,0x72,
|
||
|
0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x7a,0x10,0x07,0x72,0x80,0x07,0x6d,0x60,
|
||
|
0x0f,0x71,0x90,0x07,0x72,0xa0,0x07,0x72,0x50,0x07,0x76,0xa0,0x07,0x72,0x50,0x07,
|
||
|
0x76,0xd0,0x06,0xf6,0x20,0x07,0x75,0x60,0x07,0x7a,0x20,0x07,0x75,0x60,0x07,0x7a,
|
||
|
0x20,0x07,0x75,0x60,0x07,0x6d,0x60,0x0f,0x75,0x10,0x07,0x72,0xa0,0x07,0x75,0x10,
|
||
|
0x07,0x72,0xa0,0x07,0x75,0x10,0x07,0x72,0xd0,0x06,0xf6,0x10,0x07,0x70,0x20,0x07,
|
||
|
0x74,0xa0,0x07,0x71,0x00,0x07,0x72,0x40,0x07,0x7a,0x10,0x07,0x70,0x20,0x07,0x74,
|
||
|
0xd0,0x06,0xee,0x80,0x07,0x7a,0x10,0x07,0x76,0xa0,0x07,0x73,0x20,0x07,0x43,0x98,
|
||
|
0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x8c,0x03,0x04,0x80,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x40,0x16,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x32,0x1e,0x98,
|
||
|
0x10,0x19,0x11,0x4c,0x90,0x8c,0x09,0x26,0x47,0xc6,0x04,0x43,0x5a,0x25,0x30,0x02,
|
||
|
0x50,0x04,0x85,0x50,0x10,0x65,0x40,0x70,0x2c,0x01,0x12,0x00,0x00,0x79,0x18,0x00,
|
||
|
0x00,0xb9,0x00,0x00,0x00,0x1a,0x03,0x4c,0x10,0x97,0x29,0xa2,0x25,0x10,0xab,0x32,
|
||
|
0xb9,0xb9,0xb4,0x37,0xb7,0x21,0xc6,0x42,0x3c,0x00,0x84,0x50,0xb9,0x1b,0x43,0x0b,
|
||
|
0x93,0xfb,0x9a,0x4b,0xd3,0x2b,0x1b,0x62,0x2c,0xc2,0x23,0x2c,0x05,0xe7,0x20,0x08,
|
||
|
0x0e,0x8e,0xad,0x0c,0xa4,0xad,0x8c,0x2e,0x8c,0x0d,0xc4,0xae,0x4c,0x6e,0x2e,0xed,
|
||
|
0xcd,0x0d,0x64,0x26,0x06,0x06,0x26,0xc6,0xc5,0xc6,0xe6,0x06,0x04,0xa5,0xad,0x8c,
|
||
|
0x2e,0x8c,0xcd,0xac,0xac,0x65,0x26,0x06,0x06,0x26,0xc6,0xc5,0xc6,0xe6,0xc6,0x45,
|
||
|
0x26,0x65,0x88,0xf0,0x10,0x43,0x8c,0x45,0x58,0x8c,0x65,0x60,0xd1,0x54,0x46,0x17,
|
||
|
0xc6,0x36,0x04,0x79,0x8e,0x45,0x58,0x84,0x65,0xe0,0x16,0x96,0x26,0xe7,0x32,0xf6,
|
||
|
0xd6,0x06,0x97,0xc6,0x56,0xe6,0x42,0x56,0xe6,0xf6,0x26,0xd7,0x36,0xf7,0x45,0x96,
|
||
|
0x36,0x17,0x26,0xc6,0x56,0x36,0x44,0x78,0x12,0x72,0x61,0x69,0x72,0x2e,0x63,0x6f,
|
||
|
0x6d,0x70,0x69,0x6c,0x65,0x2e,0x66,0x61,0x73,0x74,0x5f,0x6d,0x61,0x74,0x68,0x5f,
|
||
|
0x65,0x6e,0x61,0x62,0x6c,0x65,0x43,0x84,0x67,0x21,0x19,0x84,0xa5,0xc9,0xb9,0x8c,
|
||
|
0xbd,0xb5,0xc1,0xa5,0xb1,0x95,0xb9,0x98,0xc9,0x85,0xb5,0x95,0x89,0xd5,0x99,0x99,
|
||
|
0x95,0xc9,0x7d,0x99,0x95,0xd1,0x8d,0xa1,0x7d,0x95,0xb9,0x85,0x89,0xb1,0x95,0x0d,
|
||
|
0x11,0x9e,0x86,0x51,0x58,0x9a,0x9c,0x8b,0x5c,0x99,0x1b,0x59,0x99,0xdc,0x17,0x5d,
|
||
|
0x98,0xdc,0x59,0x19,0x1d,0xa3,0xb0,0x34,0x39,0x97,0x30,0xb9,0xb3,0x2f,0xba,0x3c,
|
||
|
0xb8,0xb2,0x2f,0xb7,0xb0,0xb6,0x32,0x1a,0x66,0x6c,0x6f,0x61,0x74,0x34,0x64,0xc2,
|
||
|
0xd2,0xe4,0x5c,0xc2,0xe4,0xce,0xbe,0xdc,0xc2,0xda,0xca,0xa8,0x98,0xc9,0x85,0x9d,
|
||
|
0x7d,0x8d,0xbd,0xb1,0xbd,0xc9,0x0d,0x61,0x9e,0x67,0x19,0x1e,0xe8,0x89,0x1e,0xe9,
|
||
|
0x99,0x86,0x08,0x0f,0x45,0x29,0x2c,0x4d,0xce,0xc5,0x4c,0x2e,0xec,0xac,0xad,0xcc,
|
||
|
0x8d,0xee,0x2b,0xcd,0x0d,0xae,0x8e,0x8e,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,0xdb,
|
||
|
0x98,0x1b,0x4c,0x0a,0x95,0xb0,0x34,0x39,0x97,0xb1,0x32,0x37,0xba,0x32,0x39,0x3e,
|
||
|
0x61,0x69,0x72,0x2e,0x70,0x65,0x72,0x73,0x70,0x65,0x63,0x74,0x69,0x76,0x65,0x34,
|
||
|
0xcc,0xd8,0xde,0xc2,0xe8,0x64,0x28,0xd4,0xd9,0x0d,0x91,0x96,0xe1,0xb1,0x9e,0xeb,
|
||
|
0xc1,0x9e,0xec,0x81,0x1e,0xed,0x91,0x9e,0x8d,0x4b,0xdd,0x5c,0x99,0x1c,0x0a,0xdb,
|
||
|
0xdb,0x98,0x5b,0x4c,0x0a,0x8b,0xb1,0x37,0xb6,0x37,0xb9,0x21,0xd2,0x22,0x3c,0xd6,
|
||
|
0xd3,0x3d,0xd8,0x93,0x3d,0xd0,0x13,0x3d,0xd2,0xe3,0x71,0x09,0x4b,0x93,0x73,0xa1,
|
||
|
0x2b,0xc3,0xa3,0xab,0x93,0x2b,0xa3,0x14,0x96,0x26,0xe7,0xc2,0xf6,0x36,0x16,0x46,
|
||
|
0x97,0xf6,0xe6,0xf6,0x95,0xe6,0x46,0x56,0x86,0x47,0x25,0x2c,0x4d,0xce,0x65,0x2e,
|
||
|
0xac,0x0d,0x8e,0xad,0x8c,0x18,0x5d,0x19,0x1e,0x5d,0x9d,0x5c,0x99,0x0c,0x19,0x8f,
|
||
|
0x19,0xdb,0x5b,0x18,0x1d,0x0b,0xc8,0x5c,0x58,0x1b,0x1c,0x5b,0x99,0x0f,0x07,0xba,
|
||
|
0x32,0xbc,0x21,0xd4,0x42,0x3c,0x60,0xf0,0x84,0xc1,0x32,0x2c,0xc2,0x23,0x06,0x0f,
|
||
|
0xf4,0x8c,0xc1,0x23,0x3d,0x64,0xc0,0x25,0x2c,0x4d,0xce,0x65,0x2e,0xac,0x0d,0x8e,
|
||
|
0xad,0x4c,0x8e,0xc7,0x5c,0x58,0x1b,0x1c,0x5b,0x99,0x1c,0x87,0xb9,0x36,0xb8,0x21,
|
||
|
0xd2,0x72,0x3c,0x66,0xf0,0x84,0xc1,0x32,0x2c,0xc2,0x03,0x3d,0x67,0xf0,0x48,0x0f,
|
||
|
0x1a,0x0c,0x41,0x1e,0xee,0xf9,0x9e,0x32,0x78,0xd2,0x60,0x88,0x91,0x00,0x4f,0xf5,
|
||
|
0xa8,0xc1,0x88,0x88,0x1d,0xd8,0xc1,0x1e,0xda,0xc1,0x0d,0xda,0xe1,0x1d,0xc8,0xa1,
|
||
|
0x1e,0xd8,0xa1,0x1c,0xdc,0xc0,0x1c,0xd8,0x21,0x1c,0xce,0x61,0x1e,0xa6,0x08,0xc1,
|
||
|
0x30,0x42,0x61,0x07,0x76,0xb0,0x87,0x76,0x70,0x83,0x74,0x20,0x87,0x72,0x70,0x07,
|
||
|
0x7a,0x98,0x12,0x14,0x23,0x96,0x70,0x48,0x07,0x79,0x70,0x03,0x7b,0x28,0x07,0x79,
|
||
|
0x98,0x87,0x74,0x78,0x07,0x77,0x98,0x12,0x18,0x23,0xa8,0x70,0x48,0x07,0x79,0x70,
|
||
|
0x03,0x76,0x08,0x07,0x77,0x38,0x87,0x7a,0x08,0x87,0x73,0x28,0x87,0x5f,0xb0,0x87,
|
||
|
0x72,0x90,0x87,0x79,0x48,0x87,0x77,0x70,0x87,0x29,0x01,0x32,0x62,0x0a,0x87,0x74,
|
||
|
0x90,0x07,0x37,0x18,0x87,0x77,0x68,0x07,0x78,0x48,0x07,0x76,0x28,0x87,0x5f,0x78,
|
||
|
0x07,0x78,0xa0,0x87,0x74,0x78,0x07,0x77,0x98,0x87,0x29,0x83,0xc2,0x38,0x23,0x98,
|
||
|
0x70,0x48,0x07,0x79,0x70,0x03,0x73,0x90,0x87,0x70,0x38,0x87,0x76,0x28,0x07,0x77,
|
||
|
0xa0,0x87,0x29,0xc1,0x1a,0x00,0x00,0x00,0x00,0x79,0x18,0x00,0x00,0x7b,0x00,0x00,
|
||
|
0x00,0x33,0x08,0x80,0x1c,0xc4,0xe1,0x1c,0x66,0x14,0x01,0x3d,0x88,0x43,0x38,0x84,
|
||
|
0xc3,0x8c,0x42,0x80,0x07,0x79,0x78,0x07,0x73,0x98,0x71,0x0c,0xe6,0x00,0x0f,0xed,
|
||
|
0x10,0x0e,0xf4,0x80,0x0e,0x33,0x0c,0x42,0x1e,0xc2,0xc1,0x1d,0xce,0xa1,0x1c,0x66,
|
||
|
0x30,0x05,0x3d,0x88,0x43,0x38,0x84,0x83,0x1b,0xcc,0x03,0x3d,0xc8,0x43,0x3d,0x8c,
|
||
|
0x03,0x3d,0xcc,0x78,0x8c,0x74,0x70,0x07,0x7b,0x08,0x07,0x79,0x48,0x87,0x70,0x70,
|
||
|
0x07,0x7a,0x70,0x03,0x76,0x78,0x87,0x70,0x20,0x87,0x19,0xcc,0x11,0x0e,0xec,0x90,
|
||
|
0x0e,0xe1,0x30,0x0f,0x6e,0x30,0x0f,0xe3,0xf0,0x0e,0xf0,0x50,0x0e,0x33,0x10,0xc4,
|
||
|
0x1d,0xde,0x21,0x1c,0xd8,0x21,0x1d,0xc2,0x61,0x1e,0x66,0x30,0x89,0x3b,0xbc,0x83,
|
||
|
0x3b,0xd0,0x43,0x39,0xb4,0x03,0x3c,0xbc,0x83,0x3c,0x84,0x03,0x3b,0xcc,0xf0,0x14,
|
||
|
0x76,0x60,0x07,0x7b,0x68,0x07,0x37,0x68,0x87,0x72,0x68,0x07,0x37,0x80,0x87,0x70,
|
||
|
0x90,0x87,0x70,0x60,0x07,0x76,0x28,0x07,0x76,0xf8,0x05,0x76,0x78,0x87,0x77,0x80,
|
||
|
0x87,0x5f,0x08,0x87,0x71,0x18,0x87,0x72,0x98,0x87,0x79,0x98,0x81,0x2c,0xee,0xf0,
|
||
|
0x0e,0xee,0xe0,0x0e,0xf5,0xc0,0x0e,0xec,0x30,0x03,0x62,0xc8,0xa1,0x1c,0xe4,0xa1,
|
||
|
0x1c,0xcc,0xa1,0x1c,0xe4,0xa1,0x1c,0xdc,0x61,0x1c,0xca,0x21,0x1c,0xc4,0x81,0x1d,
|
||
|
0xca,0x61,0x06,0xd6,0x90,0x43,0x39,0xc8,0x43,0x39,0x98,0x43,0x39,0xc8,0x43,0x39,
|
||
|
0xb8,0xc3,0x38,0x94,0x43,0x38,0x88,0x03,0x3b,0x94,0xc3,0x2f,0xbc,0x83,0x3c,0xfc,
|
||
|
0x82,0x3b,0xd4,0x03,0x3b,0xb0,0xc3,0x0c,0xc7,0x69,0x87,0x70,0x58,0x87,0x72,0x70,
|
||
|
0x83,0x74,0x68,0x07,0x78,0x60,0x87,0x74,0x18,0x87,0x74,0xa0,0x87,0x19,0xce,0x53,
|
||
|
0x0f,0xee,0x00,0x0f,0xf2,0x50,0x0e,0xe4,0x90,0x0e,0xe3,0x40,0x0f,0xe1,0x20,0x0e,
|
||
|
0xec,0x50,0x0e,0x33,0x20,0x28,0x1d,0xdc,0xc1,0x1e,0xc2,0x41,0x1e,0xd2,0x21,0x1c,
|
||
|
0xdc,0x81,0x1e,0xdc,0xe0,0x1c,0xe4,0xe1,0x1d,0xea,0x01,0x1e,0x66,0x18,0x51,0x38,
|
||
|
0xb0,0x43,0x3a,0x9c,0x83,0x3b,0xcc,0x50,0x24,0x76,0x60,0x07,0x7b,0x68,0x07,0x37,
|
||
|
0x60,0x87,0x77,0x78,0x07,0x78,0x98,0x51,0x4c,0xf4,0x90,0x0f,0xf0,0x50,0x0e,0x33,
|
||
|
0x1e,0x6a,0x1e,0xca,0x61,0x1c,0xe8,0x21,0x1d,0xde,0xc1,0x1d,0x7e,0x01,0x1e,0xe4,
|
||
|
0xa1,0x1c,0xcc,0x21,0x1d,0xf0,0x61,0x06,0x54,0x85,0x83,0x38,0xcc,0xc3,0x3b,0xb0,
|
||
|
0x43,0x3d,0xd0,0x43,0x39,0xfc,0xc2,0x3c,0xe4,0x43,0x3b,0x88,0xc3,0x3b,0xb0,0xc3,
|
||
|
0x8c,0xc5,0x0a,0x87,0x79,0x98,0x87,0x77,0x18,0x87,0x74,0x08,0x07,0x7a,0x28,0x07,
|
||
|
0x72,0x98,0x81,0x5c,0xe3,0x10,0x0e,0xec,0xc0,0x0e,0xe5,0x50,0x0e,0xf3,0x30,0x23,
|
||
|
0xc1,0xd2,0x41,0x1e,0xe4,0xe1,0x17,0xd8,0xe1,0x1d,0xde,0x01,0x1e,0x66,0x50,0x59,
|
||
|
0x38,0xa4,0x83,0x3c,0xb8,0x81,0x39,0xd4,0x83,0x3b,0x8c,0x03,0x3d,0xa4,0xc3,0x3b,
|
||
|
0xb8,0xc3,0x2f,0x9c,0x83,0x3c,0xbc,0x43,0x3d,0xc0,0xc3,0x3c,0x00,0x71,0x20,0x00,
|
||
|
0x00,0x08,0x00,0x00,0x00,0x16,0xb0,0x01,0x48,0xe4,0x4b,0x00,0xf3,0x2c,0xc4,0x3f,
|
||
|
0x11,0xd7,0x44,0x45,0xc4,0x6f,0x0f,0x7e,0x85,0x17,0xb7,0x6d,0x00,0x05,0x03,0x20,
|
||
|
0x0d,0x0d,0x00,0x00,0x00,0x61,0x20,0x00,0x00,0x0c,0x00,0x00,0x00,0x13,0x04,0x41,
|
||
|
0x2c,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xc4,0x46,0x00,0x48,0x8d,0x00,0xd4,
|
||
|
0x00,0x89,0x19,0x00,0x02,0x23,0x00,0x00,0x00,0x23,0x06,0x8a,0x10,0x44,0x87,0x91,
|
||
|
0x0c,0x05,0x11,0x58,0x90,0xc8,0x67,0xb6,0x81,0x08,0x80,0x0c,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
};
|
||
|
static const char _simgui_vs_source_metal_sim[672] = {
|
||
|
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
|
||
|
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
|
||
|
0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
|
||
|
0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
|
||
|
0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x76,
|
||
|
0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
|
||
|
0x6c,0x6f,0x61,0x74,0x32,0x20,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x3b,
|
||
|
0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,
|
||
|
0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
|
||
|
0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,
|
||
|
0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
|
||
|
0x34,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,
|
||
|
0x6f,0x63,0x6e,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
|
||
|
0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,
|
||
|
0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,
|
||
|
0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,
|
||
|
0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,
|
||
|
0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,
|
||
|
0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
|
||
|
0x6f,0x61,0x74,0x32,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,0x5b,
|
||
|
0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,
|
||
|
0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32,
|
||
|
0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,
|
||
|
0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,
|
||
|
0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,
|
||
|
0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,
|
||
|
0x6e,0x74,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x32,
|
||
|
0x32,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,
|
||
|
0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,
|
||
|
0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,
|
||
|
0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,
|
||
|
0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,
|
||
|
0x69,0x74,0x69,0x6f,0x6e,0x20,0x2f,0x20,0x5f,0x32,0x32,0x2e,0x64,0x69,0x73,0x70,
|
||
|
0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,
|
||
|
0x30,0x2e,0x35,0x29,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x32,
|
||
|
0x2e,0x30,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,
|
||
|
0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,
|
||
|
0x20,0x3d,0x20,0x69,0x6e,0x2e,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,
|
||
|
0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,
|
||
|
0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,
|
||
|
0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
|
||
|
};
|
||
|
static const char _simgui_fs_source_metal_sim[436] = {
|
||
|
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
|
||
|
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
|
||
|
0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
|
||
|
0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
|
||
|
0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
|
||
|
0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
|
||
|
0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
|
||
|
0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,
|
||
|
0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
|
||
|
0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
|
||
|
0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,
|
||
|
0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x63,
|
||
|
0x6f,0x6c,0x6f,0x72,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,
|
||
|
0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,
|
||
|
0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,
|
||
|
0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,
|
||
|
0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,
|
||
|
0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,
|
||
|
0x78,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,
|
||
|
0x2c,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x6d,0x70,0x20,0x5b,0x5b,
|
||
|
0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,
|
||
|
0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,
|
||
|
0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,
|
||
|
0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,
|
||
|
0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,0x20,0x69,0x6e,0x2e,
|
||
|
0x75,0x76,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,
|
||
|
0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,
|
||
|
0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
#elif defined(SOKOL_D3D11)
|
||
|
static const uint8_t _simgui_vs_bytecode_hlsl4[892] = {
|
||
|
0x44,0x58,0x42,0x43,0x0d,0xbd,0x9e,0x9e,0x7d,0xc0,0x2b,0x54,0x88,0xf9,0xca,0x89,
|
||
|
0x32,0xe4,0x0c,0x59,0x01,0x00,0x00,0x00,0x7c,0x03,0x00,0x00,0x05,0x00,0x00,0x00,
|
||
|
0x34,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x60,0x01,0x00,0x00,0xd0,0x01,0x00,0x00,
|
||
|
0x00,0x03,0x00,0x00,0x52,0x44,0x45,0x46,0xc0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x48,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xfe,0xff,
|
||
|
0x10,0x81,0x00,0x00,0x98,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
|
||
|
0x73,0x00,0xab,0xab,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
|
||
|
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x88,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x5f,0x32,0x32,0x5f,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,
|
||
|
0x65,0x00,0xab,0xab,0x01,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,
|
||
|
0x29,0x20,0x48,0x4c,0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,
|
||
|
0x6d,0x70,0x69,0x6c,0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,
|
||
|
0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x50,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x50,0x00,0x00,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
|
||
|
0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x00,0xab,0xab,0xab,
|
||
|
0x4f,0x53,0x47,0x4e,0x68,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
|
||
|
0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x03,0x0c,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,
|
||
|
0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
|
||
|
0x00,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x00,0xab,0xab,0xab,
|
||
|
0x53,0x48,0x44,0x52,0x28,0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x4a,0x00,0x00,0x00,
|
||
|
0x59,0x00,0x00,0x04,0x46,0x8e,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x5f,0x00,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,
|
||
|
0x32,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x5f,0x00,0x00,0x03,0xf2,0x10,0x10,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x65,0x00,0x00,0x03,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x65,0x00,0x00,0x03,0xf2,0x20,0x10,0x00,0x01,0x00,0x00,0x00,0x67,0x00,0x00,0x04,
|
||
|
0xf2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x02,
|
||
|
0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0x32,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x46,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x36,0x00,0x00,0x05,0xf2,0x20,0x10,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x02,0x00,0x00,0x00,0x0e,0x00,0x00,0x08,
|
||
|
0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x46,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,
|
||
|
0x32,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x02,0x40,0x00,0x00,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0xbf,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0a,0x32,0x20,0x10,0x00,0x02,0x00,0x00,0x00,
|
||
|
0x46,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x40,
|
||
|
0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x08,
|
||
|
0xc2,0x20,0x10,0x00,0x02,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x80,0x3f,0x3e,0x00,0x00,0x01,
|
||
|
0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
};
|
||
|
static const uint8_t _simgui_fs_bytecode_hlsl4[608] = {
|
||
|
0x44,0x58,0x42,0x43,0x3a,0xa7,0x41,0x21,0xb4,0x2d,0xa7,0x6e,0xfe,0x31,0xb0,0xe0,
|
||
|
0x14,0xe0,0xdf,0x5a,0x01,0x00,0x00,0x00,0x60,0x02,0x00,0x00,0x05,0x00,0x00,0x00,
|
||
|
0x34,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x14,0x01,0x00,0x00,0x48,0x01,0x00,0x00,
|
||
|
0xe4,0x01,0x00,0x00,0x52,0x44,0x45,0x46,0x8c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x04,0xff,0xff,
|
||
|
0x10,0x81,0x00,0x00,0x64,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
|
||
|
0x05,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x73,0x6d,0x70,0x00,0x74,0x65,0x78,0x00,
|
||
|
0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x28,0x52,0x29,0x20,0x48,0x4c,
|
||
|
0x53,0x4c,0x20,0x53,0x68,0x61,0x64,0x65,0x72,0x20,0x43,0x6f,0x6d,0x70,0x69,0x6c,
|
||
|
0x65,0x72,0x20,0x31,0x30,0x2e,0x31,0x00,0x49,0x53,0x47,0x4e,0x44,0x00,0x00,0x00,
|
||
|
0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,
|
||
|
0x38,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x0f,0x0f,0x00,0x00,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
|
||
|
0x00,0xab,0xab,0xab,0x4f,0x53,0x47,0x4e,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x53,0x56,0x5f,0x54,
|
||
|
0x61,0x72,0x67,0x65,0x74,0x00,0xab,0xab,0x53,0x48,0x44,0x52,0x94,0x00,0x00,0x00,
|
||
|
0x40,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x5a,0x00,0x00,0x03,0x00,0x60,0x10,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x58,0x18,0x00,0x04,0x00,0x70,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x55,0x55,0x00,0x00,0x62,0x10,0x00,0x03,0x32,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x62,0x10,0x00,0x03,0xf2,0x10,0x10,0x00,0x01,0x00,0x00,0x00,0x65,0x00,0x00,0x03,
|
||
|
0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x02,0x01,0x00,0x00,0x00,
|
||
|
0x45,0x00,0x00,0x09,0xf2,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x10,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x46,0x7e,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x07,0xf2,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x46,0x0e,0x10,0x00,0x00,0x00,0x00,0x00,0x46,0x1e,0x10,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x3e,0x00,0x00,0x01,0x53,0x54,0x41,0x54,0x74,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||
|
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||
|
|
||
|
};
|
||
|
#elif defined(SOKOL_WGPU)
|
||
|
static const char _simgui_vs_source_wgsl[1083] = {
|
||
|
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
|
||
|
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
|
||
|
0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,
|
||
|
0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x7b,0x0a,0x20,0x20,0x2f,0x2a,
|
||
|
0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20,
|
||
|
0x20,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3a,0x20,0x76,0x65,0x63,
|
||
|
0x32,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,
|
||
|
0x74,0x65,0x3e,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x31,0x20,0x3a,
|
||
|
0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,
|
||
|
0x30,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x30,0x29,0x20,0x76,
|
||
|
0x61,0x72,0x3c,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,0x32,0x32,
|
||
|
0x20,0x3a,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x3b,0x0a,0x0a,0x76,
|
||
|
0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x20,0x3a,
|
||
|
0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
|
||
|
0x76,0x61,0x74,0x65,0x3e,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x20,
|
||
|
0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,
|
||
|
0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x76,
|
||
|
0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,
|
||
|
0x74,0x65,0x3e,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x20,0x3a,0x20,0x76,0x65,0x63,
|
||
|
0x34,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,
|
||
|
0x3e,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,
|
||
|
0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,
|
||
|
0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x31,0x39,
|
||
|
0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,
|
||
|
0x69,0x6f,0x6e,0x5f,0x31,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,
|
||
|
0x35,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x20,0x3d,0x20,0x78,0x5f,0x32,0x32,
|
||
|
0x2e,0x64,0x69,0x73,0x70,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x6c,0x65,
|
||
|
0x74,0x20,0x78,0x5f,0x33,0x33,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x20,0x3d,
|
||
|
0x20,0x28,0x28,0x28,0x78,0x5f,0x31,0x39,0x20,0x2f,0x20,0x78,0x5f,0x32,0x35,0x29,
|
||
|
0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x66,0x28,0x30,0x2e,0x35,0x66,0x2c,0x20,0x30,
|
||
|
0x2e,0x35,0x66,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x66,0x28,0x32,0x2e,
|
||
|
0x30,0x66,0x2c,0x20,0x2d,0x32,0x2e,0x30,0x66,0x29,0x29,0x3b,0x0a,0x20,0x20,0x67,
|
||
|
0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,
|
||
|
0x34,0x66,0x28,0x78,0x5f,0x33,0x33,0x2e,0x78,0x2c,0x20,0x78,0x5f,0x33,0x33,0x2e,
|
||
|
0x79,0x2c,0x20,0x30,0x2e,0x35,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,
|
||
|
0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x34,0x33,0x20,0x3a,0x20,0x76,0x65,0x63,
|
||
|
0x32,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x3b,0x0a,
|
||
|
0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x78,0x5f,0x34,0x33,0x3b,0x0a,0x20,0x20,0x6c,
|
||
|
0x65,0x74,0x20,0x78,0x5f,0x34,0x37,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x20,
|
||
|
0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x3b,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x20,0x3d,0x20,0x78,0x5f,0x34,0x37,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,
|
||
|
0x72,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,
|
||
|
0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x62,0x75,0x69,0x6c,
|
||
|
0x74,0x69,0x6e,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x0a,0x20,0x20,
|
||
|
0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65,
|
||
|
0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
|
||
|
0x28,0x30,0x29,0x0a,0x20,0x20,0x75,0x76,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,
|
||
|
0x32,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
|
||
|
0x31,0x29,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3a,0x20,0x76,
|
||
|
0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x76,0x65,0x72,0x74,0x65,0x78,
|
||
|
0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,
|
||
|
0x6f,0x6e,0x28,0x30,0x29,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x31,
|
||
|
0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x2c,0x20,
|
||
|
0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x31,0x29,0x20,0x74,0x65,0x78,
|
||
|
0x63,0x6f,0x6f,0x72,0x64,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,
|
||
|
0x65,0x63,0x32,0x66,0x2c,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
|
||
|
0x32,0x29,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,
|
||
|
0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,
|
||
|
0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
|
||
|
0x6e,0x5f,0x31,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5f,0x31,
|
||
|
0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,
|
||
|
0x72,0x64,0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x63,0x6f,0x6f,0x72,0x64,0x30,0x5f,
|
||
|
0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x20,
|
||
|
0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,
|
||
|
0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,
|
||
|
0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x67,0x6c,
|
||
|
0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x75,0x76,0x2c,0x20,0x63,
|
||
|
0x6f,0x6c,0x6f,0x72,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
static const char _simgui_fs_source_wgsl[630] = {
|
||
|
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
|
||
|
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
|
||
|
0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
|
||
|
0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
|
||
|
0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,
|
||
|
0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x33,0x32,
|
||
|
0x29,0x20,0x76,0x61,0x72,0x20,0x74,0x65,0x78,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,
|
||
|
0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x67,
|
||
|
0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,
|
||
|
0x28,0x34,0x38,0x29,0x20,0x76,0x61,0x72,0x20,0x73,0x6d,0x70,0x20,0x3a,0x20,0x73,
|
||
|
0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
|
||
|
0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
|
||
|
0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,
|
||
|
0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,
|
||
|
0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,0x20,
|
||
|
0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x33,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
|
||
|
0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,
|
||
|
0x34,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,
|
||
|
0x75,0x72,0x65,0x53,0x61,0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x2c,0x20,0x73,
|
||
|
0x6d,0x70,0x2c,0x20,0x78,0x5f,0x32,0x33,0x29,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,
|
||
|
0x20,0x78,0x5f,0x32,0x37,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x20,0x3d,0x20,
|
||
|
0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,
|
||
|
0x6c,0x6f,0x72,0x20,0x3d,0x20,0x28,0x78,0x5f,0x32,0x34,0x20,0x2a,0x20,0x78,0x5f,
|
||
|
0x32,0x37,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x7d,
|
||
|
0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,
|
||
|
0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
|
||
|
0x30,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,
|
||
|
0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x66,
|
||
|
0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x28,
|
||
|
0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,0x20,0x75,0x76,0x5f,
|
||
|
0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x2c,0x20,0x40,
|
||
|
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x31,0x29,0x20,0x63,0x6f,0x6c,0x6f,
|
||
|
0x72,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x29,
|
||
|
0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,
|
||
|
0x20,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,
|
||
|
0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x5f,
|
||
|
0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,
|
||
|
0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,
|
||
|
0x5f,0x6f,0x75,0x74,0x28,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,
|
||
|
0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||
|
};
|
||
|
#elif defined(SOKOL_DUMMY_BACKEND)
|
||
|
static const char* _simgui_vs_source_dummy = "";
|
||
|
static const char* _simgui_fs_source_dummy = "";
|
||
|
#else
|
||
|
#error "Please define one of SOKOL_GLCORE33, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU or SOKOL_DUMMY_BACKEND!"
|
||
|
#endif
|
||
|
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
static void _simgui_set_clipboard(void* user_data, const char* text) {
|
||
|
(void)user_data;
|
||
|
sapp_set_clipboard_string(text);
|
||
|
}
|
||
|
|
||
|
static const char* _simgui_get_clipboard(void* user_data) {
|
||
|
(void)user_data;
|
||
|
return sapp_get_clipboard_string();
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#if defined(__EMSCRIPTEN__) && !defined(SOKOL_DUMMY_BACKEND)
|
||
|
EM_JS(int, simgui_js_is_osx, (void), {
|
||
|
if (navigator.userAgent.includes('Macintosh')) {
|
||
|
return 1;
|
||
|
} else {
|
||
|
return 0;
|
||
|
}
|
||
|
});
|
||
|
#endif
|
||
|
|
||
|
// ██ ██████ ██████ ██████ ██ ███ ██ ██████
|
||
|
// ██ ██ ██ ██ ██ ██ ████ ██ ██
|
||
|
// ██ ██ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ███
|
||
|
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||
|
// ███████ ██████ ██████ ██████ ██ ██ ████ ██████
|
||
|
//
|
||
|
// >>logging
|
||
|
#if defined(SOKOL_DEBUG)
|
||
|
#define _SIMGUI_LOGITEM_XMACRO(item,msg) #item ": " msg,
|
||
|
static const char* _simgui_log_messages[] = {
|
||
|
_SIMGUI_LOG_ITEMS
|
||
|
};
|
||
|
#undef _SIMGUI_LOGITEM_XMACRO
|
||
|
#endif // SOKOL_DEBUG
|
||
|
|
||
|
#define _SIMGUI_PANIC(code) _simgui_log(SIMGUI_LOGITEM_ ##code, 0, 0, __LINE__)
|
||
|
#define _SIMGUI_ERROR(code) _simgui_log(SIMGUI_LOGITEM_ ##code, 1, 0, __LINE__)
|
||
|
#define _SIMGUI_WARN(code) _simgui_log(SIMGUI_LOGITEM_ ##code, 2, 0, __LINE__)
|
||
|
#define _SIMGUI_INFO(code) _simgui_log(SIMGUI_LOGITEM_ ##code, 3, 0, __LINE__)
|
||
|
#define _SIMGUI_LOGMSG(code,msg) _simgui_log(SIMGUI_LOGITEM_ ##code, 3, msg, __LINE__)
|
||
|
|
||
|
static void _simgui_log(simgui_log_item_t log_item, uint32_t log_level, const char* msg, uint32_t line_nr) {
|
||
|
if (_simgui.desc.logger.func) {
|
||
|
const char* filename = 0;
|
||
|
#if defined(SOKOL_DEBUG)
|
||
|
filename = __FILE__;
|
||
|
if (0 == msg) {
|
||
|
msg = _simgui_log_messages[log_item];
|
||
|
}
|
||
|
#endif
|
||
|
_simgui.desc.logger.func("simgui", log_level, log_item, msg, line_nr, filename, _simgui.desc.logger.user_data);
|
||
|
} else {
|
||
|
// for log level PANIC it would be 'undefined behaviour' to continue
|
||
|
if (log_level == 0) {
|
||
|
abort();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ███ ███ ███████ ███ ███ ██████ ██████ ██ ██
|
||
|
// ████ ████ ██ ████ ████ ██ ██ ██ ██ ██ ██
|
||
|
// ██ ████ ██ █████ ██ ████ ██ ██ ██ ██████ ████
|
||
|
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||
|
// ██ ██ ███████ ██ ██ ██████ ██ ██ ██
|
||
|
//
|
||
|
// >>memory
|
||
|
static void _simgui_clear(void* ptr, size_t size) {
|
||
|
SOKOL_ASSERT(ptr && (size > 0));
|
||
|
memset(ptr, 0, size);
|
||
|
}
|
||
|
|
||
|
static void* _simgui_malloc(size_t size) {
|
||
|
SOKOL_ASSERT(size > 0);
|
||
|
void* ptr;
|
||
|
if (_simgui.desc.allocator.alloc_fn) {
|
||
|
ptr = _simgui.desc.allocator.alloc_fn(size, _simgui.desc.allocator.user_data);
|
||
|
} else {
|
||
|
ptr = malloc(size);
|
||
|
}
|
||
|
if (0 == ptr) {
|
||
|
_SIMGUI_PANIC(MALLOC_FAILED);
|
||
|
}
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
static void* _simgui_malloc_clear(size_t size) {
|
||
|
void* ptr = _simgui_malloc(size);
|
||
|
_simgui_clear(ptr, size);
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
static void _simgui_free(void* ptr) {
|
||
|
if (_simgui.desc.allocator.free_fn) {
|
||
|
_simgui.desc.allocator.free_fn(ptr, _simgui.desc.allocator.user_data);
|
||
|
} else {
|
||
|
free(ptr);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ██████ ██████ ██████ ██
|
||
|
// ██ ██ ██ ██ ██ ██ ██
|
||
|
// ██████ ██ ██ ██ ██ ██
|
||
|
// ██ ██ ██ ██ ██ ██
|
||
|
// ██ ██████ ██████ ███████
|
||
|
//
|
||
|
// >>pool
|
||
|
static void _simgui_init_pool(_simgui_pool_t* pool, int num) {
|
||
|
SOKOL_ASSERT(pool && (num >= 1));
|
||
|
// slot 0 is reserved for the 'invalid id', so bump the pool size by 1
|
||
|
pool->size = num + 1;
|
||
|
pool->queue_top = 0;
|
||
|
// generation counters indexable by pool slot index, slot 0 is reserved
|
||
|
size_t gen_ctrs_size = sizeof(uint32_t) * (size_t)pool->size;
|
||
|
pool->gen_ctrs = (uint32_t*) _simgui_malloc_clear(gen_ctrs_size);
|
||
|
// it's not a bug to only reserve 'num' here
|
||
|
pool->free_queue = (int*) _simgui_malloc_clear(sizeof(int) * (size_t)num);
|
||
|
// never allocate the zero-th pool item since the invalid id is 0
|
||
|
for (int i = pool->size-1; i >= 1; i--) {
|
||
|
pool->free_queue[pool->queue_top++] = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static void _simgui_discard_pool(_simgui_pool_t* pool) {
|
||
|
SOKOL_ASSERT(pool);
|
||
|
SOKOL_ASSERT(pool->free_queue);
|
||
|
_simgui_free(pool->free_queue);
|
||
|
pool->free_queue = 0;
|
||
|
SOKOL_ASSERT(pool->gen_ctrs);
|
||
|
_simgui_free(pool->gen_ctrs);
|
||
|
pool->gen_ctrs = 0;
|
||
|
pool->size = 0;
|
||
|
pool->queue_top = 0;
|
||
|
}
|
||
|
|
||
|
static int _simgui_pool_alloc_index(_simgui_pool_t* pool) {
|
||
|
SOKOL_ASSERT(pool);
|
||
|
SOKOL_ASSERT(pool->free_queue);
|
||
|
if (pool->queue_top > 0) {
|
||
|
int slot_index = pool->free_queue[--pool->queue_top];
|
||
|
SOKOL_ASSERT((slot_index > 0) && (slot_index < pool->size));
|
||
|
return slot_index;
|
||
|
} else {
|
||
|
// pool exhausted
|
||
|
return _SIMGUI_INVALID_SLOT_INDEX;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static void _simgui_pool_free_index(_simgui_pool_t* pool, int slot_index) {
|
||
|
SOKOL_ASSERT((slot_index > _SIMGUI_INVALID_SLOT_INDEX) && (slot_index < pool->size));
|
||
|
SOKOL_ASSERT(pool);
|
||
|
SOKOL_ASSERT(pool->free_queue);
|
||
|
SOKOL_ASSERT(pool->queue_top < pool->size);
|
||
|
#ifdef SOKOL_DEBUG
|
||
|
// debug check against double-free
|
||
|
for (int i = 0; i < pool->queue_top; i++) {
|
||
|
SOKOL_ASSERT(pool->free_queue[i] != slot_index);
|
||
|
}
|
||
|
#endif
|
||
|
pool->free_queue[pool->queue_top++] = slot_index;
|
||
|
SOKOL_ASSERT(pool->queue_top <= (pool->size-1));
|
||
|
}
|
||
|
|
||
|
/* initialize a pool slot:
|
||
|
- bump the slot's generation counter
|
||
|
- create a resource id from the generation counter and slot index
|
||
|
- set the slot's id to this id
|
||
|
- set the slot's state to ALLOC
|
||
|
- return the handle id
|
||
|
*/
|
||
|
static uint32_t _simgui_slot_init(_simgui_pool_t* pool, _simgui_slot_t* slot, int slot_index) {
|
||
|
/* FIXME: add handling for an overflowing generation counter,
|
||
|
for now, just overflow (another option is to disable
|
||
|
the slot)
|
||
|
*/
|
||
|
SOKOL_ASSERT(pool && pool->gen_ctrs);
|
||
|
SOKOL_ASSERT((slot_index > _SIMGUI_INVALID_SLOT_INDEX) && (slot_index < pool->size));
|
||
|
SOKOL_ASSERT((slot->state == _SIMGUI_RESOURCESTATE_INITIAL) && (slot->id == SIMGUI_INVALID_ID));
|
||
|
uint32_t ctr = ++pool->gen_ctrs[slot_index];
|
||
|
slot->id = (ctr<<_SIMGUI_SLOT_SHIFT)|(slot_index & _SIMGUI_SLOT_MASK);
|
||
|
slot->state = _SIMGUI_RESOURCESTATE_ALLOC;
|
||
|
return slot->id;
|
||
|
}
|
||
|
|
||
|
// extract slot index from id
|
||
|
static int _simgui_slot_index(uint32_t id) {
|
||
|
int slot_index = (int) (id & _SIMGUI_SLOT_MASK);
|
||
|
SOKOL_ASSERT(_SIMGUI_INVALID_SLOT_INDEX != slot_index);
|
||
|
return slot_index;
|
||
|
}
|
||
|
|
||
|
static void _simgui_init_item_pool(_simgui_pool_t* pool, int pool_size, void** items_ptr, size_t item_size_bytes) {
|
||
|
// NOTE: the pools will have an additional item, since slot 0 is reserved
|
||
|
SOKOL_ASSERT(pool && (pool->size == 0));
|
||
|
SOKOL_ASSERT((pool_size > 0) && (pool_size < _SIMGUI_MAX_POOL_SIZE));
|
||
|
SOKOL_ASSERT(items_ptr && (*items_ptr == 0));
|
||
|
SOKOL_ASSERT(item_size_bytes > 0);
|
||
|
_simgui_init_pool(pool, pool_size);
|
||
|
const size_t pool_size_bytes = item_size_bytes * (size_t)pool->size;
|
||
|
*items_ptr = _simgui_malloc_clear(pool_size_bytes);
|
||
|
}
|
||
|
|
||
|
static void _simgui_discard_item_pool(_simgui_pool_t* pool, void** items_ptr) {
|
||
|
SOKOL_ASSERT(pool && (pool->size != 0));
|
||
|
SOKOL_ASSERT(items_ptr && (*items_ptr != 0));
|
||
|
_simgui_free(*items_ptr); *items_ptr = 0;
|
||
|
_simgui_discard_pool(pool);
|
||
|
}
|
||
|
|
||
|
static void _simgui_setup_image_pool(int pool_size) {
|
||
|
_simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
_simgui_init_item_pool(&p->pool, pool_size, (void**)&p->items, sizeof(_simgui_image_t));
|
||
|
}
|
||
|
|
||
|
static void _simgui_discard_image_pool(void) {
|
||
|
_simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
_simgui_discard_item_pool(&p->pool, (void**)&p->items);
|
||
|
}
|
||
|
|
||
|
static simgui_image_t _simgui_make_image_handle(uint32_t id) {
|
||
|
simgui_image_t handle = { id };
|
||
|
return handle;
|
||
|
}
|
||
|
|
||
|
static _simgui_image_t* _simgui_image_at(uint32_t id) {
|
||
|
SOKOL_ASSERT(SIMGUI_INVALID_ID != id);
|
||
|
const _simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
int slot_index = _simgui_slot_index(id);
|
||
|
SOKOL_ASSERT((slot_index > _SIMGUI_INVALID_SLOT_INDEX) && (slot_index < p->pool.size));
|
||
|
return &p->items[slot_index];
|
||
|
}
|
||
|
|
||
|
static _simgui_image_t* _simgui_lookup_image(uint32_t id) {
|
||
|
if (SIMGUI_INVALID_ID != id) {
|
||
|
_simgui_image_t* img = _simgui_image_at(id);
|
||
|
if (img->slot.id == id) {
|
||
|
return img;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static simgui_image_t _simgui_alloc_image(void) {
|
||
|
_simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
int slot_index = _simgui_pool_alloc_index(&p->pool);
|
||
|
if (_SIMGUI_INVALID_SLOT_INDEX != slot_index) {
|
||
|
uint32_t id = _simgui_slot_init(&p->pool, &p->items[slot_index].slot, slot_index);
|
||
|
return _simgui_make_image_handle(id);
|
||
|
} else {
|
||
|
// pool exhausted
|
||
|
return _simgui_make_image_handle(SIMGUI_INVALID_ID);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static _simgui_resource_state _simgui_init_image(_simgui_image_t* img, const simgui_image_desc_t* desc) {
|
||
|
SOKOL_ASSERT(img && (img->slot.state == _SIMGUI_RESOURCESTATE_ALLOC));
|
||
|
SOKOL_ASSERT(desc);
|
||
|
SOKOL_ASSERT(_simgui.def_pip.id != SIMGUI_INVALID_ID);
|
||
|
SOKOL_ASSERT(_simgui.pip_unfilterable.id != SIMGUI_INVALID_ID);
|
||
|
img->image = desc->image;
|
||
|
img->sampler = desc->sampler;
|
||
|
if (sg_query_pixelformat(sg_query_image_desc(desc->image).pixel_format).filter) {
|
||
|
img->pip = _simgui.def_pip;
|
||
|
} else {
|
||
|
img->pip = _simgui.pip_unfilterable;
|
||
|
}
|
||
|
return _SIMGUI_RESOURCESTATE_VALID;
|
||
|
}
|
||
|
|
||
|
static void _simgui_deinit_image(_simgui_image_t* img) {
|
||
|
SOKOL_ASSERT(img);
|
||
|
img->image.id = SIMGUI_INVALID_ID;
|
||
|
img->sampler.id = SIMGUI_INVALID_ID;
|
||
|
img->pip.id = SIMGUI_INVALID_ID;
|
||
|
}
|
||
|
|
||
|
static void _simgui_destroy_image(simgui_image_t img_id) {
|
||
|
_simgui_image_t* img = _simgui_lookup_image(img_id.id);
|
||
|
if (img) {
|
||
|
_simgui_deinit_image(img);
|
||
|
_simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
_simgui_clear(img, sizeof(_simgui_image_t));
|
||
|
_simgui_pool_free_index(&p->pool, _simgui_slot_index(img_id.id));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static void _simgui_destroy_all_images(void) {
|
||
|
_simgui_image_pool_t* p = &_simgui.image_pool;
|
||
|
for (int i = 0; i < p->pool.size; i++) {
|
||
|
_simgui_image_t* img = &p->items[i];
|
||
|
_simgui_destroy_image(_simgui_make_image_handle(img->slot.id));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static simgui_image_desc_t _simgui_image_desc_defaults(const simgui_image_desc_t* desc) {
|
||
|
SOKOL_ASSERT(desc);
|
||
|
simgui_image_desc_t res = *desc;
|
||
|
res.image.id = _simgui_def(res.image.id, _simgui.def_img.id);
|
||
|
res.sampler.id = _simgui_def(res.sampler.id, _simgui.def_smp.id);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
static bool _simgui_is_osx(void) {
|
||
|
#if defined(SOKOL_DUMMY_BACKEND)
|
||
|
return false;
|
||
|
#elif defined(__EMSCRIPTEN__)
|
||
|
return simgui_js_is_osx();
|
||
|
#elif defined(__APPLE__)
|
||
|
return true;
|
||
|
#else
|
||
|
return false;
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
static simgui_desc_t _simgui_desc_defaults(const simgui_desc_t* desc) {
|
||
|
SOKOL_ASSERT((desc->allocator.alloc_fn && desc->allocator.free_fn) || (!desc->allocator.alloc_fn && !desc->allocator.free_fn));
|
||
|
simgui_desc_t res = *desc;
|
||
|
res.max_vertices = _simgui_def(res.max_vertices, 65536);
|
||
|
res.image_pool_size = _simgui_def(res.image_pool_size, 256);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
// ██████ ██ ██ ██████ ██ ██ ██████
|
||
|
// ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||
|
// ██████ ██ ██ ██████ ██ ██ ██
|
||
|
// ██ ██ ██ ██ ██ ██ ██ ██
|
||
|
// ██ ██████ ██████ ███████ ██ ██████
|
||
|
//
|
||
|
// >>public
|
||
|
SOKOL_API_IMPL void simgui_setup(const simgui_desc_t* desc) {
|
||
|
SOKOL_ASSERT(desc);
|
||
|
_simgui_clear(&_simgui, sizeof(_simgui));
|
||
|
_simgui.init_cookie = _SIMGUI_INIT_COOKIE;
|
||
|
_simgui.desc = _simgui_desc_defaults(desc);
|
||
|
_simgui.cur_dpi_scale = 1.0f;
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
_simgui.is_osx = _simgui_is_osx();
|
||
|
#endif
|
||
|
// can keep color_format, depth_format and sample_count as is,
|
||
|
// since sokol_gfx.h will do its own default-value handling
|
||
|
|
||
|
// setup image pool
|
||
|
_simgui_setup_image_pool(_simgui.desc.image_pool_size);
|
||
|
|
||
|
// allocate an intermediate vertex- and index-buffer
|
||
|
SOKOL_ASSERT(_simgui.desc.max_vertices > 0);
|
||
|
_simgui.vertices.size = (size_t)_simgui.desc.max_vertices * sizeof(ImDrawVert);
|
||
|
_simgui.vertices.ptr = _simgui_malloc(_simgui.vertices.size);
|
||
|
_simgui.indices.size = (size_t)_simgui.desc.max_vertices * 3 * sizeof(ImDrawIdx);
|
||
|
_simgui.indices.ptr = _simgui_malloc(_simgui.indices.size);
|
||
|
|
||
|
// initialize Dear ImGui
|
||
|
#if defined(__cplusplus)
|
||
|
ImGui::CreateContext();
|
||
|
ImGui::StyleColorsDark();
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
if (!_simgui.desc.no_default_font) {
|
||
|
io->Fonts->AddFontDefault();
|
||
|
}
|
||
|
#else
|
||
|
igCreateContext(NULL);
|
||
|
igStyleColorsDark(igGetStyle());
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
if (!_simgui.desc.no_default_font) {
|
||
|
ImFontAtlas_AddFontDefault(io->Fonts, NULL);
|
||
|
}
|
||
|
#endif
|
||
|
io->IniFilename = _simgui.desc.ini_filename;
|
||
|
io->ConfigMacOSXBehaviors = _simgui_is_osx();
|
||
|
io->BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
if (!_simgui.desc.disable_set_mouse_cursor) {
|
||
|
io->BackendFlags |= ImGuiBackendFlags_HasMouseCursors;
|
||
|
}
|
||
|
io->SetClipboardTextFn = _simgui_set_clipboard;
|
||
|
io->GetClipboardTextFn = _simgui_get_clipboard;
|
||
|
#endif
|
||
|
io->ConfigWindowsResizeFromEdges = !_simgui.desc.disable_windows_resize_from_edges;
|
||
|
|
||
|
// create sokol-gfx resources
|
||
|
sg_push_debug_group("sokol-imgui");
|
||
|
|
||
|
// shader object for using the embedded shader source (or bytecode)
|
||
|
sg_shader_desc shd_desc;
|
||
|
_simgui_clear(&shd_desc, sizeof(shd_desc));
|
||
|
shd_desc.attrs[0].name = "position";
|
||
|
shd_desc.attrs[1].name = "texcoord0";
|
||
|
shd_desc.attrs[2].name = "color0";
|
||
|
shd_desc.attrs[0].sem_name = "TEXCOORD";
|
||
|
shd_desc.attrs[0].sem_index = 0;
|
||
|
shd_desc.attrs[1].sem_name = "TEXCOORD";
|
||
|
shd_desc.attrs[1].sem_index = 1;
|
||
|
shd_desc.attrs[2].sem_name = "TEXCOORD";
|
||
|
shd_desc.attrs[2].sem_index = 2;
|
||
|
sg_shader_uniform_block_desc* ub = &shd_desc.vs.uniform_blocks[0];
|
||
|
ub->size = sizeof(_simgui_vs_params_t);
|
||
|
ub->uniforms[0].name = "vs_params";
|
||
|
ub->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4;
|
||
|
ub->uniforms[0].array_count = 1;
|
||
|
shd_desc.fs.images[0].used = true;
|
||
|
shd_desc.fs.images[0].image_type = SG_IMAGETYPE_2D;
|
||
|
shd_desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
|
||
|
shd_desc.fs.samplers[0].used = true;
|
||
|
shd_desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
|
||
|
shd_desc.fs.image_sampler_pairs[0].used = true;
|
||
|
shd_desc.fs.image_sampler_pairs[0].image_slot = 0;
|
||
|
shd_desc.fs.image_sampler_pairs[0].sampler_slot = 0;
|
||
|
shd_desc.fs.image_sampler_pairs[0].glsl_name = "tex_smp";
|
||
|
shd_desc.label = "sokol-imgui-shader";
|
||
|
#if defined(SOKOL_GLCORE33)
|
||
|
shd_desc.vs.source = _simgui_vs_source_glsl330;
|
||
|
shd_desc.fs.source = _simgui_fs_source_glsl330;
|
||
|
#elif defined(SOKOL_GLES3)
|
||
|
shd_desc.vs.source = _simgui_vs_source_glsl300es;
|
||
|
shd_desc.fs.source = _simgui_fs_source_glsl300es;
|
||
|
#elif defined(SOKOL_METAL)
|
||
|
shd_desc.vs.entry = "main0";
|
||
|
shd_desc.fs.entry = "main0";
|
||
|
switch (sg_query_backend()) {
|
||
|
case SG_BACKEND_METAL_MACOS:
|
||
|
shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_metal_macos);
|
||
|
shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_metal_macos);
|
||
|
break;
|
||
|
case SG_BACKEND_METAL_IOS:
|
||
|
shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_metal_ios);
|
||
|
shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_metal_ios);
|
||
|
break;
|
||
|
default:
|
||
|
shd_desc.vs.source = _simgui_vs_source_metal_sim;
|
||
|
shd_desc.fs.source = _simgui_fs_source_metal_sim;
|
||
|
break;
|
||
|
}
|
||
|
#elif defined(SOKOL_D3D11)
|
||
|
shd_desc.vs.bytecode = SG_RANGE(_simgui_vs_bytecode_hlsl4);
|
||
|
shd_desc.fs.bytecode = SG_RANGE(_simgui_fs_bytecode_hlsl4);
|
||
|
#elif defined(SOKOL_WGPU)
|
||
|
shd_desc.vs.source = _simgui_vs_source_wgsl;
|
||
|
shd_desc.fs.source = _simgui_fs_source_wgsl;
|
||
|
#else
|
||
|
shd_desc.vs.source = _simgui_vs_source_dummy;
|
||
|
shd_desc.fs.source = _simgui_fs_source_dummy;
|
||
|
#endif
|
||
|
_simgui.def_shd = sg_make_shader(&shd_desc);
|
||
|
|
||
|
// pipeline object for imgui rendering
|
||
|
sg_pipeline_desc pip_desc;
|
||
|
_simgui_clear(&pip_desc, sizeof(pip_desc));
|
||
|
pip_desc.layout.buffers[0].stride = sizeof(ImDrawVert);
|
||
|
{
|
||
|
sg_vertex_attr_state* attr = &pip_desc.layout.attrs[0];
|
||
|
attr->offset = offsetof(ImDrawVert, pos);
|
||
|
attr->format = SG_VERTEXFORMAT_FLOAT2;
|
||
|
}
|
||
|
{
|
||
|
sg_vertex_attr_state* attr = &pip_desc.layout.attrs[1];
|
||
|
attr->offset = offsetof(ImDrawVert, uv);
|
||
|
attr->format = SG_VERTEXFORMAT_FLOAT2;
|
||
|
}
|
||
|
{
|
||
|
sg_vertex_attr_state* attr = &pip_desc.layout.attrs[2];
|
||
|
attr->offset = offsetof(ImDrawVert, col);
|
||
|
attr->format = SG_VERTEXFORMAT_UBYTE4N;
|
||
|
}
|
||
|
pip_desc.shader = _simgui.def_shd;
|
||
|
pip_desc.index_type = SG_INDEXTYPE_UINT16;
|
||
|
pip_desc.sample_count = _simgui.desc.sample_count;
|
||
|
pip_desc.depth.pixel_format = _simgui.desc.depth_format;
|
||
|
pip_desc.colors[0].pixel_format = _simgui.desc.color_format;
|
||
|
pip_desc.colors[0].write_mask = _simgui.desc.write_alpha_channel ? SG_COLORMASK_RGBA : SG_COLORMASK_RGB;
|
||
|
pip_desc.colors[0].blend.enabled = true;
|
||
|
pip_desc.colors[0].blend.src_factor_rgb = SG_BLENDFACTOR_SRC_ALPHA;
|
||
|
pip_desc.colors[0].blend.dst_factor_rgb = SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA;
|
||
|
if (_simgui.desc.write_alpha_channel) {
|
||
|
pip_desc.colors[0].blend.src_factor_alpha = SG_BLENDFACTOR_ONE;
|
||
|
pip_desc.colors[0].blend.dst_factor_alpha = SG_BLENDFACTOR_ONE;
|
||
|
}
|
||
|
pip_desc.label = "sokol-imgui-pipeline";
|
||
|
_simgui.def_pip = sg_make_pipeline(&pip_desc);
|
||
|
|
||
|
// create a unfilterable/nonfiltering variants of the shader and pipeline
|
||
|
shd_desc.fs.images[0].sample_type = SG_IMAGESAMPLETYPE_UNFILTERABLE_FLOAT;
|
||
|
shd_desc.fs.samplers[0].sampler_type = SG_SAMPLERTYPE_NONFILTERING;
|
||
|
shd_desc.label = "sokol-imgui-shader-unfilterable";
|
||
|
_simgui.shd_unfilterable = sg_make_shader(&shd_desc);
|
||
|
pip_desc.shader = _simgui.shd_unfilterable;
|
||
|
pip_desc.label = "sokol-imgui-pipeline-unfilterable";
|
||
|
_simgui.pip_unfilterable = sg_make_pipeline(&pip_desc);
|
||
|
|
||
|
// NOTE: since we're in C++ mode here we can't use C99 designated init
|
||
|
sg_buffer_desc vb_desc;
|
||
|
_simgui_clear(&vb_desc, sizeof(vb_desc));
|
||
|
vb_desc.usage = SG_USAGE_STREAM;
|
||
|
vb_desc.size = _simgui.vertices.size;
|
||
|
vb_desc.label = "sokol-imgui-vertices";
|
||
|
_simgui.vbuf = sg_make_buffer(&vb_desc);
|
||
|
|
||
|
sg_buffer_desc ib_desc;
|
||
|
_simgui_clear(&ib_desc, sizeof(ib_desc));
|
||
|
ib_desc.type = SG_BUFFERTYPE_INDEXBUFFER;
|
||
|
ib_desc.usage = SG_USAGE_STREAM;
|
||
|
ib_desc.size = _simgui.indices.size;
|
||
|
ib_desc.label = "sokol-imgui-indices";
|
||
|
_simgui.ibuf = sg_make_buffer(&ib_desc);
|
||
|
|
||
|
// a default user-image sampler
|
||
|
sg_sampler_desc def_sampler_desc;
|
||
|
_simgui_clear(&def_sampler_desc, sizeof(def_sampler_desc));
|
||
|
def_sampler_desc.min_filter = SG_FILTER_NEAREST;
|
||
|
def_sampler_desc.mag_filter = SG_FILTER_NEAREST;
|
||
|
def_sampler_desc.wrap_u = SG_WRAP_CLAMP_TO_EDGE;
|
||
|
def_sampler_desc.wrap_v = SG_WRAP_CLAMP_TO_EDGE;
|
||
|
def_sampler_desc.label = "sokol-imgui-default-sampler";
|
||
|
_simgui.def_smp = sg_make_sampler(&def_sampler_desc);
|
||
|
|
||
|
// a default user image
|
||
|
static uint32_t def_pixels[64];
|
||
|
memset(def_pixels, 0xFF, sizeof(def_pixels));
|
||
|
sg_image_desc def_image_desc;
|
||
|
_simgui_clear(&def_image_desc, sizeof(def_image_desc));
|
||
|
def_image_desc.width = 8;
|
||
|
def_image_desc.height = 8;
|
||
|
def_image_desc.pixel_format = SG_PIXELFORMAT_RGBA8;
|
||
|
def_image_desc.data.subimage[0][0].ptr = def_pixels;
|
||
|
def_image_desc.data.subimage[0][0].size = sizeof(def_pixels);
|
||
|
def_image_desc.label = "sokol-imgui-default-image";
|
||
|
_simgui.def_img = sg_make_image(&def_image_desc);
|
||
|
|
||
|
// default font texture
|
||
|
if (!_simgui.desc.no_default_font) {
|
||
|
simgui_font_tex_desc_t simgui_font_smp_desc;
|
||
|
_simgui_clear(&simgui_font_smp_desc, sizeof(simgui_font_smp_desc));
|
||
|
simgui_create_fonts_texture(&simgui_font_smp_desc);
|
||
|
}
|
||
|
|
||
|
sg_pop_debug_group();
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_create_fonts_texture(const simgui_font_tex_desc_t* desc) {
|
||
|
SOKOL_ASSERT(desc);
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#endif
|
||
|
|
||
|
// a default font sampler
|
||
|
sg_sampler_desc font_smp_desc;
|
||
|
_simgui_clear(&font_smp_desc, sizeof(font_smp_desc));
|
||
|
font_smp_desc.wrap_u = SG_WRAP_CLAMP_TO_EDGE;
|
||
|
font_smp_desc.wrap_v = SG_WRAP_CLAMP_TO_EDGE;
|
||
|
font_smp_desc.min_filter = desc->min_filter;
|
||
|
font_smp_desc.mag_filter = desc->mag_filter;
|
||
|
font_smp_desc.mipmap_filter = SG_FILTER_NONE;
|
||
|
font_smp_desc.label = "sokol-imgui-font-sampler";
|
||
|
_simgui.font_smp = sg_make_sampler(&font_smp_desc);
|
||
|
|
||
|
unsigned char* font_pixels;
|
||
|
int font_width, font_height;
|
||
|
#if defined(__cplusplus)
|
||
|
io->Fonts->GetTexDataAsRGBA32(&font_pixels, &font_width, &font_height);
|
||
|
#else
|
||
|
int bytes_per_pixel;
|
||
|
ImFontAtlas_GetTexDataAsRGBA32(io->Fonts, &font_pixels, &font_width, &font_height, &bytes_per_pixel);
|
||
|
#endif
|
||
|
sg_image_desc font_img_desc;
|
||
|
_simgui_clear(&font_img_desc, sizeof(font_img_desc));
|
||
|
font_img_desc.width = font_width;
|
||
|
font_img_desc.height = font_height;
|
||
|
font_img_desc.pixel_format = SG_PIXELFORMAT_RGBA8;
|
||
|
font_img_desc.data.subimage[0][0].ptr = font_pixels;
|
||
|
font_img_desc.data.subimage[0][0].size = (size_t)(font_width * font_height) * sizeof(uint32_t);
|
||
|
font_img_desc.label = "sokol-imgui-font-image";
|
||
|
_simgui.font_img = sg_make_image(&font_img_desc);
|
||
|
|
||
|
simgui_image_desc_t img_desc;
|
||
|
_simgui_clear(&img_desc, sizeof(img_desc));
|
||
|
img_desc.image = _simgui.font_img;
|
||
|
img_desc.sampler = _simgui.font_smp;
|
||
|
_simgui.default_font = simgui_make_image(&img_desc);
|
||
|
io->Fonts->TexID = simgui_imtextureid(_simgui.default_font);
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_destroy_fonts_texture(void) {
|
||
|
// NOTE: it's valid to call the destroy funcs with SG_INVALID_ID
|
||
|
sg_destroy_sampler(_simgui.font_smp);
|
||
|
sg_destroy_image(_simgui.font_img);
|
||
|
simgui_destroy_image(_simgui.default_font);
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_shutdown(void) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGui::DestroyContext();
|
||
|
#else
|
||
|
igDestroyContext(0);
|
||
|
#endif
|
||
|
// NOTE: it's valid to call the destroy funcs with SG_INVALID_ID
|
||
|
sg_destroy_pipeline(_simgui.pip_unfilterable);
|
||
|
sg_destroy_shader(_simgui.shd_unfilterable);
|
||
|
sg_destroy_pipeline(_simgui.def_pip);
|
||
|
sg_destroy_shader(_simgui.def_shd);
|
||
|
sg_destroy_sampler(_simgui.font_smp);
|
||
|
sg_destroy_image(_simgui.font_img);
|
||
|
sg_destroy_sampler(_simgui.def_smp);
|
||
|
sg_destroy_image(_simgui.def_img);
|
||
|
sg_destroy_buffer(_simgui.ibuf);
|
||
|
sg_destroy_buffer(_simgui.vbuf);
|
||
|
sg_pop_debug_group();
|
||
|
sg_push_debug_group("sokol-imgui");
|
||
|
_simgui_destroy_all_images();
|
||
|
_simgui_discard_image_pool();
|
||
|
SOKOL_ASSERT(_simgui.vertices.ptr);
|
||
|
_simgui_free((void*)_simgui.vertices.ptr);
|
||
|
SOKOL_ASSERT(_simgui.indices.ptr);
|
||
|
_simgui_free((void*)_simgui.indices.ptr);
|
||
|
_simgui.init_cookie = 0;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL simgui_image_t simgui_make_image(const simgui_image_desc_t* desc) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
SOKOL_ASSERT(desc);
|
||
|
const simgui_image_desc_t desc_def = _simgui_image_desc_defaults(desc);
|
||
|
simgui_image_t img_id = _simgui_alloc_image();
|
||
|
_simgui_image_t* img = _simgui_lookup_image(img_id.id);
|
||
|
if (img) {
|
||
|
img->slot.state = _simgui_init_image(img, &desc_def);
|
||
|
SOKOL_ASSERT((img->slot.state == _SIMGUI_RESOURCESTATE_VALID) || (img->slot.state == _SIMGUI_RESOURCESTATE_FAILED));
|
||
|
} else {
|
||
|
_SIMGUI_ERROR(IMAGE_POOL_EXHAUSTED);
|
||
|
}
|
||
|
return img_id;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_destroy_image(simgui_image_t img_id) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
_simgui_destroy_image(img_id);
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL simgui_image_desc_t simgui_query_image_desc(simgui_image_t img_id) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
_simgui_image_t* img = _simgui_lookup_image(img_id.id);
|
||
|
simgui_image_desc_t desc;
|
||
|
_simgui_clear(&desc, sizeof(desc));
|
||
|
if (img) {
|
||
|
desc.image = img->image;
|
||
|
desc.sampler = img->sampler;
|
||
|
}
|
||
|
return desc;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void* simgui_imtextureid(simgui_image_t img) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
return (void*)(uintptr_t)img.id;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL simgui_image_t simgui_image_from_imtextureid(void* imtextureid) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
simgui_image_t img = { (uint32_t)(uintptr_t) imtextureid };
|
||
|
return img;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_new_frame(const simgui_frame_desc_t* desc) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
SOKOL_ASSERT(desc);
|
||
|
SOKOL_ASSERT(desc->width > 0);
|
||
|
SOKOL_ASSERT(desc->height > 0);
|
||
|
_simgui.cur_dpi_scale = _simgui_def(desc->dpi_scale, 1.0f);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#endif
|
||
|
io->DisplaySize.x = ((float)desc->width) / _simgui.cur_dpi_scale;
|
||
|
io->DisplaySize.y = ((float)desc->height) / _simgui.cur_dpi_scale;
|
||
|
io->DeltaTime = (float)desc->delta_time;
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
if (io->WantTextInput && !sapp_keyboard_shown()) {
|
||
|
sapp_show_keyboard(true);
|
||
|
}
|
||
|
if (!io->WantTextInput && sapp_keyboard_shown()) {
|
||
|
sapp_show_keyboard(false);
|
||
|
}
|
||
|
if (!_simgui.desc.disable_set_mouse_cursor) {
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiMouseCursor imgui_cursor = ImGui::GetMouseCursor();
|
||
|
#else
|
||
|
ImGuiMouseCursor imgui_cursor = igGetMouseCursor();
|
||
|
#endif
|
||
|
sapp_mouse_cursor cursor = sapp_get_mouse_cursor();
|
||
|
switch (imgui_cursor) {
|
||
|
case ImGuiMouseCursor_Arrow: cursor = SAPP_MOUSECURSOR_ARROW; break;
|
||
|
case ImGuiMouseCursor_TextInput: cursor = SAPP_MOUSECURSOR_IBEAM; break;
|
||
|
case ImGuiMouseCursor_ResizeAll: cursor = SAPP_MOUSECURSOR_RESIZE_ALL; break;
|
||
|
case ImGuiMouseCursor_ResizeNS: cursor = SAPP_MOUSECURSOR_RESIZE_NS; break;
|
||
|
case ImGuiMouseCursor_ResizeEW: cursor = SAPP_MOUSECURSOR_RESIZE_EW; break;
|
||
|
case ImGuiMouseCursor_ResizeNESW: cursor = SAPP_MOUSECURSOR_RESIZE_NESW; break;
|
||
|
case ImGuiMouseCursor_ResizeNWSE: cursor = SAPP_MOUSECURSOR_RESIZE_NWSE; break;
|
||
|
case ImGuiMouseCursor_Hand: cursor = SAPP_MOUSECURSOR_POINTING_HAND; break;
|
||
|
case ImGuiMouseCursor_NotAllowed: cursor = SAPP_MOUSECURSOR_NOT_ALLOWED; break;
|
||
|
default: break;
|
||
|
}
|
||
|
sapp_set_mouse_cursor(cursor);
|
||
|
}
|
||
|
#endif
|
||
|
#if defined(__cplusplus)
|
||
|
ImGui::NewFrame();
|
||
|
#else
|
||
|
igNewFrame();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
static const _simgui_image_t* _simgui_bind_image_sampler(sg_bindings* bindings, ImTextureID tex_id) {
|
||
|
const _simgui_image_t* img = _simgui_lookup_image((uint32_t)(uintptr_t)tex_id);
|
||
|
if (img) {
|
||
|
bindings->fs.images[0] = img->image;
|
||
|
bindings->fs.samplers[0] = img->sampler;
|
||
|
} else {
|
||
|
bindings->fs.images[0] = _simgui.def_img;
|
||
|
bindings->fs.samplers[0] = _simgui.def_smp;
|
||
|
}
|
||
|
return img;
|
||
|
}
|
||
|
|
||
|
static ImDrawList* _simgui_imdrawlist_at(ImDrawData* draw_data, int cl_index) {
|
||
|
#if defined(__cplusplus)
|
||
|
return draw_data->CmdLists[cl_index];
|
||
|
#else
|
||
|
return draw_data->CmdLists.Data[cl_index];
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_render(void) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGui::Render();
|
||
|
ImDrawData* draw_data = ImGui::GetDrawData();
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#else
|
||
|
igRender();
|
||
|
ImDrawData* draw_data = igGetDrawData();
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#endif
|
||
|
if (0 == draw_data) {
|
||
|
return;
|
||
|
}
|
||
|
if (draw_data->CmdListsCount == 0) {
|
||
|
return;
|
||
|
}
|
||
|
/* copy vertices and indices into an intermediate buffer so that
|
||
|
they can be updated with a single sg_update_buffer() call each
|
||
|
(sg_append_buffer() has performance problems on some GL platforms),
|
||
|
also keep track of valid number of command lists in case of a
|
||
|
buffer overflow
|
||
|
*/
|
||
|
size_t all_vtx_size = 0;
|
||
|
size_t all_idx_size = 0;
|
||
|
int cmd_list_count = 0;
|
||
|
for (int cl_index = 0; cl_index < draw_data->CmdListsCount; cl_index++, cmd_list_count++) {
|
||
|
ImDrawList* cl = _simgui_imdrawlist_at(draw_data, cl_index);
|
||
|
const size_t vtx_size = (size_t)cl->VtxBuffer.Size * sizeof(ImDrawVert);
|
||
|
const size_t idx_size = (size_t)cl->IdxBuffer.Size * sizeof(ImDrawIdx);
|
||
|
|
||
|
// check for buffer overflow
|
||
|
if (((all_vtx_size + vtx_size) > _simgui.vertices.size) ||
|
||
|
((all_idx_size + idx_size) > _simgui.indices.size))
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
// copy vertices and indices into common buffers
|
||
|
if (vtx_size > 0) {
|
||
|
const ImDrawVert* src_vtx_ptr = cl->VtxBuffer.Data;
|
||
|
void* dst_vtx_ptr = (void*) (((uint8_t*)_simgui.vertices.ptr) + all_vtx_size);
|
||
|
memcpy(dst_vtx_ptr, src_vtx_ptr, vtx_size);
|
||
|
}
|
||
|
if (idx_size > 0) {
|
||
|
const ImDrawIdx* src_idx_ptr = cl->IdxBuffer.Data;
|
||
|
void* dst_idx_ptr = (void*) (((uint8_t*)_simgui.indices.ptr) + all_idx_size);
|
||
|
memcpy(dst_idx_ptr, src_idx_ptr, idx_size);
|
||
|
}
|
||
|
all_vtx_size += vtx_size;
|
||
|
all_idx_size += idx_size;
|
||
|
}
|
||
|
if (0 == cmd_list_count) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// update the sokol-gfx vertex- and index-buffer
|
||
|
sg_push_debug_group("sokol-imgui");
|
||
|
if (all_vtx_size > 0) {
|
||
|
sg_range vtx_data = _simgui.vertices;
|
||
|
vtx_data.size = all_vtx_size;
|
||
|
sg_update_buffer(_simgui.vbuf, &vtx_data);
|
||
|
}
|
||
|
if (all_idx_size > 0) {
|
||
|
sg_range idx_data = _simgui.indices;
|
||
|
idx_data.size = all_idx_size;
|
||
|
sg_update_buffer(_simgui.ibuf, &idx_data);
|
||
|
}
|
||
|
|
||
|
// render the ImGui command list
|
||
|
const float dpi_scale = _simgui.cur_dpi_scale;
|
||
|
const int fb_width = (int) (io->DisplaySize.x * dpi_scale);
|
||
|
const int fb_height = (int) (io->DisplaySize.y * dpi_scale);
|
||
|
sg_apply_viewport(0, 0, fb_width, fb_height, true);
|
||
|
sg_apply_scissor_rect(0, 0, fb_width, fb_height, true);
|
||
|
|
||
|
sg_apply_pipeline(_simgui.def_pip);
|
||
|
_simgui_vs_params_t vs_params;
|
||
|
_simgui_clear((void*)&vs_params, sizeof(vs_params));
|
||
|
vs_params.disp_size.x = io->DisplaySize.x;
|
||
|
vs_params.disp_size.y = io->DisplaySize.y;
|
||
|
sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, SG_RANGE_REF(vs_params));
|
||
|
sg_bindings bind;
|
||
|
_simgui_clear((void*)&bind, sizeof(bind));
|
||
|
bind.vertex_buffers[0] = _simgui.vbuf;
|
||
|
bind.index_buffer = _simgui.ibuf;
|
||
|
ImTextureID tex_id = io->Fonts->TexID;
|
||
|
_simgui_bind_image_sampler(&bind, tex_id);
|
||
|
int vb_offset = 0;
|
||
|
int ib_offset = 0;
|
||
|
for (int cl_index = 0; cl_index < cmd_list_count; cl_index++) {
|
||
|
ImDrawList* cl = _simgui_imdrawlist_at(draw_data, cl_index);
|
||
|
|
||
|
bind.vertex_buffer_offsets[0] = vb_offset;
|
||
|
bind.index_buffer_offset = ib_offset;
|
||
|
sg_apply_bindings(&bind);
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
const int num_cmds = cl->CmdBuffer.size();
|
||
|
#else
|
||
|
const int num_cmds = cl->CmdBuffer.Size;
|
||
|
#endif
|
||
|
uint32_t vtx_offset = 0;
|
||
|
for (int cmd_index = 0; cmd_index < num_cmds; cmd_index++) {
|
||
|
ImDrawCmd* pcmd = &cl->CmdBuffer.Data[cmd_index];
|
||
|
if (pcmd->UserCallback != 0) {
|
||
|
// User callback, registered via ImDrawList::AddCallback()
|
||
|
// (ImDrawCallback_ResetRenderState is a special callback value used by the user to request the renderer to reset render state.)
|
||
|
if (pcmd->UserCallback != ImDrawCallback_ResetRenderState) {
|
||
|
pcmd->UserCallback(cl, pcmd);
|
||
|
// need to re-apply all state after calling a user callback
|
||
|
sg_reset_state_cache();
|
||
|
sg_apply_viewport(0, 0, fb_width, fb_height, true);
|
||
|
sg_apply_pipeline(_simgui.def_pip);
|
||
|
sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, SG_RANGE_REF(vs_params));
|
||
|
sg_apply_bindings(&bind);
|
||
|
}
|
||
|
} else {
|
||
|
if ((tex_id != pcmd->TextureId) || (vtx_offset != pcmd->VtxOffset)) {
|
||
|
tex_id = pcmd->TextureId;
|
||
|
vtx_offset = pcmd->VtxOffset;
|
||
|
const _simgui_image_t* img = _simgui_bind_image_sampler(&bind, tex_id);
|
||
|
if (img) {
|
||
|
sg_apply_pipeline(img->pip);
|
||
|
} else {
|
||
|
sg_apply_pipeline(_simgui.def_pip);
|
||
|
}
|
||
|
sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, SG_RANGE_REF(vs_params));
|
||
|
bind.vertex_buffer_offsets[0] = vb_offset + (int)(pcmd->VtxOffset * sizeof(ImDrawVert));
|
||
|
sg_apply_bindings(&bind);
|
||
|
}
|
||
|
const int scissor_x = (int) (pcmd->ClipRect.x * dpi_scale);
|
||
|
const int scissor_y = (int) (pcmd->ClipRect.y * dpi_scale);
|
||
|
const int scissor_w = (int) ((pcmd->ClipRect.z - pcmd->ClipRect.x) * dpi_scale);
|
||
|
const int scissor_h = (int) ((pcmd->ClipRect.w - pcmd->ClipRect.y) * dpi_scale);
|
||
|
sg_apply_scissor_rect(scissor_x, scissor_y, scissor_w, scissor_h, true);
|
||
|
sg_draw((int)pcmd->IdxOffset, (int)pcmd->ElemCount, 1);
|
||
|
}
|
||
|
}
|
||
|
#if defined(__cplusplus)
|
||
|
const size_t vtx_size = (size_t)cl->VtxBuffer.size() * sizeof(ImDrawVert);
|
||
|
const size_t idx_size = (size_t)cl->IdxBuffer.size() * sizeof(ImDrawIdx);
|
||
|
#else
|
||
|
const size_t vtx_size = (size_t)cl->VtxBuffer.Size * sizeof(ImDrawVert);
|
||
|
const size_t idx_size = (size_t)cl->IdxBuffer.Size * sizeof(ImDrawIdx);
|
||
|
#endif
|
||
|
vb_offset += (int)vtx_size;
|
||
|
ib_offset += (int)idx_size;
|
||
|
}
|
||
|
sg_apply_viewport(0, 0, fb_width, fb_height, true);
|
||
|
sg_apply_scissor_rect(0, 0, fb_width, fb_height, true);
|
||
|
sg_pop_debug_group();
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_focus_event(bool focus) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
io->AddFocusEvent(focus);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
ImGuiIO_AddFocusEvent(io, focus);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_mouse_pos_event(float x, float y) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
io->AddMouseSourceEvent(ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
io->AddMousePosEvent(x, y);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
ImGuiIO_AddMouseSourceEvent(io, ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
ImGuiIO_AddMousePosEvent(io, x, y);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_touch_pos_event(float x, float y) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
io->AddMouseSourceEvent(ImGuiMouseSource_TouchScreen);
|
||
|
#endif
|
||
|
io->AddMousePosEvent(x, y);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
ImGuiIO_AddMouseSourceEvent(io, ImGuiMouseSource_TouchScreen);
|
||
|
#endif
|
||
|
ImGuiIO_AddMousePosEvent(io, x, y);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_mouse_button_event(int mouse_button, bool down) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
io->AddMouseSourceEvent(ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
io->AddMouseButtonEvent(mouse_button, down);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
ImGuiIO_AddMouseSourceEvent(io, ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
ImGuiIO_AddMouseButtonEvent(io, mouse_button, down);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_touch_button_event(int mouse_button, bool down) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
io->AddMouseSourceEvent(ImGuiMouseSource_TouchScreen);
|
||
|
#endif
|
||
|
io->AddMouseButtonEvent(mouse_button, down);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
ImGuiIO_AddMouseSourceEvent(io, ImGuiMouseSource_TouchScreen);
|
||
|
#endif
|
||
|
ImGuiIO_AddMouseButtonEvent(io, mouse_button, down);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_mouse_wheel_event(float wheel_x, float wheel_y) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
io->AddMouseSourceEvent(ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
io->AddMouseWheelEvent(wheel_x, wheel_y);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#if (IMGUI_VERSION_NUM >= 18950)
|
||
|
ImGuiIO_AddMouseSourceEvent(io, ImGuiMouseSource_Mouse);
|
||
|
#endif
|
||
|
ImGuiIO_AddMouseWheelEvent(io, wheel_x, wheel_y);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_key_event(int (*map_keycode)(int), int keycode, bool down) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
const ImGuiKey imgui_key = (ImGuiKey)map_keycode(keycode);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
io->AddKeyEvent(imgui_key, down);
|
||
|
io->SetKeyEventNativeData(imgui_key, keycode, 0, -1);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
ImGuiIO_AddKeyEvent(io, imgui_key, down);
|
||
|
ImGuiIO_SetKeyEventNativeData(io, imgui_key, keycode, 0, -1);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_input_character(uint32_t c) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
io->AddInputCharacter(c);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
ImGuiIO_AddInputCharacter(io, c);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL void simgui_add_input_characters_utf8(const char* c) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
io->AddInputCharactersUTF8(c);
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
ImGuiIO_AddInputCharactersUTF8(io, c);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
#if !defined(SOKOL_IMGUI_NO_SOKOL_APP)
|
||
|
_SOKOL_PRIVATE bool _simgui_is_ctrl(uint32_t modifiers) {
|
||
|
if (_simgui.is_osx) {
|
||
|
return 0 != (modifiers & SAPP_MODIFIER_SUPER);
|
||
|
} else {
|
||
|
return 0 != (modifiers & SAPP_MODIFIER_CTRL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_SOKOL_PRIVATE ImGuiKey _simgui_map_keycode(sapp_keycode key) {
|
||
|
switch (key) {
|
||
|
case SAPP_KEYCODE_SPACE: return ImGuiKey_Space;
|
||
|
case SAPP_KEYCODE_APOSTROPHE: return ImGuiKey_Apostrophe;
|
||
|
case SAPP_KEYCODE_COMMA: return ImGuiKey_Comma;
|
||
|
case SAPP_KEYCODE_MINUS: return ImGuiKey_Minus;
|
||
|
case SAPP_KEYCODE_PERIOD: return ImGuiKey_Apostrophe;
|
||
|
case SAPP_KEYCODE_SLASH: return ImGuiKey_Slash;
|
||
|
case SAPP_KEYCODE_0: return ImGuiKey_0;
|
||
|
case SAPP_KEYCODE_1: return ImGuiKey_1;
|
||
|
case SAPP_KEYCODE_2: return ImGuiKey_2;
|
||
|
case SAPP_KEYCODE_3: return ImGuiKey_3;
|
||
|
case SAPP_KEYCODE_4: return ImGuiKey_4;
|
||
|
case SAPP_KEYCODE_5: return ImGuiKey_5;
|
||
|
case SAPP_KEYCODE_6: return ImGuiKey_6;
|
||
|
case SAPP_KEYCODE_7: return ImGuiKey_7;
|
||
|
case SAPP_KEYCODE_8: return ImGuiKey_8;
|
||
|
case SAPP_KEYCODE_9: return ImGuiKey_9;
|
||
|
case SAPP_KEYCODE_SEMICOLON: return ImGuiKey_Semicolon;
|
||
|
case SAPP_KEYCODE_EQUAL: return ImGuiKey_Equal;
|
||
|
case SAPP_KEYCODE_A: return ImGuiKey_A;
|
||
|
case SAPP_KEYCODE_B: return ImGuiKey_B;
|
||
|
case SAPP_KEYCODE_C: return ImGuiKey_C;
|
||
|
case SAPP_KEYCODE_D: return ImGuiKey_D;
|
||
|
case SAPP_KEYCODE_E: return ImGuiKey_E;
|
||
|
case SAPP_KEYCODE_F: return ImGuiKey_F;
|
||
|
case SAPP_KEYCODE_G: return ImGuiKey_G;
|
||
|
case SAPP_KEYCODE_H: return ImGuiKey_H;
|
||
|
case SAPP_KEYCODE_I: return ImGuiKey_I;
|
||
|
case SAPP_KEYCODE_J: return ImGuiKey_J;
|
||
|
case SAPP_KEYCODE_K: return ImGuiKey_K;
|
||
|
case SAPP_KEYCODE_L: return ImGuiKey_L;
|
||
|
case SAPP_KEYCODE_M: return ImGuiKey_M;
|
||
|
case SAPP_KEYCODE_N: return ImGuiKey_N;
|
||
|
case SAPP_KEYCODE_O: return ImGuiKey_O;
|
||
|
case SAPP_KEYCODE_P: return ImGuiKey_P;
|
||
|
case SAPP_KEYCODE_Q: return ImGuiKey_Q;
|
||
|
case SAPP_KEYCODE_R: return ImGuiKey_R;
|
||
|
case SAPP_KEYCODE_S: return ImGuiKey_S;
|
||
|
case SAPP_KEYCODE_T: return ImGuiKey_T;
|
||
|
case SAPP_KEYCODE_U: return ImGuiKey_U;
|
||
|
case SAPP_KEYCODE_V: return ImGuiKey_V;
|
||
|
case SAPP_KEYCODE_W: return ImGuiKey_W;
|
||
|
case SAPP_KEYCODE_X: return ImGuiKey_X;
|
||
|
case SAPP_KEYCODE_Y: return ImGuiKey_Y;
|
||
|
case SAPP_KEYCODE_Z: return ImGuiKey_Z;
|
||
|
case SAPP_KEYCODE_LEFT_BRACKET: return ImGuiKey_LeftBracket;
|
||
|
case SAPP_KEYCODE_BACKSLASH: return ImGuiKey_Backslash;
|
||
|
case SAPP_KEYCODE_RIGHT_BRACKET:return ImGuiKey_RightBracket;
|
||
|
case SAPP_KEYCODE_GRAVE_ACCENT: return ImGuiKey_GraveAccent;
|
||
|
case SAPP_KEYCODE_ESCAPE: return ImGuiKey_Escape;
|
||
|
case SAPP_KEYCODE_ENTER: return ImGuiKey_Enter;
|
||
|
case SAPP_KEYCODE_TAB: return ImGuiKey_Tab;
|
||
|
case SAPP_KEYCODE_BACKSPACE: return ImGuiKey_Backspace;
|
||
|
case SAPP_KEYCODE_INSERT: return ImGuiKey_Insert;
|
||
|
case SAPP_KEYCODE_DELETE: return ImGuiKey_Delete;
|
||
|
case SAPP_KEYCODE_RIGHT: return ImGuiKey_RightArrow;
|
||
|
case SAPP_KEYCODE_LEFT: return ImGuiKey_LeftArrow;
|
||
|
case SAPP_KEYCODE_DOWN: return ImGuiKey_DownArrow;
|
||
|
case SAPP_KEYCODE_UP: return ImGuiKey_UpArrow;
|
||
|
case SAPP_KEYCODE_PAGE_UP: return ImGuiKey_PageUp;
|
||
|
case SAPP_KEYCODE_PAGE_DOWN: return ImGuiKey_PageDown;
|
||
|
case SAPP_KEYCODE_HOME: return ImGuiKey_Home;
|
||
|
case SAPP_KEYCODE_END: return ImGuiKey_End;
|
||
|
case SAPP_KEYCODE_CAPS_LOCK: return ImGuiKey_CapsLock;
|
||
|
case SAPP_KEYCODE_SCROLL_LOCK: return ImGuiKey_ScrollLock;
|
||
|
case SAPP_KEYCODE_NUM_LOCK: return ImGuiKey_NumLock;
|
||
|
case SAPP_KEYCODE_PRINT_SCREEN: return ImGuiKey_PrintScreen;
|
||
|
case SAPP_KEYCODE_PAUSE: return ImGuiKey_Pause;
|
||
|
case SAPP_KEYCODE_F1: return ImGuiKey_F1;
|
||
|
case SAPP_KEYCODE_F2: return ImGuiKey_F2;
|
||
|
case SAPP_KEYCODE_F3: return ImGuiKey_F3;
|
||
|
case SAPP_KEYCODE_F4: return ImGuiKey_F4;
|
||
|
case SAPP_KEYCODE_F5: return ImGuiKey_F5;
|
||
|
case SAPP_KEYCODE_F6: return ImGuiKey_F6;
|
||
|
case SAPP_KEYCODE_F7: return ImGuiKey_F7;
|
||
|
case SAPP_KEYCODE_F8: return ImGuiKey_F8;
|
||
|
case SAPP_KEYCODE_F9: return ImGuiKey_F9;
|
||
|
case SAPP_KEYCODE_F10: return ImGuiKey_F10;
|
||
|
case SAPP_KEYCODE_F11: return ImGuiKey_F11;
|
||
|
case SAPP_KEYCODE_F12: return ImGuiKey_F12;
|
||
|
case SAPP_KEYCODE_KP_0: return ImGuiKey_Keypad0;
|
||
|
case SAPP_KEYCODE_KP_1: return ImGuiKey_Keypad1;
|
||
|
case SAPP_KEYCODE_KP_2: return ImGuiKey_Keypad2;
|
||
|
case SAPP_KEYCODE_KP_3: return ImGuiKey_Keypad3;
|
||
|
case SAPP_KEYCODE_KP_4: return ImGuiKey_Keypad4;
|
||
|
case SAPP_KEYCODE_KP_5: return ImGuiKey_Keypad5;
|
||
|
case SAPP_KEYCODE_KP_6: return ImGuiKey_Keypad6;
|
||
|
case SAPP_KEYCODE_KP_7: return ImGuiKey_Keypad7;
|
||
|
case SAPP_KEYCODE_KP_8: return ImGuiKey_Keypad8;
|
||
|
case SAPP_KEYCODE_KP_9: return ImGuiKey_Keypad9;
|
||
|
case SAPP_KEYCODE_KP_DECIMAL: return ImGuiKey_KeypadDecimal;
|
||
|
case SAPP_KEYCODE_KP_DIVIDE: return ImGuiKey_KeypadDivide;
|
||
|
case SAPP_KEYCODE_KP_MULTIPLY: return ImGuiKey_KeypadMultiply;
|
||
|
case SAPP_KEYCODE_KP_SUBTRACT: return ImGuiKey_KeypadSubtract;
|
||
|
case SAPP_KEYCODE_KP_ADD: return ImGuiKey_KeypadAdd;
|
||
|
case SAPP_KEYCODE_KP_ENTER: return ImGuiKey_KeypadEnter;
|
||
|
case SAPP_KEYCODE_KP_EQUAL: return ImGuiKey_KeypadEqual;
|
||
|
case SAPP_KEYCODE_LEFT_SHIFT: return ImGuiKey_LeftShift;
|
||
|
case SAPP_KEYCODE_LEFT_CONTROL: return ImGuiKey_LeftCtrl;
|
||
|
case SAPP_KEYCODE_LEFT_ALT: return ImGuiKey_LeftAlt;
|
||
|
case SAPP_KEYCODE_LEFT_SUPER: return ImGuiKey_LeftSuper;
|
||
|
case SAPP_KEYCODE_RIGHT_SHIFT: return ImGuiKey_RightShift;
|
||
|
case SAPP_KEYCODE_RIGHT_CONTROL:return ImGuiKey_RightCtrl;
|
||
|
case SAPP_KEYCODE_RIGHT_ALT: return ImGuiKey_RightAlt;
|
||
|
case SAPP_KEYCODE_RIGHT_SUPER: return ImGuiKey_RightSuper;
|
||
|
case SAPP_KEYCODE_MENU: return ImGuiKey_Menu;
|
||
|
default: return ImGuiKey_None;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_SOKOL_PRIVATE void _simgui_add_sapp_key_event(ImGuiIO* io, sapp_keycode sapp_key, bool down) {
|
||
|
const ImGuiKey imgui_key = _simgui_map_keycode(sapp_key);
|
||
|
#if defined(__cplusplus)
|
||
|
io->AddKeyEvent(imgui_key, down);
|
||
|
io->SetKeyEventNativeData(imgui_key, (int)sapp_key, 0, -1);
|
||
|
#else
|
||
|
ImGuiIO_AddKeyEvent(io, imgui_key, down);
|
||
|
ImGuiIO_SetKeyEventNativeData(io, imgui_key, (int)sapp_key, 0, -1);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
_SOKOL_PRIVATE void _simgui_add_imgui_key_event(ImGuiIO* io, ImGuiKey imgui_key, bool down) {
|
||
|
#if defined(__cplusplus)
|
||
|
io->AddKeyEvent(imgui_key, down);
|
||
|
#else
|
||
|
ImGuiIO_AddKeyEvent(io, imgui_key, down);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
_SOKOL_PRIVATE void _simgui_update_modifiers(ImGuiIO* io, uint32_t mods) {
|
||
|
_simgui_add_imgui_key_event(io, ImGuiMod_Ctrl, (mods & SAPP_MODIFIER_CTRL) != 0);
|
||
|
_simgui_add_imgui_key_event(io, ImGuiMod_Shift, (mods & SAPP_MODIFIER_SHIFT) != 0);
|
||
|
_simgui_add_imgui_key_event(io, ImGuiMod_Alt, (mods & SAPP_MODIFIER_ALT) != 0);
|
||
|
_simgui_add_imgui_key_event(io, ImGuiMod_Super, (mods & SAPP_MODIFIER_SUPER) != 0);
|
||
|
}
|
||
|
|
||
|
// returns Ctrl or Super, depending on platform
|
||
|
_SOKOL_PRIVATE ImGuiKey _simgui_copypaste_modifier(void) {
|
||
|
return _simgui.is_osx ? ImGuiMod_Super : ImGuiMod_Ctrl;
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL int simgui_map_keycode(sapp_keycode keycode) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
return (int)_simgui_map_keycode(keycode);
|
||
|
}
|
||
|
|
||
|
SOKOL_API_IMPL bool simgui_handle_event(const sapp_event* ev) {
|
||
|
SOKOL_ASSERT(_SIMGUI_INIT_COOKIE == _simgui.init_cookie);
|
||
|
const float dpi_scale = _simgui.cur_dpi_scale;
|
||
|
#if defined(__cplusplus)
|
||
|
ImGuiIO* io = &ImGui::GetIO();
|
||
|
#else
|
||
|
ImGuiIO* io = igGetIO();
|
||
|
#endif
|
||
|
switch (ev->type) {
|
||
|
case SAPP_EVENTTYPE_FOCUSED:
|
||
|
simgui_add_focus_event(true);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_UNFOCUSED:
|
||
|
simgui_add_focus_event(false);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_MOUSE_DOWN:
|
||
|
simgui_add_mouse_pos_event(ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
|
||
|
simgui_add_mouse_button_event((int)ev->mouse_button, true);
|
||
|
_simgui_update_modifiers(io, ev->modifiers);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_MOUSE_UP:
|
||
|
simgui_add_mouse_pos_event(ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
|
||
|
simgui_add_mouse_button_event((int)ev->mouse_button, false);
|
||
|
_simgui_update_modifiers(io, ev->modifiers);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_MOUSE_MOVE:
|
||
|
simgui_add_mouse_pos_event(ev->mouse_x / dpi_scale, ev->mouse_y / dpi_scale);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_MOUSE_ENTER:
|
||
|
case SAPP_EVENTTYPE_MOUSE_LEAVE:
|
||
|
// FIXME: since the sokol_app.h emscripten backend doesn't support
|
||
|
// mouse capture, mouse buttons must be released when the mouse leaves the
|
||
|
// browser window, so that they don't "stick" when released outside the window.
|
||
|
// A cleaner solution would be a new sokol_app.h function to query
|
||
|
// "platform behaviour flags".
|
||
|
#if defined(__EMSCRIPTEN__)
|
||
|
for (int i = 0; i < SAPP_MAX_MOUSEBUTTONS; i++) {
|
||
|
simgui_add_mouse_button_event(i, false);
|
||
|
}
|
||
|
#endif
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_MOUSE_SCROLL:
|
||
|
simgui_add_mouse_wheel_event(ev->scroll_x, ev->scroll_y);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_TOUCHES_BEGAN:
|
||
|
simgui_add_touch_pos_event(ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
|
||
|
simgui_add_touch_button_event(0, true);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_TOUCHES_MOVED:
|
||
|
simgui_add_touch_pos_event(ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_TOUCHES_ENDED:
|
||
|
simgui_add_touch_pos_event(ev->touches[0].pos_x / dpi_scale, ev->touches[0].pos_y / dpi_scale);
|
||
|
simgui_add_touch_button_event(0, false);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_TOUCHES_CANCELLED:
|
||
|
simgui_add_touch_button_event(0, false);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_KEY_DOWN:
|
||
|
_simgui_update_modifiers(io, ev->modifiers);
|
||
|
// intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED
|
||
|
if (!_simgui.desc.disable_paste_override) {
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
// on web platform, don't forward Ctrl-X, Ctrl-V to the browser
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) {
|
||
|
sapp_consume_event();
|
||
|
}
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) {
|
||
|
sapp_consume_event();
|
||
|
}
|
||
|
// it's ok to add ImGuiKey_None key events
|
||
|
_simgui_add_sapp_key_event(io, ev->key_code, true);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_KEY_UP:
|
||
|
_simgui_update_modifiers(io, ev->modifiers);
|
||
|
// intercept Ctrl-V, this is handled via EVENTTYPE_CLIPBOARD_PASTED
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_V)) {
|
||
|
break;
|
||
|
}
|
||
|
// on web platform, don't forward Ctrl-X, Ctrl-V to the browser
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_X)) {
|
||
|
sapp_consume_event();
|
||
|
}
|
||
|
if (_simgui_is_ctrl(ev->modifiers) && (ev->key_code == SAPP_KEYCODE_C)) {
|
||
|
sapp_consume_event();
|
||
|
}
|
||
|
// it's ok to add ImGuiKey_None key events
|
||
|
_simgui_add_sapp_key_event(io, ev->key_code, false);
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_CHAR:
|
||
|
/* on some platforms, special keys may be reported as
|
||
|
characters, which may confuse some ImGui widgets,
|
||
|
drop those, also don't forward characters if some
|
||
|
modifiers have been pressed
|
||
|
*/
|
||
|
_simgui_update_modifiers(io, ev->modifiers);
|
||
|
if ((ev->char_code >= 32) &&
|
||
|
(ev->char_code != 127) &&
|
||
|
(0 == (ev->modifiers & (SAPP_MODIFIER_ALT|SAPP_MODIFIER_CTRL|SAPP_MODIFIER_SUPER))))
|
||
|
{
|
||
|
simgui_add_input_character(ev->char_code);
|
||
|
}
|
||
|
break;
|
||
|
case SAPP_EVENTTYPE_CLIPBOARD_PASTED:
|
||
|
// simulate a Ctrl-V key down/up
|
||
|
if (!_simgui.desc.disable_paste_override) {
|
||
|
_simgui_add_imgui_key_event(io, _simgui_copypaste_modifier(), true);
|
||
|
_simgui_add_imgui_key_event(io, ImGuiKey_V, true);
|
||
|
_simgui_add_imgui_key_event(io, ImGuiKey_V, false);
|
||
|
_simgui_add_imgui_key_event(io, _simgui_copypaste_modifier(), false);
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
return io->WantCaptureKeyboard || io->WantCaptureMouse;
|
||
|
}
|
||
|
#endif // SOKOL_IMGUI_NO_SOKOL_APP
|
||
|
|
||
|
#endif // SOKOL_IMPL
|